使用网关节点路由虚拟机的互联网流量

使用网关节点路由虚拟机的互联网流量

我在一台机器内配置了一个网络10.20.1.0/24,该网络将由该机器上的虚拟机使用。该机器的物理接口上的 IP 是172.31.10.94/24。我通过默认路由将互联网流量从连接到 的虚拟机的 IP 转发10.20.1.2/24172.31.10.94/24Linux 服务器172.31.10.2/24。Linux 服务器在这里用作网关。10.20.1.2/24网关上有一个 iproute ,用于将所有发往 的流量转发10.20.1.2/24172.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主机上的虚拟机可以获得外部连接。如有任何帮助,我将不胜感激? 在此处输入图片描述

PS:这是使用 Project Calico 在 OpenStack 中实现外部连接的简单实现。

答案1

这是一个简单的修复,但我不确定这是否是最好的解决方案。

# iptables -t nat -A POSTROUTING -o eth1 -s 10.20.1.0/24 -j MASQUERADE

如果有更好的方法,请提出建议。

相关内容