不管是做网络管理还是做系统运维,都会出现一些网络链路问题,大多数人都知道PING命令,可以简单的测试网络的连通性,但是却无法确定是在哪里出现了问 题,有些人就会用tracert命令来查看途经路由,或者用nslookup命令来查看DNS是否可用(话说这命令我都没怎么用过),如果三个命令都用的 话就太浪费时间了,也太麻烦了,但是如果只用其中一个命令的话,又不好排查,这时候就要用到mtr命令了,Mtr是 Linux中有一个非常棒的网络连通性判断工具,它结合了ping, tracert,nslookup 的相关特性。
首先安装mtr
# yum -y install mtr

安装完成后我们来试一下
# mtr www.sohu.com
                                                      My traceroute  [v0.71]
localhost.localdomain (0.0.0.0)                                                                            Thu Aug  7 19:23:17 2014
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                                                                  Packets               Pings
 Host                                                                                           Loss%  Last   Avg  Best  Wrst StDev
 1. 192.168.6.254                                                                                0.0%   1.3   2.6   1.2  23.5   4.2
 2. 192.168.0.253                                                                               97.3%   1.4   1.4   1.4   1.4   0.0
 3. 123.127.236.129                                                                              0.0%   3.0   3.2   2.2  13.7   2.0
 4. 61.148.158.117                                                                              41.7%   2.3   2.6   2.3   4.5   0.5
 5. 124.65.60.77                                                                                 0.0%   3.5   4.7   2.4   8.5   1.3
 6. bt-229-066.bta.net.cn                                                                        0.0%   2.5   6.3   2.1 114.6  18.5
 7. ???
 8. 123.125.116.12                                                                               0.0%   1.9   2.3   1.8  12.0   1.7
看起来还挺高大上的啊;
其中Host列是途经的IP或本机域名
Loss%列就是对应IP行的丢包率了,值得一提的是,只有最后的目标丢包才算是真正的丢包
Last列则是最后一次返回的延迟,按毫秒计算的
Avg列是所有返回时延的一个平均值
Best列是最快的一次返回时延
Wrst列是最长的一次返回时延
StDev列是标准偏差

接下来就是命令参数了:
mtr -s 用来指定ping数据包的大小
mtr -n no-dns不对IP地址做域名解析
mtr -a 来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
mtr -i 使用这个参数来设置ICMP返回之间的要求默认是1秒
mtr -c 是ping的次数。使用方法跟ping命令一样
mtr -4 IPv4
mtr -6 IPv6
所谓的IPv4和IPv6,现在基本上用不到呢还,我们基本上来测试链路连通性都是这么打的
mtr -i 0.1 -n -c 100 IP或域名
这么打的意思是每0.1秒返回一次结果,ping100次,并且不对IP地址做域名解析,是不是很高大上呢?小伙伴们快去试试吧~