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

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

为了保持对dom0的访问,我想dom0 ssh绑定在一个IP端口上(比如说4444)。 我不知道从哪里开始。 任何指针?

所以,我终于想出了一个解决scheme,我将细节:

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

  • aaaa (将由dom0和一个名为VM_A domU VM_A
  • bbbb (对于一个domU VM_B
  • bbbc (对于一个domU VM_C

dom0 / etc / network / interface:

 auto xenbr0 iface xenbr0 inet static bridge_ports eth0 address aaaa netmask 255.255.255.0 network aaa0 broadcast aaa255 gateway aaa254 

/etc/xen/xend-config.sx中使用的默认vif脚本将是(vif-script vif-bridge) 。 这是针对具有自己的IP的VM_BVM_C

对于VM_BVM_C (/ VM_B / VM_C [ VM_B VM_C )的configuration脚本,我们将有:

 vif = [ 'ip=bbbb,mac=XX:XX:XX:XX:XX:XX' ] 

对于VM_A的configuration脚本(/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 aaaa --dport 22 -j DNAT --to 192.168.0.1:22 iptables -t nat -A PREROUTING -p tcp -d aaaa --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 

最后这里是VM_A/etc/network/interfaces如何:

  # The loopback network interface auto lo iface lo inet loopback # 'Fake' loopback interfaces (was needed in my case for some applications) auto lo:1 iface lo:1 inet static address aaaa netmask 255.255.255.255 # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.1 gateway 192.168.0.128 netmask 255.255.255.0 

网关地址192.168.0.128vif_script通过将127添加到给定的地址来select。

VM_A和其他虚拟机之间的通信的最后一件事(不过,不要问我为什么…):

 echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables