mtr 是 linux 下测试网络延迟的实用工具,结合 traceroute 与 ping 功能,可实时查看路径节点的延迟与丢包情况。1. 基础用法:运行 mtr example.com 可查看每跳 ip、响应时间与丢包率,默认使用 icmp 协议,按 q 退出,加 -r 输出报告,--max-hops 限制跳数;2. 进阶设置:-i 调整探测间隔,-s 设置报文大小以贴近真实流量;3. 绕过 icmp 限制:使用 -t 指定 tcp 协议(如 -p 80)或 -u 使用 udp 协议;4. 自动化诊断:通过脚本批量测试多个目标并记录结果,适合监控与故障排查。

Linux下测试网络延迟,mtr 是一个非常实用的工具。它结合了 traceroute 和 ping 的功能,可以实时查看每个节点的延迟和丢包情况,非常适合用来诊断网络问题。

一、mtr 基础用法:快速定位网络瓶颈
如果你只是想简单看一下到目标主机的网络路径和延迟情况,可以直接使用:

mtr example.com
运行后,你会看到每一跳的 IP、响应时间(ms)、丢包率等信息。默认情况下,mtr 使用 ICMP 协议进行探测,也可以指定 UDP 或 TCP。
几个小技巧:

- 按
q可以退出 mtr 实时界面。 - 加上
-r参数可以输出报告模式,适合保存日志或分析结果。 - 如果你想限制跳数,可以用
--max-hops来设定最大追踪跳数。
二、进阶用法:设置探测频率与报文大小
有时候,默认的探测频率和报文大小可能不够准确,尤其是遇到某些防火墙过滤小包的情况。
你可以通过以下方式调整:
-
改变探测间隔: 使用
-i参数,比如-i 0.5表示每 0.5 秒发送一次探测包。 -
调整报文大小: 使用
-s设置报文大小,例如-s 1400发送 1400 字节的数据包,模拟真实业务流量。
这样做的好处是可以更贴近实际网络状况,避免因为小包被特殊处理而误判网络状态。
三、使用 TCP/UDP 协议探测,绕过 ICMP 限制
有些服务器或网络设备会屏蔽 ICMP 请求(也就是 ping 不通),这时候可以用 TCP 或 UDP 模式来探测。
-
TCP 模式: 加上
-T参数,并指定端口,例如:mtr -T -p 80 example.com
-
UDP 模式: 使用
-u参数:mtr -u example.com
需要注意的是,UDP 模式在某些系统上可能需要 root 权限才能运行,而且不同系统的支持程度也略有差异。
四、自动化诊断:结合脚本批量分析
如果你要对多个目标做统一测试,或者定时收集数据,可以写个简单的 shell 脚本来调用 mtr。
比如:
#!/bin/bash
for host in "example.com" "test.com" "demo.org"; do
echo "Testing $host"
mtr -r -c 10 $host >> network_report.txt
done上面这个脚本会对三个域名各做 10 次探测,并将结果记录到文件中。这种做法很适合用于监控或故障排查初期阶段,帮助你快速了解整体网络状况。
基本上就这些,mtr 虽然看起来简单,但灵活运用起来能解决不少实际问题。像设置协议类型、调整探测参数这些细节,虽然不复杂,但在特定场景下特别有用。










