首页/网络/协议速查/路由查找与最长前缀匹配

路由查找与最长前缀匹配

出包时按「最长前缀匹配」选路:更具体的路由优先;没有匹配则走默认路由;策略路由(ip rule)可按源/标记选不同路由表。

协议速查网络更新于 2026-10-13

路由查找是什么

内核为每个对外发送的包选一条出口路由,依据是「最长前缀匹配」:在所有能匹配目标地址的路由里,挑掩码最长(最具体)的那条。没有任何路由匹配时走默认路由;同一前缀有多条时比较度量值(metric),数值小的优先。除主路由表外,Linux 还支持策略路由:按源地址、标记或入接口先选一张路由表,再在表内做最长前缀匹配。

基本信息

适用平台Linux(iproute2 工具集)
核心原则最长前缀匹配,相同前缀比 metric
默认路由0.0.0.0/0 与 ::/0,出网兜底
策略路由ip rule 按源/标记/接口选择路由表
查询命令ip route get 目标地址,直接给出决策结果
数据来源内核 FIB,由 ip route 与动态路由协议写入

典型使用场景

  • 多出口主机排查流量到底走了哪块网卡或哪条线路
  • 双默认路由场景确认内核按 metric 选了哪条
  • VPN 或容器环境核对隧道网段是否覆盖目标地址
  • 按源地址分流:不同来源走不同运营商线路
  • 定位「同一网段有的通有的不通」这类掩码配置错误

查看决策过程

查看决策过程
# 直接问内核:目标地址会走哪个接口、哪条路由、源地址用哪个
ip route get 8.8.8.8
ip route get 10.1.2.3 from 10.0.0.5
# 查看主路由表与默认路由
ip route show
ip route show default
# 查看策略路由规则与指定表
ip rule show
ip route show table 100
# 追踪路由缓存命中(内核已弃用 route cache,改用 route get 观察)

关键概念

概念说明示例
最长前缀掩码越长越优先/32 主机路由 优于 /24 优于默认
默认路由0.0.0.0/0无其他匹配时出网兜底
度量值同前缀比较 metric越小越优先
策略路由按源/标记选不同表多线路由、分流
作用域scope 决定下一跳类型link 为直连、global 为网关
容器、VPN 与多网卡环境里,ip route get 能一次给出「会从哪个接口、经哪条路由、源地址是谁」,比逐张表肉眼比对高效得多,也是判断策略路由是否命中规则的首选手段。
策略路由规则的顺序敏感:ip rule 从优先级数字小的开始匹配,前一条命中即停止。插入新规则时优先级填错,会让更具体的规则永远不被访问到,表现为「配置看起来对但流量走了别的出口」。

易错点

  • 多默认路由时内核按 metric 选路,加错 metric 会让流量走错出口,务必用 ip route get 验证
  • 掩码写错(如把 /24 写成 /25)会割裂网段,出现同网段部分主机不通
  • 策略路由规则优先级顺序错误,导致新规则永不命中
  • 只改 ip rule 不改对应表内容,规则命中了却查到空表,直接丢包
  • 在容器内查看路由看到的是命名空间内的表,与宿主机路由不是一回事

数据来源与参考

  • RFC 1812 §5.2.4.3
  • Linux iproute2 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌