我有一个 Linux 机器,有两个接口:一个用于数据,另一个用于管理。如果两个接口都在同一个网络上,我会为两个接口添加路由。
想象一下路由表是:
192.168.132.0 255.255.255.0 eth0
192.168.132.0 255.255.255.0 eth1 ( management interface)
问题是,即使与管理 IP()发起了连接eth1
,返回流量仍会打开eth0
。
如何确保连接上的返回流量使用与转发流量相同的接口?
答案1
理想情况下,两个接口都应该是不同 IP 子网的一部分,但如果您确信只需要这样走,那么您应该使用 Linux 分割访问路由。
首先,创建两个路由表 T1 和 T2,用于发送到或来自这些 NIC 的数据包,方法是添加以下行
252 T1
251 T2
到 /etc/iproute2/rt_tables。
接下来,通过这些表设置路由规则来路由传入和传出的数据包:
ip route add 10.105.16.0/24 dev eth0 src 10.105.16.100 table T1
ip route add default via 10.105.16.2 dev eth0 src 10.105.16.100 table T1
ip rule add from 10.105.16.100 table T1
ip route add 10.105.16.0/24 dev eth1 src 10.105.16.101 table T2
ip route add default via 10.105.16.2 dev eth1 src 10.105.16.101 table T2
ip rule add from 10.105.16.101 table T2