如何configurationlinux路由通过他们收到的相同接口发送数据包?

我有以下的路由

10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.151 10.0.10.0/24 dev eth1 proto kernel scope link src 10.0.10.151 default via 10.0.1.1 dev eth0 

我有两个链接,一个通过局域网,并通过10.0.1.1出到互联网。 另一个是直接连接到eth1的ADSL路由器(10.0.10.1)。

如果我从外部连接到10.0.10.1的外部IP地址,我得到一个超时。 如果将默认路由更改为10.0.10.1,则可以从外部连接到10.0.10.1的外部IP地址。 因此,这看起来像一个路由问题(数据包来自10.0.10.1,但从10.0.1.1,缺省路由),但我不知道如何解决它。

我其实想要的默认路由为10.0.1.1,我只是想通过相同的接口回应请求的外部IP地址10.0.10.1。

您需要使用iproute2提供的高级路由表。 你设置了两个表,并将所有来自一个IP的stream量发送到一个特定的表,在这个表中你可以设置一个默认网关。 要设置全局默认路由,您只需通过度量标准select一个接口。

一个例子:

  • 将默认网关添加到表中:

IP路由添加默认通过10.0.1.1表101

IP路由添加默认通过10.0.10.1表102

  • 添加一个规则,即来自特定IP的每个stream量都发送到该表:

IP规则添加从10.0.1.151查找101

ip规则添加从10.0.10.151查找102

  • 添加网关首选的度量标准:

ip route add default 10.0.1.151 metric 1000

ip route add default 10.0.10.151 metric 2000

我希望这有助于让你开始:)