Linux命令之mtr命令
一、mtr命令简介;
mtr 是一个功能强大的网络诊断工具,它结合了 ping 和 traceroute 的功能,并提供了实时、持续的连接质量统计数据。它是排查网络问题、定位网络瓶颈的利器。mtr(My Traceroute)在单个界面中同时展示了数据包从源主机到目标主机所经过的每一跳(路由器)的信息,并且会持续地向每一跳发送数据包,动态更新统计结果,如丢包率、延迟等。与 traceroute 的区别:
- traceroute:只向每一跳发送少量数据包(默认3个),显示一次性的路径和延迟。
- mtr:持续地向每一跳发送数据包,提供实时的、基于统计的网络质量视图,更容易发现间歇性的网络问题。
二、命令语法及参数说明
1、命令安装(centos7系统安装)
[root@ywtools ~]# yum install epel-release && sudo yum install mtr
2、命令语法
#mtr [选项] 目标主机
运行 mtr www.baidu.com,你会看到一个类似这样的实时界面:Host: 经过的路由器IP或主机名。
- Loss%: 到该节点的丢包率。这是最重要的指标之一。
- Snt: 已发送的数据包数量。
- Last: 最近一个数据包的延迟(毫秒)。
- Avg: 平均延迟。
- Best: 最低延迟。
- Wrst: 最高延迟。
- StDev: 延迟的标准差。值越大,说明网络延迟越不稳定。
当出现网络问题时,你需要从第一跳开始逐行往下看。
- 如果第一跳(你的路由器)丢包率就很高,问题可能出在你的本地网络。
- 如果中间某一行(例如第4跳)开始出现高丢包率,并且后续所有跳都有高丢包,那么问题很可能出在那个节点或其附近的网络。
- 如果只有某一跳丢包率高,但后续节点正常,这通常是该路由器有意限制ICMP流量导致的,不一定是真问题(称为“假丢包”)。

2、参数说明
| 参数 | 参数说明 |
|---|---|
| -r,--report | 报告模式,最常用的模式,生成一次性报告后退出,便于分享和记录。 |
| -c | 指定数据包数量,默认会发送10个包,可以使用 -c 指定数量。 |
| -n | 不使用DNS反向解析 ,直接显示IP地址,而不尝试解析主机名,可以加快输出速度。 |
| -4 | 指定使用ipv4协议 |
| -6 | 指定使用ipv6协议 |
| -s | 指定数据包大小,模拟不同大小的数据包,有助于诊断MTU相关问题。 |
| -m | 设置最大跳数(Time-To-Live)。 |
| --interface | 指定源接口或IP (-i) |
| -i | 设置发送每个ICMP包之间的时间间隔(秒)。 |
| -T | 指定TCP协议,有些路由器会过滤ICMP包,使用TCP包可能更有效,结合-P使用 |
| -u | 指定UDP协议 |
| -P | 指定端口 |
三、使用示例
1、交互模式
在交互模式下,让它一直运行,观察延迟和丢包率的变化,特别适合排查间歇性问题。
2、报告模式
报告模式,快速检查到目标主机的连通性
#mtr -r -c 10 -i 0.5 google.com
3、诊断到特定网站的延迟和丢包问题
使用报告模式,不解析DNS,发送50个包。
#mtr -r -n -c 50 114.114.114.114
4、怀疑是MTU问题,使用大包测试
如果在大包时丢包率剧增,而小包正常,可能是路径上的MTU问题。
#mtr -r -s 1500 www.jd.com
5、目标主机屏蔽了ICMP,使用TCP端口探测
ping不通,但是网站访问通,可以使用TCP进行探测测试。
#mtr -r -T -P 443 www.jd.com
四、写在最后
MTR 的最大价值从来不是告诉你“网站能不能访问”,而是告诉你 “从我这到目标,中间的哪一段出现了异常”。所以在阿里云售后技术支持或者运营商线路报障的时候经常会要求使用mtr进行路由跟踪测试,协助他们进行网络定位。




