IT技术博客大学习 共学习 共进步

Xen 虚拟机的 NAT 网络配置

vpsee.com 2014-11-06 23:59:43 浏览 1,523 次

   我们使用 Xen 虚拟机的时候一般都是用桥接(bridging)的方式把虚拟机(domU)直接暴露在网络上,就像网络上单独的一台服务器一样,这种方式简单好用,不用在 dom0 做任何的端口转发也不用任何 iptable 规则。不过除了 bridging 以外,Xen 还支持 routing 和 NAT 的方式配置虚拟机网络。比如我们想在一台物理服务器上安装5个虚拟机,这5个虚拟机能彼此访问也可以访问外网,但是外网不能直接访问这5个虚拟机,或者我们只有一个公网 IP 地址,但是需要5个虚拟机都能上网,这时候就可以用到 Xen 的 NAT 模式。

   首先确认系统的网络配置干净,上面没有复杂的网络设置,也没有以前配置留下来的网络桥接,因为 Xen 自带的脚本 network-nat 不是那么聪明,无法在复杂一点的网络设置里面正确配置。

   修改 Xen 的配置文件,确认下面几项配置后重启 xend,必要的话重启系统:

# vi /etc/xen/xend-config.sxp
...
#(network-script network-bridge)
(network-script network-nat)
...
#(vif-script vif-bridge)
#(vif-script     vif-route)
(vif-script     vif-nat)
...

# /etc/init.d/xend restart
Stopping xend daemon:                                      [  OK  ]
Starting xend daemon:                                      [  OK  ]

   修改虚拟机 domU 的配置文件,加上或者修改 vif 这行配上对应的内部网 IP 地址,这个内部网 IP 是自己随意设定的:

# vi /etc/xen/domu01
...
vif = [ "ip=10.0.0.1" ]
...

   启动虚拟机后修改网络配置,如果虚拟机是 Ubuntu 的话,网络配置在 /etc/network/interfaces,修改后重启:

# vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.1
gateway 10.0.0.254
netmask 255.255.255.0

# reboot

   本来还需要在 dom0 设定内核转发的(echo 1 > /proc/sys/net/ipv4/ip_forward),还记得上面修改 xend-config.sxp 时碰到的脚本 network-nat 吗?是的,那个脚本已经帮我们设置好 NAT 转发了,我们不用再添足了,也不用自己设置 iptable 规则了~

# vi /etc/xen/scripts/network-nat
...
op_start() {
        echo 1 >/proc/sys/net/ipv4/ip_forward
        iptables -t nat -A POSTROUTING -o ${netdev} -j MASQUERADE
        [ "$dhcp" != 'no' ] && dhcp_start
}
...

建议继续学习

  1. NAT连通性测试工具以及Flash P2P中的NAT穿透原理 (阅读 5,585)
  2. 什么是NAT (阅读 4,925)
  3. JAVA虚拟机简介 (阅读 3,582)
  4. 设置 XEN 的多网卡(3网卡4网卡..)桥接 (阅读 3,422)
  5. xen虚拟化之hvm类型虚拟机安装使用 (阅读 3,002)
  6. xen虚拟机的迁移类型 (阅读 2,704)
  7. Erlang虚拟机基础设施dtrace探测点介绍和使用 (阅读 2,483)
  8. Java -- Hotspot虚拟机调优与GC垃圾回收策略 (阅读 2,382)
  9. VirtualBox 虚拟机镜像文件 UUID 已存在问题 (阅读 2,267)
  10. 在 Unity3D 的 Mono 虚拟机中嵌入 Lua 的一个方案 (阅读 2,104)