Linux 怎样用 ip route get 判断实际出口
排查 Linux 网络问题时,先看 ip route 的默认路由,往往只能得到一个大概方向:真正发送到某个目标地址时,内核可能还会结合最长前缀、策略规则、源地址、接口和标记做选择。要回答“这个目标实际会从哪张网卡出去”,可以直接查询 ip route get。
ip route get 目标地址会按给定的查询上下文计算一条路由,并把dev出口设备、via下一跳和src首选源地址放在结果中。先读这三个字段,再根据策略路由场景补充from、mark、iif或oif,比凭默认路由猜出口可靠。
先用目标地址查询候选出口
最小查询只需要一个目标地址。下面的命令使用文档网段作为示例,命令和输出用于说明字段含义,不代表某台机器的真实运行结果。
# 只按目标地址询问内核会选择哪条路由 ip route get 203.0.113.8
203.0.113.8 via 192.0.2.1 dev eth0 src 192.0.2.10 uid 1000
cache
在这个示例里,203.0.113.8 是目标地址,via 192.0.2.1 是下一跳,dev eth0 是出口设备,src 192.0.2.10 是内核为这条目的发送方向偏好的源地址。uid 和末尾的缓存提示不是出口网卡本身,不要把它们混为一谈。

把 dev、via、src 读成三类不同结论
判断“实际出口”时,建议按下面的顺序读结果。dev 回答的是从哪个本地接口发出,via 回答的是交给哪个下一跳,src 回答的是发送报文倾向使用哪个本地源地址。
| 字段 | 它回答的问题 | 排障时怎么用 |
|---|---|---|
dev | 选择了哪张出口网卡或虚拟接口 | 与 ip link、容器网卡或 VRF 配置对照 |
via | 下一跳网关是谁 | 检查网关是否属于预期链路;直连路由可能没有它 |
src | 使用哪个本地源地址更合适 | 检查服务监听地址、回程路由和源地址策略 |
scope | 目标的路由作用域 | 区分主机、链路和全局范围,避免把本地路由当成外发路径 |
如果结果直接显示 dev lo,目标可能属于本机地址或本地路由;如果显示 unreachable、blackhole 或 prohibit,重点就不再是找出口网卡,而是确认路由类型和策略为何拒绝了这次发送。
策略路由场景要补齐查询条件
只传目标地址相当于询问一个简化上下文。在多网卡、VPN、容器、VRF 或基于源地址分流的主机上,同一个目标可能因为报文的来源和标记不同而得到不同结果。此时要让查询更接近真实流量。
# 指定真实的源地址,观察源策略是否改变出口 ip route get 203.0.113.8 from 192.0.2.10 # 指定入接口或出接口,模拟策略规则使用的接口条件 ip route get 203.0.113.8 iif eth1 ip route get 203.0.113.8 oif eth0 # 指定防火墙标记;数值应替换为业务实际设置的 mark ip route get 203.0.113.8 mark 0x20
from 用于表达源地址条件,mark 用于表达报文标记,iif 和 oif 用于补充接口上下文;如果主机使用 VRF,还可以使用 vrf 名称 把查询放进对应的路由域。每次只改变一个条件,才能看出究竟是哪条策略影响了结果。

如果要确认策略规则本身,可以另外查看 ip rule 和各路由表,但它们与本次 ip route get 的职责不同:前者展示配置,后者针对给定上下文给出一次路由计算结果。
IPv6 和几个容易误读的边界
IPv6 查询要显式使用 -6,否则你可能一直在检查 IPv4 路由。源地址也应使用 IPv6 地址,不能把两种地址族的结果混在一起。
# 用 IPv6 地址族查询目标和首选源地址 ip -6 route get 2001:db8:20::8 from 2001:db8:10::10
还要注意三点。第一,ip route get 计算的是给定条件下的路由选择,不等于已经建立了 TCP 连接,也不证明远端一定可达。第二,存在多路径路由时,结果反映的是当前查询上下文下的选择,不能把一次结果写成所有连接永远固定。第三,命令没有返回可用路由时,应保留完整错误信息,继续检查地址族、策略规则、路由表和接口状态,不要自行补一个默认出口。
常见问题
只看 ip route 的 default 行可以吗?
只能作为初步线索。目标地址的更具体前缀、策略路由、源地址和标记都可能使实际选择不同,最终判断应以带真实上下文的 ip route get 为准。
src 是应用绑定的本地地址吗?
它是路由计算给出的首选源地址,不等同于应用一定已经绑定的监听地址。应用显式绑定、套接字选项和后续连接状态仍可能影响最终行为。
没有 via 是否说明出口错误?
不一定。直连网络可以直接通过设备发送,不需要网关;判断出口时应先看 dev,再结合目标前缀与接口地址确认是否属于预期链路。
Linux systemd After 和 Wants 怎样配合启动依赖
- 上一篇
- Linux systemd After 和 Wants 怎样配合启动依赖
- 下一篇
- Linux 怎样读取网卡丢包统计
-
- 文章 · linux | 1小时前 |
- Linux 怎样读取 cgroup v2 CPU 节流统计
- 353浏览 收藏
-
- 文章 · linux | 1小时前 | Linux ·
- Linux 服务创建文件权限不符合预期怎么办
- 210浏览 收藏
-
- 文章 · linux | 1小时前 | Linux ·
- Linux 怎样调整运行中进程的调度优先级
- 403浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux 怎样读取 XFS 文件系统特征
- 294浏览 收藏
-
- 文章 · linux | 1小时前 | linux运维 · Linux inode 磁盘排障 du --inodes 目录统计
- Linux 怎样按 inode 数量定位目录异常
- 213浏览 收藏
-
- 文章 · linux | 1小时前 | Linux 丢包 ethtool 网卡统计 ip -s link 驱动统计
- Linux 怎样读取网卡丢包统计
- 101浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux systemd After 和 Wants 怎样配合启动依赖
- 427浏览 收藏
-
- 文章 · linux | 1小时前 | Linux · 故障排查 · Linux requires systemd-analyze After systemd unit 依赖循环
- Linux systemd-analyze verify 报依赖循环时怎么定位涉及的 unit
- 363浏览 收藏
-
- 文章 · linux | 1小时前 | Linux pid 文件锁 util-linux lslocks
- Linux lslocks 怎样定位占用文件锁的进程
- 280浏览 收藏
-
- 文章 · linux | 1小时前 | 故障排查 · 服务管理 · Linux systemd RestartSec Restart=on-failure 服务自动重启
- Linux systemd 服务异常退出后怎样自动重启
- 355浏览 收藏
-
- 文章 · linux | 13小时前 |
- Linux 怎样读取 cgroup v2 内存压力事件
- 144浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 525次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 582次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 609次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 558次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 379次使用
-
- Linux nftables 规则命中怎么核对:counter、链优先级与回滚边界
- 2026-08-24 158浏览
-
- Linux ip route get 怎么确认实际选中的出口网卡
- 2026-09-09 436浏览
-
- Linux 策略路由怎么按源地址选择路由表
- 2026-10-06 181浏览
-
- Linux 网络命名空间如何连接到宿主机网桥
- 2026-10-10 354浏览

