核心思路是用ip rule匹配流量特征(如from/to/fwmark/iif/oif)并导向不同路由表,再由ip route定义各表出口路径,实现按源、目的、标记等多维度的优先级分流。

核心思路是用 ip rule 匹配流量特征,再导向不同路由表,配合 ip route 设置对应出口路径,从而实现按优先级分流。
明确区分“源”和“目的”匹配场景
策略路由不是只看数据包要去哪,更要判断它从哪来、带什么标记、走哪个接口。常见有效匹配维度:
- from:适用于本机主动发起的出向流量(比如服务端主动调用API),最常用
- to:适用于本机作为服务器时的回程响应,需与 from 配套使用才能保证双向路径一致
- fwmark:通过 iptables 标记数据包,适合按应用、端口或协议做精细控制(如 SSH 走高优线路)
- iif / oif:分别匹配入站/出站接口,适合网关设备做内外网隔离
为不同优先级创建独立路由表
先在 /etc/iproute2/rt_tables 中注册新表,例如:
100 high_prio<br>101 low_prio
然后填充各自路由:
- high_prio 表设低延迟网关:
ip route add default via 10.0.1.1 dev eth1 table high_prio - low_prio 表设高带宽网关:
ip route add default via 10.0.2.1 dev eth2 table low_prio - 记得补上直连子网路由,避免本地通信失败:
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.100 table high_prio
用规则绑定优先级逻辑
规则按 priority 数值从小到大匹配,建议预留空间便于后期插入:
- 让研发网段(192.168.10.0/24)走高优线路:
ip rule add from 192.168.10.0/24 table high_prio priority 100 - 给视频会议端口(UDP 50000-59999)打标并路由:
iptables -t mangle -A OUTPUT -p udp --dport 50000:59999 -j MARK --set-mark 0x1ip rule add fwmark 0x1 table high_prio priority 150 - 默认其余流量走低优线路:
ip rule add table low_prio priority 300
验证与排错要点
配置后务必确认路径是否符合预期:
- 查规则顺序:
ip rule show,确保 priority 值不冲突 - 查某源IP实际走哪条路:
ip route get from 192.168.10.5 to 8.8.8.8 - 查标记包是否生效:
iptables -t mangle -L -v -n看计数器是否增长 - 注意:仅配
to规则通常无效,内核初始路由决策不依赖目的地址











