2路网卡路由

我有2个公共ips网卡。 我正在运行2个服务。 那么如何路由连接。

现在只有一个接口IP工作,虽然两者都可以从互联网上ping。

我的路由表是这样的atm:

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.31.128.1 0.0.0.0 UG 0 0 0 eth1 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.31.128.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 172.31.129.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 

那么,我要添加什么,以便它可以工作?

目前eth1的工作没有任何问题。

我假设Linux是因为接口名称和“iproute2”的标签。


这是行不通的,因为简单地指定默认路由将意味着所有传出的stream量都将通过该接口,即使是来自其他接口的请求的响应!

在你的情况下,你说你有公有IP,但是两个直接连接的接口是私有IP地址,所以我认为这意味着你有NAT。 无论何时你有NAT,都不能使用这种三angular路由,在这种情况下,进入和离开的数据包采取不同的path,因为数据包已经被NAT盒子改变了,并且需要以相同的方式改变出去的路上。 您的请求客户端最终收到来自它不期望的IP地址的数据包,并且不能识别该响应。

你需要做的是告诉操作系统,IP地址在172.31.128.0/24的接口上发往互联网的任何数据包都需要打到网关172.31.128.1,相应的172.31.129.0/24子网。

这可以这样做:

 ip route add 172.31.129.0/24 dev eth0 src 172.31.129.XXX table T1 ip route add default via 172.31.129.1 table T1 ip route add 172.31.128.0/24 dev eth1 src 172.31.128.XXX table T2 ip route add default via 172.31.128.1 table T2 ip rule add from 172.31.129.XXX table T1 ip rule add from 172.31.128.XXX table T2 

您将需要用这些本地子网上的服务器的IP地址replaceXXX。

这应该让你开始。 您将在Linux高级路由和stream量控制HOWTO的第4.2节中find关于此主题的更多信息。