Xen

如何在 XEN 中為 dom0 和一個 domU 使用相同的 IP

  • June 25, 2015

我目前在 debian wheezy dom0 上有一個 Xen。我有 6 個(公共)ip,我想設置 6 個虛擬機(每個使用一個 IP)。

為了保持對 dom0 的訪問,我希望 dom0 ssh 綁定到一個 IP 埠(比如說 4444)。我真的不知道從哪裡開始。任何指針?

所以,我終於想出了一個解決方案,我將詳細說明:

在此範例中,我們有一個物理網路介面 ( eth0)、3 個 IP 和 3 個 VM:

  • a.a.a.a(這將由 dom0 和一個 domU 共享VM_A
  • b.b.b.b(對於一個 domU VM_B
  • b.b.b.c(對於一個 domU VM_C

dom0 /etc/網路/介面:

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

使用的預設 vif 腳本/etc/xen/xend-config.sx將是(vif-script vif-bridge). 這是針對VM_BVM_C擁有自己的ip的。

對於VM_Band的配置腳本VM_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_AInternet 可見:

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

最後是/etc/network/interfacesof 的VM_A樣子:

# 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 a.a.a.a
 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

通過將 127 添加到給定地址來192.168.0.128選擇網關地址。vif_script

最後一件事是VM_A與其他虛擬機之間的通信(但是,不要問我為什麼……):

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

引用自:https://serverfault.com/questions/571505