linux双线路由智能分流依赖策略路由,通过源ip、目标网段或入接口等规则将流量导向不同路由表和出口;需自定义路由表、配置策略规则、补全直连路由并持久化设置。

Linux中实现双线路由智能分流,核心是打破单一路由表限制,用策略路由(Policy Routing)按需选择出口路径。不是靠“自动识别”或“AI判断”,而是通过明确规则——比如看源IP、目标网段、入接口甚至防火墙标记——把不同流量导向不同网卡和网关。
按源地址分流:最常用也最稳妥的方式
适用于服务器有多个固定IP、且希望不同业务走不同线路的场景。
- 编辑
/etc/iproute2/rt_tables,添加两个自定义表名:100 tab_a 101 tab_b
- 为每张表配置独立路由:
-
ip route add default via 192.168.1.1 dev eth0 table tab_a -
ip route add default via 10.0.2.1 dev eth1 table tab_b
-
- 添加策略规则,绑定源IP与路由表:
-
ip rule add from 192.168.1.100/32 table tab_a -
ip rule add from 10.0.2.100/32 table tab_b
这样,从192.168.1.100发出的包走tab_a表(即 eth0 出口),另一个同理。
-
按目标网段分流:适合内外网隔离或运营商优化
比如内网流量走 eth0,公网特定段(如联通地址)走 eth1:
-
ip rule add to 192.168.100.0/24 table tab_a -
ip rule add to 219.141.0.0/16 table tab_b - 对应路由表里要包含直连子网(如
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.100 table tab_a)
按入接口分流:网关/防火墙类设备常用
确保响应包从同一接口返回,避免不对称路由:
-
ip rule add to 0.0.0.0/0 iif eth0 table tab_a -
ip rule add to 0.0.0.0/0 iif eth1 table tab_b
配合rp_filter=2(宽松反向路径校验)可提升兼容性。
让配置持久化,重启不丢失
临时命令重启就失效,需写入网络服务启动脚本:
- RHEL/CentOS 系统:在
/etc/sysconfig/network-scripts/route-eth0中写:default via 192.168.1.1 dev eth0 table tab_a
- 同时在
/etc/sysconfig/network-scripts/rule-eth0中写:from 192.168.1.100/32 table tab_a
- 或统一写进
/etc/rc.d/rc.local(记得加chmod +x)
验证是否生效
- 查策略规则:
ip rule show - 查某张表内容:
ip route show table tab_a - 测试路径:
ip route get 8.8.8.8 from 192.168.1.100→ 应显示 via eth0 - 实际连通性:
ping -I 192.168.1.100 www.example.com
不复杂但容易忽略细节。关键不在“智能”,而在规则清晰、表不冲突、直连路由补全。











