mtr 是什么
mtr 把 traceroute 与 ping 合成一个工具:按 TTL 递增逐跳探测目标,并对每一跳持续发探测包,实时统计丢包率、往返延迟与抖动。它回答的是「从哪一跳开始变差」这个问题——单次 traceroute 只给出路径,mtr 给的是路径上每一跳的质量。Linux/macOS 上叫 mtr,Windows 上对应 WinMTR,报告模式输出可直接贴进工单。
基本信息
| 适用平台 | Linux(mtr 包)、macOS(brew)、Windows(WinMTR) |
|---|---|
| 报告模式 | -r 输出可复制文本,-w 宽格式 |
| 次数与间隔 | -c 探测轮数、-i 间隔秒数 |
| 探测协议 | 默认 ICMP,可选 --tcp --port 443 / --udp |
| 附加信息 | -z 显示 ASN,-b 同时显示 IP 与域名 |
| 权限 | 普通用户可用;部分选项需 root 或 CAP_NET_RAW |
典型使用场景
- 定位跨运营商丢包:判断问题出在本地出口、中间骨干还是对端机房
- 链路割接或带宽调整前后做同样参数的对比测试
- 用户投诉「网站慢」时先看路径质量,再决定是否查应用
- 排查路由环路或路径异常:观察跳数是否异常变多
- 为工单留下可复现的客观数据,避免只凭主观描述
常用命令
常用命令
mtr -rwzc 100 1.1.1.1 # 报告模式:100 轮,-z 显示 ASN
mtr -rwzc 50 --tcp --port 443 target # 用 TCP 443 探测,绕开 ICMP 限速
mtr -rwz -i 0.5 -c 200 target # 加密节奏,采样更多
mtr -u target # UDP 模式
mtr -n -r target # -n 不解析域名,输出更干净输出逐列读法
| 列 | 含义 | 正常与异常 |
|---|---|---|
| Loss% | 该跳的丢包率 | 中间跳偏高尚可能是 ICMP 限速 |
| Snt | 已发送探测包数 | 太少时统计不可信 |
| Last | 最近一次往返延迟 | 波动大说明抖动明显 |
| Avg | 平均往返延迟 | 与相邻跳差值即该跳引入的延迟 |
| Best/Wrst | 最小/最大延迟 | 差距大是队列拥塞的信号 |
| StDev | 延迟标准差 | 越大越不稳定,影响交互体验 |
| ASN | -z 显示的运营商编号 | 用于识别运营商边界 |
判读的核心规则:中间跳丢包但其后各跳都正常,说明那一跳只是对 ICMP 应答做了限速,不是真实丢包;只有从某一跳开始、一直到最后一跳都丢,才说明该段真的有丢包。
长时间高频探测会产生不小流量,对非自有目标应保持克制,避免被对方的防护系统判定为扫描;生产监控建议低频、分布式发起。