linux双网卡策略路由需绕过单一默认路由表限制,通过定义自定义路由表(如tab_eth0/tab_eth1)、为各表配置含直连网段和default路由的条目、添加按源ip或目标网段匹配的ip rule规则实现分流。

1. 定义自定义路由表
编辑 /etc/iproute2/rt_tables,在末尾添加两行(数字是表ID,需唯一且大于255):
100 tab_eth0101 tab_eth1
保存后系统就能识别这两个新路由表名。ID建议从100起,避开内核保留的 254(main)、255(local)等。
2. 为每个表配置路由条目
假设:
– eth0 IP 是 192.168.10.100/24,网关 192.168.10.1
– eth1 IP 是 10.0.20.100/24,网关 10.0.20.1
执行:
ip route add 192.168.10.0/24 dev eth0 src 192.168.10.100 table tab_eth0ip route add default via 192.168.10.1 dev eth0 table tab_eth0ip route add 10.0.20.0/24 dev eth1 src 10.0.20.100 table tab_eth1ip route add default via 10.0.20.1 dev eth1 table tab_eth1
注意:每张表都要包含直连子网路由(否则出向会失败),且 src 参数明确指定源IP,避免响应包选错出口。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
3. 添加策略规则绑定流量到对应表
常用两种匹配方式,选一种或组合使用:
-
按源IP分流(最常用):
ip rule add from 192.168.10.100/32 table tab_eth0ip rule add from 10.0.20.100/32 table tab_eth1 -
按目标网段分流(如内网走某卡):
ip rule add to 172.16.0.0/12 table tab_eth0ip rule add to 10.0.0.0/8 table tab_eth1
规则按 priority(优先级)从小到大匹配,默认不指定时 priority 从 0 开始递增。可用 ip rule add ... priority 100 显式控制顺序,避免被系统默认规则覆盖。
4. 验证与排错
运行以下命令确认配置生效:
-
ip rule show— 查看所有策略规则及其 priority -
ip route show table tab_eth0— 检查表内容是否完整 -
ip route get 8.8.8.8 from 192.168.10.100— 模拟从该源IP发包,看走哪条路径 -
ping -I 192.168.10.100 8.8.8.8— 强制指定源IP测试连通性
如果 ping 不通,先检查网卡是否 up、ARP 是否可解析、防火墙是否放行 ICMP;再确认路由表里有没有缺直连路由或 default 路由。
不复杂但容易忽略。










