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

Linux 无法将数据包从一个接口路由到另一个接口,linux,networking,routing,Linux,Networking,Routing,我的系统有两个接口eth0,和eth1 eth0是192.168.0.250并连接到网关192.168.0.2 eth1通过开关连接到192.123.123.10 我正在尝试将数据包从192.123.123.10路由到网关192.168.0.2,这意味着我需要通过eth0接口将进入eth1接口的192.123.x数据包路由出去 我将ip\u forward文件设置为1。 我运行了以下命令: route add -net 192.123.0.0 netmask 255.255.255.0 de

我的系统有两个接口
eth0
,和
eth1

  • eth0
    192.168.0.250
    并连接到网关
    192.168.0.2
  • eth1
    通过开关连接到
    192.123.123.10
我正在尝试将数据包从
192.123.123.10
路由到网关
192.168.0.2
,这意味着我需要通过
eth0
接口将进入
eth1
接口的
192.123.x
数据包路由出去

我将
ip\u 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
谁能告诉我丢失了什么?
提前谢谢。

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

我相当肯定这可以通过使用iptables和端口转发规则来实现。这里有一些关于如何在接口之间转发数据包的详细信息。

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

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

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

iptables -t nat -A POSTROUTING -s 129.123.123.0/24 -j SNAT --to-source 192.168.0.250
这个职位更适合你