我目前在debian wheezy dom0上有一个Xen。我有6个(公共)IP,我想设置6个VM(每个使用一个IP)。
为了保持对dom0的访问,我希望dom0 ssh绑定在一个IP端口上(比方说4444)。我真的不知道从哪里开始。有什么指针吗?
答案 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_B
和VM_C
,它们都有自己的IP。
对于VM_B
和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