带有 3 个 NIC 的 Ubuntu 路由表

Yez*_*arl 5 networking router

我想将 Ubuntu 12.04 配置为路由器。这台 Ubuntu PC 有 3 个网卡

eth0:192.168.1.203 (LAN1)
eth1:172.16.30.21 (Internet)
eth2:10.216.1.107 (LAN2)
Run Code Online (Sandbox Code Playgroud)

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Indic Metric   Ref  Use Iface
0.0.0.0         172.16.30.1     0.0.0.0         UG    0        0    0   eth1
10.216.1.0      10.216.1.1      255.255.255.0   UG    0        0    0   eth2
10.216.1.0      0.0.0.0         255.255.255.0   U     1        0    0   eth2
169.254.0.0     0.0.0.0         255.255.0.0     U     1000     0    0   eth2
172.16.30.0     0.0.0.0         255.255.255.0   U     1        0    0   eth1
192.168.0.0     192.168.1.3     255.255.0.0     UG    0        0    0   eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     1        0    0   eth0
Run Code Online (Sandbox Code Playgroud)

如果我像这样配置另一台 Windows PC (PC1):

ip:192.168.1.29
mask:255.255.255.0
gw:192.168.1.203
Run Code Online (Sandbox Code Playgroud)

从这台 PC (PC1),我连接到 Internet,我可以 ping 这个范围内的所有 IP 192.168.0.0/16 和这个 IP 10.216.1.107.但我无法 ping 这个范围内的其他 IP 10.216.1.0/24 (我可以从 ubuntu pc ping 这个范围)。

我的问题是如何修改我的路由表以确保 PC1 和 10.216.1.0/24 范围内的所有 PC 之间的连接

Eri*_*lho 1

网络 10.216.1.0/24 中的计算机不知道到网络 192.168.1.0/24 的路由,这就是它们无法通信的原因。您必须在 router2 中设置静态路由,将 192.168.1.0/24 重定向到 10.216.1.107。

或者,您可以使用 iptables 伪装 eth2 IP 地址后面的 192.168.1.0/24 网络:

iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

离开 eth2 的软件包的源 IP 将更改为 10.216.1.107。