tracepath 免 root 探路
tracepath 属于 iputils,是轻量的路径探测工具:逐跳发出探测包并打印每跳地址与往返延迟,同时报告探测到的路径 MTU(PMTU),还会提示非对称路由。普通用户即可运行,不需要 root 权限,因此在容器、跳板机、受限账号里排查「网络通但服务连不上」特别顺手。
基本信息
| 适用平台 | Linux(iputils)多数发行版默认安装;macOS 需另行安装 |
|---|---|
| 语法 | tracepath [-n] [-m 最大跳数] 目标 |
| 特点 | 无需 root、默认走 UDP 探测、附带 PMTU 报告 |
| 对比 | traceroute 可指定协议与端口(如 -T 走 TCP),tracepath 更省权限 |
典型使用场景
- 排查 MTU 问题:VPN、隧道、PPPoE 环境下大包不通但小包通
- 确认访问某个地址实际经过哪些跳、在哪一跳开始丢包
- 验证策略路由、专线切换后路径是否符合预期
- 在没有 root 权限的容器或跳板机上做基础路径诊断
- 对比两条链路走到同一目标时的延迟差异
常用示例
常用示例
tracepath -n 8.8.8.8 # 不做反向解析,输出更快
tracepath -n -m 10 app.internal # 最多探测 10 跳
tracepath -n --mtu 1400 target # 指定初始报文大小观察 PMTU 收敛
tracepath -n target | head -n 15 # 路径很长时先看前几跳
ping -M do -s 1472 -c 3 target # 复验 1500 字节通路是否可行
tracepath -n 10.0.0.8 # 与内网目标对比,判断问题在内部还是外部输出逐列读法
| 输出项 | 含义 | 异常信号 |
|---|---|---|
| 跳数与地址 | 经过的路由器编号及地址 | 某跳开始连续超时说明该处丢包或屏蔽探测 |
| 延迟 | 该跳往返时间 | 中后段突增可能是拥塞或跨网 |
| asymm | 提示探测路径不对称 | 返回路径与去程不同,排障要两边都看 |
| pmtu | 探测到的路径 MTU | 数值小于链路 MTU 说明有设备限制报文大小 |
| Resume 行 | 继续探测时从该跳往下走 | 与上次结果不一致说明路由有变化 |
tracepath 默认用 UDP 探测,部分设备对 ICMP 与 UDP 的处理策略不同;输出里的 pmtu 是探测推测值,与业务实际路径不一致时(多路径或策略路由)要用 ping -M do 复验。
加 -n 关闭反向域名解析可以显著加快输出,排查时几乎总该加上;否则每一跳都要等 DNS 超时。