真正实现源ip分流需用策略路由,核心是“从哪个ip发出的包就查哪张表”;先定义专用路由表并绑定源ip网段,再按源地址添加from规则匹配表,补全to规则确保回程路径一致,最后验证并持久化配置。

靠单一默认路由表没法区分不同来源的流量,真正实现源IP分流得靠策略路由——核心是让“从哪个IP发出的包,就查哪张表”,每张表配专属出口路径。
定义专用路由表并绑定源IP网段
先在/etc/iproute2/rt_tables里注册新表,避免用保留编号(如254、255),推荐用100、101这类干净数字:
- 100 table_a
- 101 table_b
接着为每张表填两样东西:直连网段路由(确保ARP可达)和默认网关:
- ip route add 192.168.1.0/24 dev eth0 src 192.168.1.100 table table_a
- ip route add default via 192.168.1.1 dev eth0 table table_a
- ip route add 10.0.2.0/24 dev eth1 src 10.0.2.100 table table_b
- ip route add default via 10.0.2.1 dev eth1 table table_b
用ip rule按源地址匹配路由表
规则按priority从小到大匹配,数值越小越优先。添加明确的from规则,指向对应表:
- ip rule add from 192.168.1.0/24 table table_a priority 100
- ip rule add from 10.0.2.0/24 table table_b priority 101
注意:不能只写to或iif,必须用from——因为目标是控制本机发出的流量走哪条路,源头才是关键。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
补全回程路径,防止不对称路由
只配出向规则,服务端响应可能仍走main表返回,中间设备会丢包。需加to规则保证双向一致:
- ip rule add to 192.168.1.0/24 table table_a priority 105
- ip rule add to 10.0.2.0/24 table table_b priority 106
更稳妥的做法是在每张自定义表中也加入本机IP的local路由,或确保local表(ID 255)已包含所有本地地址。
验证与持久化
测试是否生效,别只ping,要用带源地址的命令:
- ping -I 192.168.1.100 8.8.8.8 → 应走table_a路径
- ip route get 8.8.8.8 from 10.0.2.100 → 显示实际查哪张表
- ip rule show 和 ip route show table table_a 检查规则与表内容是否完整
重启后失效?把命令写进网络启动脚本,或用systemd service管理,别依赖临时命令。










