linux多网卡策略路由核心是ip rule+自定义路由表+ip route协同:先在/etc/iproute2/rt_tables定义tab_eth0/tab_eth1,再为各表添加直连路由和默认网关,最后用ip rule按源ip或目标网段绑定规则并设priority,确保流量出入路径一致。

Linux 中配置策略路由实现多网卡分流,核心是打破单一主路由表的限制,让不同流量按规则走不同网卡出口。关键不是加多条默认路由,而是用 规则(ip rule)+ 自定义路由表(/etc/iproute2/rt_tables)+ 表内路由条目(ip route) 三者协同工作。
一、准备自定义路由表
先为每块网卡分配独立路由表,避免冲突:
- 编辑 /etc/iproute2/rt_tables,在末尾添加两行(编号不能重复,建议从100起):
100 tab_eth0
101 tab_eth1 - 编号代表优先级(数值越小越先匹配),但此处仅作标识,实际匹配顺序由后续
ip rule的 priority 控制。
二、配置各路由表中的具体路径
假设环境:
eth0:IP 192.168.10.100/24,网关 192.168.10.1
eth1:IP 10.0.20.100/24,网关 10.0.20.1
- 为 tab_eth0 添加直连网段和默认路由:
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_eth0 - 为 tab_eth1 添加对应内容:
ip 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
三、添加策略规则决定“谁走哪张表”
规则按 priority 升序匹配,需明确指定触发条件:
- 按源 IP 分流(最常用,保证回程一致):
ip rule add from 192.168.10.100/32 table tab_eth0 priority 100ip rule add from 10.0.20.100/32 table tab_eth1 priority 101 - 按目标网段分流(如内网访问走特定网卡):
ip rule add to 192.168.100.0/24 table tab_eth0ip rule add to 10.0.100.0/24 table tab_eth1 - 注意:已有冲突规则可用
ip rule del清理,例如ip rule del priority 100。
四、验证与持久化
配置后立即测试,再固化到系统启动流程:
- 查看规则是否生效:
ip rule show - 查看某张表内容:
ip route show table tab_eth0 - 测试指定出口连通性:
ping -I 192.168.10.100 www.example.com - 持久化方法(选其一):
— 写入 /etc/rc.local(CentOS/RHEL)
— 在 NetworkManager 配置中使用ip-route指令
— 或通过 systemd service 调用脚本执行上述ip命令











