Xen
如何在 XEN 中為 dom0 和一個 domU 使用相同的 IP
我目前在 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
(對於一個 domUVM_B
)b.b.b.c
(對於一個 domUVM_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_B
並VM_C
擁有自己的ip的。對於
VM_B
and的配置腳本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_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
最後是
/etc/network/interfaces
of 的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