先查清网卡与网络基础信息:运行ip addr查看所有网卡状态,重点关注UP且有IPv4地址的接口(如eth0、ens33);再执行ip route show确认main表中默认网关,若存在多条default via则需清理以避免策略路由冲突。

确认网卡与网络基础信息
先查清当前系统中有哪些网卡、各自IP地址和已有的默认路由,避免后续配置时误用错误接口或覆盖已有关键路径。运行 ip addr 查看所有网卡状态,重点关注处于 UP 状态且有 IPv4 地址的接口(如 eth0、ens33、enp0s3);再执行 ip route show 确认当前 main 表中的默认网关——【如果看到多条 default via,说明存在默认路由冲突,必须先清理,否则策略路由无法生效】。
假设你得到如下典型环境:eth0 的 IP 是 192.168.10.100/24,网关为 192.168.10.1;eth1 的 IP 是 10.0.20.100/24,网关为 10.0.20.1。
创建自定义路由表
编辑 /etc/iproute2/rt_tables 文件,在末尾新增两行:
100 tab_eth0200 tab_eth1
这里数字是路由表优先级(越小越靠前),名字可自定义但需全程一致。注意不要改动已有的 255 local、254 main、253 default 这三行。
为每张网卡配置独立路由表
第一步:向 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
这两组命令缺一不可——只加 default 路由不加直连路由,会导致本机发往同网段主机的包无法正确封装源 IP,通信失败。
添加策略规则绑定流量到对应路由表
方法一:按源 IP 地址分流(最常用)
ip rule add from 192.168.10.100/32 table tab_eth0ip rule add from 10.0.20.100/32 table tab_eth1
方法二:按目标子网强制走指定网卡(例如内网访问必须走 eth0)
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 add to 0.0.0.0/0 iif eth0 table tab_eth0ip rule add to 0.0.0.0/0 iif eth1 table tab_eth1
注意:rule 优先级默认从 32766 开始递减,若已有冲突规则,可用 priority N 显式指定,比如 ip rule add ... priority 100。
验证策略路由是否生效
检查规则列表:ip rule show,确认新规则已加载且顺序合理。
查看某张表内容:ip route show table tab_eth0,确认里面有直连路由和 default 条目。
模拟流量路径:ip route get 8.8.8.8 from 192.168.10.100,输出应显示 via 192.168.10.1 dev eth0,证明源地址匹配成功。
实际测试连通性:ping -I eth0 -c 3 8.8.8.8 和 ping -I eth1 -c 3 8.8.8.8 分别验证两个出口是否独立可达。



















