在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的話:
最後提供幾個有用的連結(沒人提到virbr0):
- 鳥哥的:利用 Xen 設計虛擬機器,我主要參考這個來建立xen虛擬機器的。
- 上文也有提到的:XenNetworking,這篇講xen的網路架構講得蠻清楚的。
新版CentOS的做法在只有一個網卡、網路環境沒有DHCP或是只有實體網路卡可以取得IP的狀況下,拿來測試xen可以減少一些架設dhcp跟route設定的功夫,問題是沒有跟大家講清楚阿?不熟悉bridge的話,不知道virbr0是啥鬼東西的。
2008-12-22 10:14補充
進一步測試,virbr0不是啥鬼東西,他是libvirtd產生的用來支援虛擬網路功能的。透過/etc/init.d/libvirtd start | stop操作,可以觀察出幾個現象:
- 他會增加一個橋接器,叫做virbr0
- 他會在routing table加上到達192.168.122.0的路徑,透過virbr0這個介面
- 他會在防火牆加上允許forward來源/目標是192.168.122.0/24的規則
- 他會在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>