我有一个networking10.20.1.0/24 ,configuration在一台机器上,供机器上的虚拟机使用。 该机器的物理接口上的IP是172.31.10.94/24 。 我将来自附加到VM 10.20.1.2/24 IP的互联网stream量通过默认路由172.31.10.94/24到Linux服务器172.31.10.2/24 。 linux服务器在这里被用作网关。 网关上有一个iproute 10.20.1.2/24 ,将所有去往10.20.1.2/24stream量转发到172.31.10.94/24 。
承载虚拟机的计算机上的ip路由:
default via 172.31.10.2 dev enp1s0f0 10.20.1.3 dev tap22-dr2 scope link 172.31.10.0/24 dev enp1s0f0 proto kernel scope link src 172.31.81.94 192.168.20.0/24 dev enp3s0f0 proto kernel scope link src 192.168.20.2 192.168.20.102 dev tapd29f98b1-44 scope link unreachable 192.168.121.0/24 proto bird
这是我在网关机器上的ip路由
default via 172.31.10.1 dev eth1 10.20.1.3 via 172.31.10.94 dev eth1 proto bird 172.31.10.0/24 dev eth1 proto kernel scope link src 172.31.10.2 192.168.20.102 via 172.31.10.94 dev eth1 proto bird 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.43
我试图把从10.20.1.0/24到172.31.10.1所有互联网stream量都172.31.10.1以便主机上的虚拟机可以获得外部连接。 任何帮助深表感谢?
PS:这是使用Project Calico在OpenStack中实现外部连接的简单实现。
这是一个简单的解决办法,但我不确定是否是最好的解决scheme。
# iptables -t nat -A POSTROUTING -o eth1 -s 10.20.1.0/24 -j MASQUERADE
请build议是否有更好的方法。