ip rule路由

ip rule

0: from all lookup local

1000: from all lookup main

10000: from all fwmark 0xc0000/0xd0000 lookup legacy_system

11000: from all iif lo oif dummy0 uidrange 0-0 lookup dummy0

11000: from all iif lo oif eth1 uidrange 0-0 lookup eth1

16000: from all fwmark 0x10063/0x1ffff iif lo lookup local_network

16000: from all fwmark 0x10064/0x1ffff iif lo lookup eth1

17000: from all iif lo oif dummy0 lookup dummy0

17000: from all iif lo oif eth1 lookup eth1

18000: from all fwmark 0x0/0x10000 lookup legacy_system

19000: from all fwmark 0x0/0x10000 lookup legacy_network

20000: from all fwmark 0x0/0x10000 lookup local_network

23000: from all fwmark 0x64/0x1ffff iif lo lookup eth1

31000: from all fwmark 0x0/0xffff iif lo lookup eth1

32000: from all unreachable

规则优先级大致是:

• 16000 EXPLICIT_NETWORK:mark 里的 netId 匹配,且 explicitlySelected=1。bindSocket / bindProcessToNetwork 走这里。

• 17000 OUTPUT_INTERFACE:SO_BINDTODEVICE / IP_PKTINFO,按出口接口选表,不看 netId。

• 23000 IMPLICIT_NETWORK:netId 匹配且 explicitlySelected=0。connect() 时打上的 mark 走这里,用来把这条连接钉死在当时的网络上。

• 31000 DEFAULT_NETWORK:只匹配 netId == 0(NETID_UNSET)再加 permission。PhysicalNetwork::addAsDefault() → addInterfaceToDefaultNetwork() 装的就是这条。

当前上网走哪条

普通 app 上网(没 bindSocket、没 SO_BINDTODEVICE)走 23000。

modifyImplicitNetworkRule() 的注释把原因写明了:connect 时绑上当时的网络,默认网络以后切换,这条已连接的 socket 仍然留在原网络,不会被新默认网络抢走。

如果 connect 时不打 mark,包会掉到 31000 那条 netId==0 的规则上,每次查路由都跟着当前默认网络走。默认网络一切换,已有连接的下一包就会换出口,TCP 直接断。

先写成 mDefaultNetId 且 explicitlySelected=0,命中的是 23000 的隐式规则,连接被钉住;同时因为 explicit 位是 0,local network(20000)、legacy(18000/19000)这些更低优先级的规则还能兜住局域网和老的 requestRouteToHost()。

有一个例外:secure VPN 不在这里写它自己的 netId。它靠 13000 那条不看 mark 的高优先级规则把流量卷走。注释里说,这样 VPN 拆掉以后,socket 上留的仍是默认网络 netId,连接还能继续。bypassable VPN 优先级太低,不写它的 netId 就根本匹配不到,所以那种才会把 VPN netId 写进 mark。

相关推荐
洋不写bug43 分钟前
HTTP(二):万字解析HTTP交互的请求、响应报文格式
网络协议·http·交互·postman·请求格式·响应格式·restful规范
liuhaoodng6261 小时前
《网络IA项目:单臂路由(vlan间通讯)优化实战版》
运维·网络·网络协议
EasyCVR1 小时前
视频汇聚/视频融合/视频分析EasyCVR平台的三个诊断按钮,到底该点哪一个?一文告诉你
网络·easycvr·国标gb28181
国科安芯2 小时前
星上计算的第一道防线:低轨遥感卫星载荷处理链中的AS32S601型抗辐射MCU—— 面向高分辨率成像与在轨智能处理的场景化综述
大数据·网络·人工智能·单片机·算法·低轨卫星·抗辐射
ITxiaobing20232 小时前
海外广告投放:AdTech 场景下 IP 地址库选型思考
服务器·网络·tcp/ip
QZ166560951592 小时前
高效・AI 优化・多模态:知镜-数据安全检测工具政务数据安全管理方案
网络·安全·网络安全
国科安芯2 小时前
从点火到入轨的毫秒尺度:商业运载火箭飞行时序控制中的抗辐射MCU可靠性边界—— 面向短时高可靠任务的单粒子效应证据与架构分析
网络·人工智能·单片机·嵌入式硬件·架构·火箭·抗辐射
dog2503 小时前
长肥管道下的 CUBIC
网络
呉師傅3 小时前
Win7剪切文件变成复制文件如何修改【资源管理器异常类故障】
运维·网络·windows·电脑