我想将 Ubuntu 12.04 配置为路由器。这台 Ubuntu PC 有 3 个网卡
eth0:192.168.1.203 (LAN1)
eth1:172.16.30.21 (Internet)
eth2:10.216.1.107 (LAN2)
和
$ 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
如果我像这样配置另一台 Windows PC(PC1):
ip:192.168.1.29
mask:255.255.255.0
gw:192.168.1.203
从这台电脑(PC1),我连接到互联网,我可以 ping 通这个范围 192.168.0.0/16 和这个 IP 10.216.1.107 中的所有 IP,但是我无法 ping 通这个范围 10.216.1.0/24 中的其他 IP(我可以从 ubuntu pc ping 通这个范围)。
我的问题是如何修改我的路由表以确保 PC1 与 10.216.1.0/24 范围内的所有 PC 之间的连接
答案1
网络 10.216.1.0/24 中的计算机不知道到网络 192.168.1.0/24 的路由,这就是它们无法通信的原因。您必须在 router2 中设置静态路由,将 192.168.1.0/24 重定向到 10.216.1.107。
或者,您可以使用 iptables 将 192.168.1.0/24 网络伪装在 eth2 IP 地址后面:
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
离开 eth2 的软件包的源 IP 将会变为 10.216.1.107。