如何在XEN中为dom0和一个domU使用相同的IP

时间:2014-02-01 15:56:39

标签: xen

我目前在debian wheezy dom0上有一个Xen。我有6个(公共)IP,我想设置6个VM(每个使用一个IP)。

为了保持对dom0的访问,我希望dom0 ssh绑定在一个IP端口上(比方说4444)。我真的不知道从哪里开始。有什么指针吗?

1 个答案:

答案 0 :(得分:2)

所以,我终于提出了一个解决方案,我将详细说明:

在这个例子中,我们有一个物理网络接口(eth0),3个IP和3个虚拟机:

  • a.a.a.a(将由dom0和一个名为VM_A的domU共享)
  • b.b.b.b(对于一个domU VM_B
  • b.b.b.c(对于一个domU VM_C

dom0 / etc / network / interface:

auto xenbr0 
iface xenbr0 inet static
    bridge_ports eth0
    address a.a.a.a
    netmask 255.255.255.0
    network a.a.a.0
    broadcast a.a.a.255
    gateway a.a.a.254

/etc/xen/xend-config.sx中使用的默认vif脚本为(vif-script vif-bridge)。这适用于VM_BVM_C,它们都有自己的IP。

对于VM_BVM_C(/etc/xen/VM_[BC].cfg)的配置脚本,我们将:

vif = [ 'ip=b.b.b.b,mac=XX:XX:XX:XX:XX:XX' ]

对于VM_A(/etc/xen/VM_A.cfg)的配置脚本,我们将:

vif = [ 'ip=192.168.0.1,script=vif-nat']

我们必须添加iptables规则才能使VM_A对Internet可见:

iptables -t nat -A POSTROUTING -s 192.168.0.1 -o xenbr0  -j MASQUERADE
# One rule for each port that need to be forwarded to `VM_A`
iptables -t nat -A PREROUTING -p tcp -d a.a.a.a --dport 22 -j DNAT --to 192.168.0.1:22
iptables -t nat -A PREROUTING -p tcp -d a.a.a.a --dport 80 -j DNAT --to 192.168.0.1:80

还需要启用数据包转发(/etc/sysctl.conf):

net.ipv4.ip_forward=1
net.ipv4.conf.eth0.proxy_arp=1