不能将数据包从一个接口路由到另一个接口

我有一个有2个接口eth0eth1

  • eth0192.168.0.250并连接到网关192.168.0.2
  • eth1通过192.123.123.10连接到192.123.123.10

我试图将数据包从192.123.123.10路由到网关192.168.0.2 ,这意味着我需要路由192.123.123.x数据包通过eth0接口进入eth1接口。

我将ip_forward文件设置为1 。 我运行这个命令:

 route add -net 192.123.0.0 netmask 255.255.255.0 dev eth0 route add default gw 192.168.0.2 

我可以ping从129.123.123.10192.168.0.250 ,但我不能ping通到192.168.0.2我认为数据包不被转发到eth0

我的路由表看起来像这样:

 gteway Genmask Flags Ref Iface 192.123.123.0 * 255.255.255.0 U eth1 192.168.0.0 * 255.255.255.0 U eth0 192.123.0.0 * 255.255.255.0 U eth0 default 192.168.0.2 0.0.0.0 UG eth0 

谁能告诉我什么是缺less的? 先谢谢你。

Solutions Collecting From Web of "不能将数据包从一个接口路由到另一个接口"

你错过了你的后退路线。 主机192.168.0.2看到来自192.123.123.10的数据包,但他不知道如何路由回复数据包,因为它没有返回路由。 你可以做两件事情:

1-在192.168.0.2机器上创建一个路由,以处理指向192.123.123.0/24的流量

使用以下命令在192.168.0.250主机上使用2-NAT:

 iptables -t nat -A POSTROUTING -s 129.123.123.0/24 -j SNAT --to-source 192.168.0.250 

这个系统不是你的路由表,你需要关心。 这是其他系统的路由表。 192.168.0.2对于路由到192.168.0.250的192.123.XX网络一无所知。 同样,192.123.XX上的主机需要将192.168.XX网络路由到192.123.123.10。

我相当肯定,这可以使用iptables和端口转发规则来实现。 有关更多信息, 请参阅http://www.revsys.com/writings/quicktips/nat.html关于如何在接口之间转发数据包。