星期三, 十月 17, 2012

设置Xen网络让虚拟机通过NAT上网


在Debian6下安装Xen4,基本过程很顺利(参考相关debian文档xen文档),但是安装完成后设置nat网络让虚拟客户端上网费了不少神。据debian和xen的文档介绍,debian安装的xen虽然自带network-script用来设置各种类型的网络,但是这些脚本工作不是很好,所以建议用户采用debian的brctl工具手动设置bridge功能和nat,在此基础上设置虚拟机网络参数。
1. 设置主机bridge网络,将来虚拟机的网卡都连接到此网卡上(相当于插在一个交换机上)
#/etc/network/interfaces
#modify
auto lo xenbr0
#add
iface xenbr0 inet static
        bridge_ports none
        address 10.0.120.1
        broadcast 10.0.120.255
        netmask 255.255.255.0
配置文件中,auto lo xenbr0表示系统启动后设置的bridge网卡xenbr0自动启动,而不需要手动运行ifconfig xenbr0 up这样的命令。bridge_ports指定添加进bridge的系统现有的网卡(假如虚拟机有独立ip的话后面就不需要设置nat,这里添加本机网络端口,如:eth0)。其它参数根据需要设置。
2. 找到/etc/xen/xend-config.sxp,添加下面一句,可以实现虚拟机启动时网卡自动加入bridge网络
#/etc/xen/xend-config.sxp
(vif-script vif-bridge)
3. 添加iptables规则实现nat,网络地址和网络外部端口根据实际情况设定
#/etc/network/if-pre-up.d/xennat
#!/bin/sh
iptables -t nat -A POSTROUTING -s 10.0.120.0/24 -o eth0 -j MASQUERADE
iptables -I FORWARD -s 10.0.120.0/24 -j ACCEPT
iptables -I FORWARD -d 10.0.120.0/24 -j ACCEPT
同时打开内核forwarding,编辑/etc/sysctl.conf文件,加入或修改
net.ipv4.ip_forward=1
4. 为了简化虚拟机创建,可以把网络默认参数添加进xen-tools配置文件,修改/etc/xen-tools/xen-tools.conf
#/etc/xen-tools/xen-tools.conf
gateway    = 10.0.120.1
netmask    = 255.255.255.0
broadcast  = 10.0.120.255
nameserver=8.8.8.8
bridge = xenbr0
passwd = 1
arch=i386
vcpus=1
5. 虚拟机示例
debian虚拟机创建,使用xen-create-image命令
#debian domu
xen-create-image --hostname deb1 --ip 10.0.120.101 --pygrub
windows虚拟机类型为hvm(硬件虚拟机,需要cpu支持vt-x),需要手动创建配置文件
#windows hvm
#/etc/xen/xp1.cfg
kernel = '/usr/lib/xen-4.0/boot/hvmloader'
builder='hvm'
memory = 256
vcpus=1
name = "xp1"
#vif = ['bridge=xenbr0']
vif = [ 'ip=10.0.120.102,mac=00:16:3E:85:4A:60,bridge=xenbr0' ]
disk = ['file:/home/xen/domains/xp1/hd.img,hda,w','file:/home/xen/domains/xp1/xp.iso,hdc:cdrom,r']
acpi = 1
apic=1
device_model = '/usr/lib64/xen-4.0/bin/qemu-dm'  #lib for 32bit, lib64 for 64bit
boot="c"
sdl=0
serial='pty'
vnc=1
vnclisten=""
vncpasswd=""
usbdevice='tablet'    #needed, else mouse won't work right
需要注意的是Windows虚拟机必须使用USB鼠标(usbdevice='tablet'),否则鼠标光标工作不正常。配置文件指定的硬盘镜像hd.img使用命令dd生成
# 8G硬盘镜像
dd if=/dev/zero of=/home/xen/xp1/hd.img bs=1M seek=8192 count=0
启动虚拟机用xm create命令,虚拟机启动后,debian可以通过xm console deb1连接控制台;windows用vnc连接本地127.0.0.1可以连接到桌面。
#start vm
xm create /etc/xen/deb1.cfg
xm create /etc/xen/xp1.cfg
#us vncviewer on 127.0.0.1 for windows desktop

没有评论: