在网络之间设置Linux路由表

时间:2014-04-28 06:49:57

标签: linux routing

我有以下拓扑:

                     VM A                         VM C
                 192.168.56.102               192.168.57.102
                      |                            |
                      |                            |
          (eth0) 192.168.56.103 --[ VM B ] -- 192.168.57.101 (eth1)

我试图让B充当两个网络之间的路由器。在尝试将数据报从A发送到C时,我可以看到192.168.56.103端的数据包(使用tcpdump),但是我看不到192.168.57.1​​01端出站的数据包。

我已经验证数据报的目标地址是192.168.57.1​​02,B中的转发表如下所示:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.56.0    *               255.255.255.0   U     1      0        0 eth0
192.168.57.0    *               255.255.255.0   U     1      0        0 eth1

我也尝试过添加此转发规则:

route add -net 192.168.57.0 netmask 255.255.255.0 gw 192.168.57.102 dev eth1

产生此路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.56.0    *               255.255.255.0   U     1      0        0 eth0
192.168.57.0    C.local         255.255.255.0   UG    0      0        0 eth1
192.168.57.0    *               255.255.255.0   U     1      0        0 eth1

我非常确定这条规则是多余的,我不会用它获得更好的结果。

如果有帮助,这是来自B的ARP表:

C.local (192.168.57.102) at 08:00:27:12:6b:c9 [ether] PERM on eth1
A.local (192.168.56.102) at 08:00:27:0a:86:a2 [ether] PERM on eth0

我是否缺少可以连接这两个网络的步骤?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您通常需要在计算机上启用ipv4路由。

您可以通过发出以下命令来执行此操作:

sysctl -w net.ipv4.ip_forward=1

或者:

echo 1 > /proc/sys/net/ipv4/ip_forward