最长前缀匹配是什么
VPC 路由表的选路核心有两条规则:前缀不同时最长前缀匹配优先,也就是 /24 比 /16 更具体、命中更具体的那条;前缀相同时,自定义路由优先于系统自动生成的路由。这决定了同一个目标存在多条路由时流量的实际走向,也是排查『路由都加了但流量走错链路』的第一现场。各厂商在系统路由与自定义路由的优先级细则上略有差异,以对应厂商文档为准。
基本信息
| 规则一 | 最长前缀优先:10.10.1.0/24 优先于 10.10.0.0/16 |
|---|---|
| 规则二 | 前缀相同时:自定义路由优先于系统自动路由 |
| 规则三 | 更具体的路由常用于分流:某网段走专线、其余走 NAT |
| 排查顺序 | 先列出目标 IP 命中的所有路由,再比前缀长度,最后比路由类型 |
| 生效方式 | 路由表修改后立即影响新连接,已在传输的连接可能仍走旧路径 |
典型使用场景
- 链路分流:IDC 网段走专线,其余流量走 NAT 网关出公网
- 灰度与验证:把个别网段指向新网关,先小范围验证再全量切换
- 故障切换:把更细的路由指向备用链路,实现按网段的快速绕行
- 多 VPC 互通时控制访问路径,避免默认路由把流量引到错误的对端
- 排查走错链路:确认目标 IP 是否被一条更具体的路由抢走了流量
分流示例与命中判断
分流示例与命中判断
10.20.0.0/16 → 专线网关(IDC 网段走专线)
0.0.0.0/0 → NAT 网关(其余出公网)
# 10.20.1.5 的流量命中更具体的 /16,不会被默认路由抢走
# 再加一条 10.20.1.0/24 → VPN 网关,则该子网段改走 VPN,其余仍走专线
# 实例内验证命中结果
ip route get 10.20.1.5命中结果示例
| 路由条目 | 目标 IP | 命中结果 |
|---|---|---|
| 10.20.0.0/16 → 专线;10.20.1.0/24 → VPN | 10.20.1.5 | 命中 /24,走 VPN |
| 同上 | 10.20.2.7 | 命中 /16,走专线 |
| 0.0.0.0/0 → NAT;10.20.0.0/16 → 专线 | 8.8.8.8 | 命中默认路由,走 NAT |
| 10.20.0.0/16 → 专线 | 10.20.99.1 | 命中 /16,走专线 |
路由分流的经典用法:财务与生产网段走专线,其他流量走公网,用前缀长度精准控制,不需要额外的策略路由设备。
改路由等于改网络走向:变更前记录当前的命中关系,变更后在两端实例分别用 ip route get 与 traceroute 验证,避免把生产流量引到错误链路。