我有一些以桥接模式配置的 Xen 主机,其虚拟机使用公共或私有 IP:
主持人 #1
- dom0:3.3.3.71
- dom1:10.0.2.10
- dom2:3.3.3.85
- dom3:10.0.2.11
主持人 #2
- dom0:3.3.3.72
- dom1:3.3.3.86
- dom2:10.0.2.12
- dom3:10.0.2.13
主持人 #3
- dom0:3.3.3.73
- dom1:10.0.2.14
- dom2:10.0.2.15
- dom3:3.3.3.87
具有公共 IP(3.3.3.*)的虚拟机可以从 Internet 访问。具有私有 IP 的虚拟机可以从彼此内部访问,这是理想的行为。但是,它们无法访问 Internet,因为本地子网中没有 10.0.2.1 网关。我该如何解决这个问题?
一种解决方案是配置一台具有 10.0.2.1 接口的服务器作为 NAT。但是我不想有任何 SPOF,我希望每台主机都使用分配给 dom0 的公共 IP 地址进行自己的 NAT。
我相信这只是在 dom0 中配置 iptables 的问题。如果这是正确的,怎么做?
答案1
我找到了以下解决方案。我仍然愿意接受好的替代方案和提示。
在每个 Xen 主机上:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -m physdev --physdev-in vif5.0 -o eth0 \
-j SNAT --to-source 3.3.3.71
每个 domU 都有一个私有 IP (10.0.2.*):
route add -net 3.3.3.0 netmask 255.255.255.0 dev eth0
route add default gw 3.3.3.71
route del default gw 10.0.2.1
答案2
为什么您不将需要访问互联网的 DomU 连接到互联网桥?有什么原因吗?
如果您不想这样 - 将连接到互联网的 DomU 之一连接到“私有”网桥,然后在其上安装代理 (squid)。联系该代理...
我认为将 Dom0 连接到互联网不是一个好主意 - 但你有你的理由......