tracepath 是什么
tracepath 是 iputils 提供的轻量路径探测工具,定位类似 traceroute,但不需要 root 权限,并且在探测路径的同时报告路径 MTU 变化。它适合快速做『路径 + MTU』联合体检:看到中途 pmtu 变小,就能指导隧道与业务按实际值调整 MTU。IPv6 环境使用 tracepath6,或直接用 tracepath 加 IPv6 目标。与 traceroute 相比,它少了逐跳多种探测手法与协议选择,换来的是零权限门槛与 MTU 伴随输出。
基本信息
| 适用平台 | Linux(iputils 包,随 iputils 一起安装) |
|---|---|
| 权限要求 | 普通用户即可(不需要 raw socket 权限) |
| 常用选项 | -n 不做名称解析、-m 最大跳数 |
| 相对优势 | 无需 root、输出带 pmtu 变化、直接可用 |
典型使用场景
- 容器或受限用户环境:没有 root 权限时做基础路径探测
- 隧道排查:GRE/IPsec/VXLAN 环境确认路径 MTU 是否被中途压低
- 快速体检:比 traceroute 少依赖,随手确认路径是否存在绕行
- MTU 问题初步定位:与 ping -M do 二分法配合,先看大致值再精确定位
- 异厂商设备互联:路径中夹着 PPPoE 或隧道封装时,用它先判断 MTU 收缩发生在第几跳
- 排障报告取证:输出简洁、无需提权,适合直接粘进工单与会议记录
典型输出与用法
典型输出与用法
$ tracepath -n 10.0.0.5
1?: [LOCALHOST] pmtu 1500
1: 10.0.0.1 0.234ms
2: 10.0.1.1 0.812ms pmtu 1400 <- 路径 MTU 在此降为 1400
3: 10.0.2.7 1.905ms
Resume: pmtu 1400 hops 2 back 3常用变体
常用变体
tracepath -n <目标> # 不做反向解析,输出更快
tracepath6 <IPv6目标> # IPv6 专用形式
tracepath -m 20 -n <目标> # 限制最大 20 跳,避免长路径刷屏输出判读
| 输出项 | 含义 | 异常指向 |
|---|---|---|
| pmtu 1500 | 当前已知路径 MTU | 中途变小说明存在更小 MTU 的链路 |
| hop 后跟 ? | 该跳未响应探测 | 不一定是故障,需结合后续跳判断 |
| Resume 行 | 最终确认的 pmtu 与前后跳数 | 与业务配置 MTU 不一致时需调整 |
| 超时星号 | 连续超时 | 该跳或其后链路可能阻断 ICMP |
| timeout 提示 | 探测超时退出 | 目标不可达或链路中断,需结合 ping 复核 |
与 ping 配合复核 MTU
与 ping 配合复核 MTU
# tracepath 给出大致值后,用不分片探测做二分确认
ping -M do -s 1372 -c 2 10.0.0.5 # 1372+28=1400,验证 1400 是否真的可通
ping -M do -s 1472 -c 2 10.0.0.5 # 1472+28=1500,用标准 MTU 对照tracepath 的 pmtu 来自探测过程中的 ICMP 反馈:对端不回 ICMP 时无法获知变化,输出会一直停留在起始值,这不代表路径 MTU 一定是 1500。
与 mtr 分工:mtr 负责多次采样统计丢包与时延抖动,tracepath 负责一次性路径与 MTU 快照。判断『偶发丢包』用 mtr,判断『能不能过 1500 字节』用 tracepath 加 ping -M do。
看到 pmtu 显示值不要直接照搬成配置值:先用 ping -M do -s 进行二分复核,再决定接口与隧道的 MTU 设置。