我想在 Linux 中创建一个设置,其中两个主机(HostA 和 HostC)之间的流量将通过第三个主机(HostB)进行传输,该主机将充当 VM1 的网关。我有三台虚拟机:
- 带有 ens0 的 HostA:10.10.0.2/24
- HostB 的 ens0 为:10.10.0.3/24,ens1 为:192.168.0.1/24
- 带有 ens1 的 HostC:192.168.0.2/24
HostA路由表:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.10.0.1 0.0.0.0 UG 0 0 0 ens0
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens0
192.168.0.1 10.10.0.3 255.255.255.255 UGH 0 0 0 ens0
192.168.0.2 10.10.0.3 255.255.255.255 UGH 0 0 0 ens0
HostB 路由表(作为 HostA 的网关)
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.10.0.1 0.0.0.0 UG 0 0 0 ens0
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens1
HostC 的路由表:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.0.2 192.168.0.1 255.255.255.255 UGH 0 0 0 ens1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens1
不幸的是,当我尝试检查新的路由表时,我没有看到从 HostA 到 HostC 的流量。我在 B 的两个接口上都看到了来自 A 的流量,但在 C 上看不到。在 CI 上,只看到偶尔来自 GW(HostB)的 ARP 请求
我已经使用以下命令在所有机器上配置了 IP 转发:
sysctl -w net.ipv4.ip_forward=1
sudo service procps restart