今天发现了一个网络诊断神器,平时没用过,记录一下。
mtr
(My Traceroute)是一款结合了
traceroute
和
ping
功能的网络诊断工具,用于实时分析数据包在传输路径中的状态(如延迟、丢包率等)。它通过持续探测路径上的每一跳(节点),帮助用户快速定位网络问题(如连接超时、高延迟或路由异常)。
核心功能
- 路径跟踪:显示数据包从源到目标经过的所有路由节点(类似
traceroute
)。 - 实时统计:持续监控每个节点的延迟、丢包率(类似长时
ping
)。 - 交互式分析:动态更新数据,支持键盘操作调整显示模式。
安装方法
-
Linux:
# Debian/Ubuntu sudo apt install mtr # CentOS/RHEL sudo yum install mtr # Fedora sudo dnf install mtr
-
macOS(通过 Homebrew):
brew install mtr
-
Windows:
需使用第三方工具(如 WinMTR)。
基础用法
mtr [选项] 目标域名或IP
常用选项
选项 | 说明 |
---|---|
-n | 禁用反向DNS解析(直接显示IP,加快速度) |
-c 次数 | 设置发送的数据包次数(例:-c 100 ) |
--report | 生成一次性报告(非交互模式,自动退出) |
--tcp | 使用TCP协议(默认端口80,需root权限) |
--udp | 使用UDP协议(默认端口53,需root权限) |
-i 秒数 | 设置探测间隔时间(默认1秒) |
-m 最大跳数 | 设置最大跳数(默认30) |
--report-wide | 生成宽格式报告(避免换行) |
交互模式下的键盘操作
按键 | 功能 |
---|---|
d | 切换显示模式(IP/域名) |
j /k | 调整滚动延迟时间 |
p | 暂停/继续更新 |
q | 退出程序 |
使用示例
-
基础诊断(跟踪到
example.com
的路由):mtr example.com
-
生成一次性报告(适合分享结果):
mtr --report example.com
-
指定协议和次数(用TCP探测50次):
sudo mtr --tcp -c 50 example.com
-
禁用DNS解析(直接显示IP):
mtr -n example.com
结果解读
- Loss%:节点丢包率(持续高于0%可能有问题)。
- Avg:平均延迟(单位ms,突然升高可能网络拥堵)。
- Last:最近一次探测的延迟。
- Best/Worst:最佳/最差延迟。
常见场景
- 定位丢包节点:若某节点丢包率高,其后所有节点也丢包,则该节点可能是问题源头。
- 排查延迟波动:观察特定节点的延迟是否异常(如突然跳变)。
- 检测路由环路:重复出现的节点可能表明路由异常。
注意事项
- 部分节点可能配置为不响应ICMP请求,导致显示为
???
。 - 使用
--tcp
/--udp
需要管理员权限(sudo
)。 - 企业内网可能限制ICMP协议,需根据环境调整探测方式。
关注公众号**「原宏Cloud运维栈」**,带你学习更多实战经验!