2012年11月4日星期日

Xen虚拟化的NAT和Bridge网络模式的共存

这是几个月前在下厨房做的一次改动。当时Xen虚拟化配置的是NAT模式,所有虚拟机均在一个局域网之中,和Dom0不在同一个网段之内。由于新增了一台物理机,我们就需要将新增的物理机和所有的虚拟机配置在同一个网络之内,这样就算以后再新增物理机也不会有任何麻烦。

我翻遍了Debian的wiki以及网上的所有帖子都没有找到如何在不重启Xend的情况下切换网络模式。Xen 4.x的网络部分相比3.x貌似有比较大的改动,官方文档已经不再推荐使用Xen自带的脚本配置网络,而是鼓励网管们根据自身的实际情况自行配置。Xen自带的脚本对于Bridge模式的配置还是很简单易懂的。我看了一下,相比3.x并没有什么变化。那么我们就自己来配置网桥吧。

我们的Dom0有四块网卡,公网IP在eth0上。那我们就把网桥和eth1关联起来。Dom0和新物理机都在192.168.0.x网段,所有虚拟机都在10.x.x.x网段。首先我们在Dom0上创建一个bridge:
sudo brctl addbr xenbr1

然后把eth1添加到xenbr1之中:
sudo brctl addif xenbr1 eth1

配置xenbr1的IP:
sudo ifconfig xenbr1 192.168.0.99/24

xenbr1就配好了,基本就是把Xen的脚本自己手动做一遍。然后就是配置所有虚拟机。为每台虚拟机都新增一块网卡,IP固定在Dom0的网段之内,也就是192.168.0.x。这包括在vm.cfg里面,把vif这一行注释掉:
#vif = [ 'ip=10.1.1.3,mac=00:16:3E:12:03:99' ]

然后改成:
vif = [ 'ip=10.1.1.3,mac=00:16:3E:12:03:99',
        'ip=192.168.0.3,mac=00:16:3E:12:03:9A,script=vif-bridge,bridge=xenbr1' ]


mac地址可以随便编,只要开头是00:16:3E,而且所有的虚拟机都不重复就行。虚拟机硬盘上的/etc/network/interfaces也要加入这块新的网卡:
auto eth1
iface eth1 inet static
 address 192.168.0.153
 gateway 192.168.0.1
 netmask 255.255.255.0


OK,大功告成。重启该虚拟机,它就会通过eth1和Dom0处于同一网段(192.168.0.x)上了。当然,如果你要完全去掉NAT,还是需要修改Dom0上Xen的网络配置并重启Xend才行。