mtr是一款集成ping和traceroute功能的网络诊断工具,通过持续发送探测包并逐跳跟踪路径,实时显示延迟、丢包率和网络稳定性,结合ICMP/UDP与TTL递增机制,提供动态更新的路径视图,支持命令行或交互界面模式,可用于精准定位网络瓶颈或故障节点。

在Linux中排查网络问题时,单一工具往往难以全面判断故障点。mtr(My TraceRoute)是一个集成了 ping 和 traceroute 功能的网络诊断工具,能实时显示数据包从本机到目标主机的完整路径,并提供延迟、丢包等关键指标,非常适合用于定位网络瓶颈或故障节点。
什么是mtr?
mtr通过持续发送探测包,跟踪数据包经过的每一跳(hop),并统计每跳的响应时间、丢包率和网络稳定性。相比传统的traceroute只执行一次,mtr提供动态更新的视图,更真实地反映网络状况。
它的工作原理是结合ICMP(或UDP)包和TTL(Time to Live)递增机制,逐跳探测路径,并不断收集聚合数据。默认情况下,mtr以curses界面运行,也可以使用命令行模式输出简洁结果。
安装mtr工具
大多数Linux发行版默认未安装mtr,可通过包管理器快速安装:
- Ubuntu/Debian:sudo apt install mtr
- CentOS/RHEL:sudo yum install mtr 或 sudo dnf install mtr
- openSUSE:sudo zypper install mtr
安装完成后,可通过 mtr --version 验证是否安装成功。
基本使用方法
运行mtr最简单的方式是指定目标域名或IP:
mtr google.com这将启动交互式界面,持续显示每一跳的信息,包括:
- Host:中间节点或目标主机的IP/域名
- Loss%:该跳的丢包百分比
- Snt:已发送的探测包数量
- Best/Avg/Worst:最低、平均和最高延迟(ms)
- StDev:延迟的标准差,反映网络抖动
若希望以一次性报告形式输出,避免交互界面,可使用 -r 参数:
其中 -c 10 表示发送10个包后自动退出,适合脚本调用或日志记录。
分析mtr输出定位问题
观察mtr结果时,重点关注以下几种情况:
- 某跳开始出现高延迟或持续丢包,说明问题可能出现在该节点或其后链路
- 前几跳正常,但到ISP出口或国际线路突然恶化,可能是运营商或跨境网络问题
- 目标主机丢包但路径中间正常,可能是目标服务器过载或防火墙限制
- 延迟波动大(StDev高),说明网络不稳定,可能影响实时应用
例如,若第5跳起丢包率达50%以上,而前4跳正常,基本可判断问题出在第5跳设备或其下游网络,可联系对应网络管理员或ISP协助排查。
高级选项与实用技巧
mtr支持多种参数以适应不同场景:
- -4 或 -6:强制使用IPv4或IPv6
- -n:不解析主机名,显示IP地址(加快响应)
- -i 0.5:设置发送包间隔为0.5秒
- --tcp:使用TCP代替ICMP探测(某些防火墙会屏蔽ICMP)
- --port 80:配合--tcp指定目标端口
组合使用示例:
mtr -r -n -c 20 --tcp --port 443 google.com该命令以TCP 443端口探测Google,执行20次后输出报告,不解析DNS,适合在ICMP受限环境中使用。
基本上就这些。mtr是网络故障排查中非常实用的工具,结合其动态统计和路径追踪能力,能快速缩小问题范围,提高诊断效率。熟练掌握其输出解读和常用参数,对系统管理员和运维人员尤为重要。










