使用mtr代替ping命令对网络丢包或不通时的链路测试方法
当客户端访问目标服务器出现ping丢包或ping不通时,可以通过tracert或mtr等工具进行链路测试来判断问题根源。本文介绍如何通过工具进行链路测试和分析。

mtr(My traceroute)几乎是所有Linux发行版本预装的网络测试工具。其将ping和traceroute的功能合并,所以功能更强大。mtr默认发送ICMP数据包进行链路探测。您也可以通过“-u”参数来指定使用UDP数据包进行探测。相对于traceroute只会做一次链路跟踪测试,mtr会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。

执行命令 mtr baidu.com

mtr

返回结果说明

默认配置下,返回结果中各数据列的说明如下。

第一列(Host):节点IP地址和域名。按 n 键可切换显示。

第二列(Loss%):节点丢包率。

第三列(Snt):每秒发送数据包数。默认值是10,可以通过“-c”参数指定。

第四列(Last):最近一次的探测延迟。

第五、六、七列(Avg、Best、Worst):分别是探测延迟的平均值、最小值和最大值。

第八列(StDev):标准偏差。越大说明相应节点越不稳定。

数据会不断刷新,显示内容示意测试数据包经历1-17节点,后面的百分比为丢包率

用法说明

mtr [-BfhvrwctglxspQomniuT46] [--help] [--version] [--report]
                [--report-wide] [--report-cycles=COUNT] [--curses] [--gtk]
                [--csv|-C] [--raw] [--xml] [--split] [--mpls] [--no-dns] [--show-ips]
                [--address interface] [--filename=FILE|-F]
                [--ipinfo=item_no|-y item_no]
                [--aslookup|-z]
                [--psize=bytes/-s bytes] [--order fields]
                [--report-wide|-w] [--inet] [--inet6] [--max-ttl=NUM] [--first-ttl=NUM]
                [--bitpattern=NUM] [--tos=NUM] [--udp] [--tcp] [--port=PORT] [--timeout=SECONDS]
                [--interval=SECONDS] HOSTNAME

常见可选参数说明

    --report:以报告模式显示输出。
    --split:将每次追踪的结果分别列出来,而非统计整个结果。
    --psize:指定ping数据包的大小。
    --no-dns:不对IP地址做域名反解析。
    --address:主机有多个IP地址时,设置发送数据包的IP地址。
    -4:只使用IPv4协议。
    -6:只使用IPv6协议。

另外,也可以在mtr运行过程中,输入类似如下的字母来快速切换模式。

?或h:显示帮助菜单。
d:切换显示模式。
n:启用或禁用DNS域名解析。
u:切换使用ICMP或UDP数据包进行探测。

Last modified on 2019-12-06