在Centos 5.1或更新的版本上使用xen

 Fri, 19 Dec 2008 10:57:26 +0800

之前在it邦幫忙試著回覆別人使用xen的網路問題,結果自己灌CentOS 5.1來測試,在使用xen時也發生了一樣的問題。結果其實很......無言,也看到不少人在xen的maillist上吐苦水。後來自己試著調整xen的設定並且利用brctl手動改bridge,才確定問題。

原來自從CentOS 5.1開始,他會內建兩個bridge,一個叫做xenbr0,一個叫做virbr0,dom0的peth0(實體網路卡)以及vif0.0都會綁在xenbr0,但是虛擬機除非指定使用xenbr0,否則他預設會綁在virbr0。

virbr0的作用類似NAT,他提供DHCP以及Gateway給內部的虛擬機器使用,虛擬機器透過他就可以自動抓到ip,也可以上網,但是從dom0以及實體網路上,都看不到虛擬機器。

由於xen的官方說明文件中完全沒提到virbr0,所以許多人大惑不解,說明文件也找不到,只能說:virbr0是什麼鬼阿?

其實要讓外部機器直接接觸到虛擬機器,只要在設定檔指定使用哪個bridge就可以了,例如:vif = [ 'bridge=xenbr0' ]。

用brctl show來看就清楚了,如果沒指定bridge的話:
xen test

如果指定使用xenbr0的話:
xen test

dom0的routing table長這樣:
xen test

最後提供幾個有用的連結(沒人提到virbr0):

新版CentOS的做法在只有一個網卡、網路環境沒有DHCP或是只有實體網路卡可以取得IP的狀況下,拿來測試xen可以減少一些架設dhcp跟route設定的功夫,問題是沒有跟大家講清楚阿?不熟悉bridge的話,不知道virbr0是啥鬼東西的。


2008-12-22 10:14補充

進一步測試,virbr0不是啥鬼東西,他是libvirtd產生的用來支援虛擬網路功能的。透過/etc/init.d/libvirtd start | stop操作,可以觀察出幾個現象:

  1. 他會增加一個橋接器,叫做virbr0
  2. 他會在routing table加上到達192.168.122.0的路徑,透過virbr0這個介面
  3. 他會在防火牆加上允許forward來源/目標是192.168.122.0/24的規則
  4. 他會在192.168.122.1上開啟dnsmasq服務,提供dns forward以及dhcp功能

其實看一下設定檔就真相大白(/etc/libvirt/qemu/networks/default.xml):

<network>
<name>default</name>
<uuid>4a9e22e9-abfb-4743-aa8b-a270f84b481e</uuid>
<bridge name="virbr0" />
<forward/>
<ip address="192.168.122.1" netmask="255.255.255.0">
<dhcp>
<range start="192.168.122.2" end="192.168.122.254" />
</dhcp>
</ip>
</network>