【发布时间】:2014-02-01 15:56:39
【问题描述】:
我目前在 debian wheezy dom0 上有一个 Xen。我有 6 个(公共)IP,我想设置 6 个虚拟机(每个虚拟机使用一个 IP)。
为了保持对 dom0 的访问,我希望 dom0 ssh 绑定到一个 IP 端口(比如说 4444)。我真的不知道从哪里开始。有什么指点吗?
【问题讨论】:
标签: xen
我目前在 debian wheezy dom0 上有一个 Xen。我有 6 个(公共)IP,我想设置 6 个虚拟机(每个虚拟机使用一个 IP)。
为了保持对 dom0 的访问,我希望 dom0 ssh 绑定到一个 IP 端口(比如说 4444)。我真的不知道从哪里开始。有什么指点吗?
【问题讨论】:
标签: xen
所以,我终于想出了一个解决方案,我将详细说明:
在这个例子中,我们有一个物理网络接口 (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
【讨论】: