首页/网络/网络排障速查/ip route get:查看内核实际选路
连通性与链路检测54 条

ip route get:查看内核实际选路

配置里写着一堆路由,但内核到底选了哪条?ip route get 直接给出答案(出接口 + 源地址 + 下一跳),是验证『路由是否符合预期』的最快方式。

网络排障速查网络更新于 2026-10-13

内核实际选了哪条路由

路由表里可能同时存在默认路由、明细路由和多张自定义表,配置写得对不对不重要,内核实际选哪条才重要。ip route get 把选路结果一次性给出:出口网卡(dev)、下一跳(via)和源地址(src)。多网卡服务器上,用它核对「业务流量到底从哪张网卡出去」比肉眼看路由表可靠得多,尤其是同时存在策略路由规则时。

基本信息

适用平台Linux(iproute2);Windows 对应 Find-NetRoute
语法ip route get <目标IP> [from <源IP>] [iif <入接口>]
输出关键字段via 下一跳、dev 出接口、src 选用的源地址、uid 相关标记
相关命令ip route show table all、ip rule list
权限要求普通用户可查;修改路由需 root

典型使用场景

  • 多网卡服务器确认业务出向:验证是否走了预期的网卡与源地址
  • 策略路由排查:ip rule 决定查表顺序,确认自定义表是否优先生效
  • VPN 或隧道场景:确认目标是否被路由进隧道接口
  • 加静态路由前的预判:先看当前选路结果,再决定是否覆盖
  • 故障复盘:核对故障时段使用的源地址是否与预期一致

常用查询

常用查询
ip route get 223.5.5.5                    # 默认路径与源地址
ip route get 10.0.0.5 from 10.10.0.2       # 指定源地址时的选路结果
ip route get 10.0.0.5 iif eth0             # 指定入接口,模拟从该口进来的流量
ip route show table all | head -30         # 含自定义路由表,别只看 main
ip rule list                               # 策略路由规则顺序,决定优先查哪张表
ip route get 10.0.0.5 uid 1000             # 按用户身份查选路(多用户网关场景有用)

Windows 对应写法

Windows 对应写法
Find-NetRoute -RemoteIPAddress 8.8.8.8     # 列出命中的路由与源地址
route print -4 | Select-String -Pattern '0.0.0.0'   # 查看 IPv4 默认路由

输出逐项读法

字段含义判读要点
via下一跳地址与预期网关不一致说明命中了别的路由
dev出接口多网卡服务器核对是否走了业务网卡
src内核选用的源地址与业务期望地址不符会导致对端策略拒绝
cache 相关是否命中缓存条目缓存过期后结果可能变化,结论以重查为准
local 标记目标是本机地址显示 local 表示命中本地路由,不会真正出网
ip route get 的输出里 src 是内核实际选用的源地址:判断「对端看到的来源 IP 对不对」时,这一项比配置文件更有说服力。

易错点

  • 只看 main 表忽略策略路由:ip rule 决定查表顺序,自定义表可能先命中,结论与预期完全不同
  • 不指定源地址就断言没问题:带业务源地址时选路结果可能不一样,尤其在多网卡或多路由表环境中
  • 忽略 src 字段:出口网卡对了但源地址是次要地址,对端策略路由会直接拒绝
  • 把路由缓存当永久结论:条目过期或规则变更后结果会变,排查时应在复现窗口内重新查询

数据来源与参考

  • iproute2 手册:ip route get / ip rule
  • Microsoft Learn:Find-NetRoute

相关工具

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