为了做一段时间的项目测试,需要在一台服务器上安装3台虚拟机,因为ESXi的免费版本只能使用4个CPU核心,而XenServer又在拷贝文件到物理服务器上困难重重。所以选择了SUSE11.1 +Xen的方案。
考虑到不希望办公网络能直接访问到3台虚拟机,因此决定采用NAT方式组网。经过一番试验,遭遇各种的失败,最后终于成功。
有两种方案可选,一种是完全自己建立NAT方式,另外一种是利用Xen提供的Virtual Networking来建立NAT。
先说利用Xen提供的Virtual Networking的方式。
Xen安装好后,它默认提供了一个网络接口叫做virbr0, 另外一种接口叫做xenbr0-4(根据物理机的网卡数目来的,用于bridge方式组网,不是本文说明的组网方式,从略)。
在建立虚机的时候,选择网卡的时候,会让选择virbr0,还是物理网卡等等。也可以在Xen虚拟机管理窗口上新建Virtual Networking。它们的区别是,默认的virbr0提供的是DHCP方式,虚机可以获得的IP范围是192.168.122.2 到192.168.122.254。自己建立的Virtual Networking可以指定为静态IP方式。我在这里建立了新的Virtual Networking,接口名称被Xen设定为virbr1,自己可以指定一个描述名, 指定网关为192.168.1.1,IP范围从192.168.1.2到192.168.1.255。然后在新建虚机时就可以选择这个网络方式了。
建立虚拟机,选择网络时指定virbr1,安装虚拟机操作系统并且运行起来后,在虚拟机中设定IP为192.168.1.100,网关为192.168.1.1。这时,虚机和物理机之间实现了互通。但是虚机还不能和物理机所在的网络连通。
此时,需要修改物理机上的防火墙设置。作如下修改:
[plain] view plaincopyprint?<span>#修改虚拟机发出的网络请求的IP为物理机的IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 8.8.8.8
#允许端口转发
iptables -P FORWARD ACCEPT
还要修改物理机的网络配置,使之支持NAT方式:
echo "1">/proc/sys/net/ipv4/ip_forward</span>
#修改虚拟机发出的网络请求的IP为物理机的IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 8.8.8.8
#允许端口转发
iptables -P FORWARD ACCEPT
还要修改物理机的网络配置,使之支持NAT方式:
echo "1">/proc/sys/net/ipv4/ip_forward</span>
完成上述设置后,虚拟机就可以连通外网了。
如果不愿意用Xen提供的Virtual Networking来建立NAT,也可以完全白手起家建立NAT组网。
要注意的是如果采用这种方式建立NAT组网的话,也要在物理机上对防火墙作上述的修改。
看来,SUSE11.1上的Xen,对NAT方式组网的支持没有完全做好,还需要自己作相应的配置才能正常工作。另一方面,在Xen上使用NAT方式组网的情况可能也不多,网上还没有搜到有这方面的例子。要说也是,在这个项目之前,我做的各种虚拟机基本上都是采用Bridge方式组网的。