无法将数据包从一个接口路由到另一个接口

时间:2012-04-06 04:09:55

标签: linux networking routing

我的系统包含2个接口eth0eth1

  • eth0192.168.0.250并已连接到网关192.168.0.2
  • eth1通过swtich与192.123.123.10相关联。

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

我将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

我可以从129.123.123.10 ping到192.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

谁能告诉我缺少什么? 提前谢谢。

3 个答案:

答案 0 :(得分:5)

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

1-在192.168.0.2计算机上创建路由以处理指向192.123.123.0/24的流量

使用以下命令在192.168.0.250主机上进行NAT:

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

答案 1 :(得分:2)

您需要关注的不是此系统上的路由表。它是其他系统的路由表。 192.168.0.2对192.123.X.X网络路由到192.168.0.250一无所知。同样,192.123.X.X上的主机需要将192.168.X.X网络路由到192.123.123.10。

答案 2 :(得分:0)

我很确定这可以通过iptables和端口转发规则来实现。这里有一些关于如何在接口之间转发数据包的信息http://www.revsys.com/writings/quicktips/nat.html