比如我们有个eth0
,上面同时有192.0.2.2/25
(网关192.0.2.1
)和192.0.2.130/25
(网关192.0.2.129
)两个段。这时候就要用到SADR(source-address dependent routing),即查询路由表时同时匹配源地址和目标地址功能。Linux下,这个功能可以用策略路由实现。
首先我们创建一个新的路由表:
1 |
echo "500 table1" >> /etc/iproute2/rt_tables |
(不写名字也行,下面表名用数字替代即可)
然后配置策略路由:
1 2 3 4 5 6 7 8 9 |
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.0.2.2/25 gateway 192.0.2.1 up ip addr add 192.0.2.130/25 dev eth0 || true up ip route add 192.0.2.128/25 dev eth0 table table1 || true up ip route add default via 192.0.2.129 dev eth0 table table1 || true up ip rule add from 192.0.2.130/32 lookup table1 || true |
最后应用一下配置:
1 |
ifup -v --ignore-errors --force eth0 |
参考: