实用Mtr和Traceroute来判断网络的连通性和路由追踪

Reading time ~1 minute

1. Mtr

1.1 mtr简介

Mtr是Linux中有一个非常好的的网络连通性判断工具,它结合了ping,traceroute,nslookup 的相关特性。

一般在windows 来判断网络连通性用pingtracert,ping的话可以来判断丢包率,tracert可以用来跟踪路由,在Linux中有一个更好的网络连通性判断工具,它可以结合ping,nslookup,tracert 来判断网络的相关特性,这个命令就是mtr

1.2 命令详解

命令格式:mtr [参数] [主机]

  • mtr -h 提供帮助命令
  • mtr -v 显示mtr的版本信息
  • mtr -r 已报告模式显示
  • mtr -s 用来指定ping数据包的大小
  • mtr -n no-dns不对IP地址做域名解析
  • mtr -a 来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
  • mtr -i 使用这个参数来设置ICMP返回之间的要求默认是1秒
  • mtr -4 IPv4
  • mtr -6 IPv6
pi@raspberrypi:~ $ mtr -r www.baidu.com
HOST: raspberrypi                 Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- www.huaweimobilewifi.com   0.0%    10    5.7   8.0   5.7  10.5   1.7
  2.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
  3.|-- 100.97.1.9                 0.0%    10   26.2  41.4  26.2  83.9  17.0
  4.|-- 100.97.1.2                 0.0%    10   32.6  37.3  27.6  54.1   8.6
  5.|-- 172.31.0.4                 0.0%    10   39.3  34.0  19.8  54.1  12.1
  6.|-- 101.95.40.217              0.0%    10   26.8  26.4  20.2  39.7   5.8
  7.|-- 101.95.120.174             0.0%    10   24.2  33.4  24.2  57.5  10.9
  8.|-- 202.97.92.42               0.0%    10   29.6  39.4  26.9  57.8  11.1
  9.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
 10.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
 11.|-- 115.239.209.38             0.0%    10   32.7  37.4  24.6  61.7  13.0
 12.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
 13.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
 14.|-- 115.239.210.27             0.0%    10   35.1  31.8  26.5  43.8   5.0

1.3 结果报告说明

  • HOST:显示的是IP地址和本机域名
  • Loss%:显示的每个对应IP的丢包率,单位是%;
  • Snt:设置sent报每秒发送数据包的数量,默认值是10 可以通过参数 -c 来指定。
  • Last:最后一个包的延时;
  • Avg:所有包的平均延时,同pingAvg;
  • Best:延时最短的,同pingMin;
  • Wrst:延时最长的,同pingMax;
  • StDev:是标准偏差

2. traceroute

2.1 简介

traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

2.2 命令详解

命令格式:traceroute [参数] [主机]

  • -d 使用Socket层级的排错功能。
  • -f 设置第一个检测数据包的存活数值TTL的大小。
  • -F 设置勿离断位。
  • -g 设置来源路由网关,最多可设置8个。
  • -i 使用指定的网络界面送出数据包。
  • -I 使用ICMP回应取代UDP资料信息。
  • -m 设置检测数据包的最大存活数值TTL的大小。
  • -n 直接使用IP地址而非主机名称。
  • -p 设置UDP传输协议的通信端口。
  • -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -t 设置检测数据包的TOS数值。
  • -v 详细显示指令的执行过程。
  • -w 设置等待远端主机回报的时间。
  • -x 开启或关闭数据包的正确性检验。
pi@raspberrypi:~ $ traceroute www.baidu.com
traceroute to www.baidu.com (115.239.210.27), 30 hops max, 60 byte packets
 1  www.huaweimobilewifi.com (192.168.8.1)  29.969 ms  29.929 ms  30.182 ms
 2  * * *
 3  100.97.1.9 (100.97.1.9)  73.905 ms  77.927 ms  78.063 ms
 4  100.97.1.2 (100.97.1.2)  70.830 ms  70.449 ms  70.662 ms
 5  172.31.0.4 (172.31.0.4)  77.567 ms  77.662 ms  77.447 ms
 6  101.95.40.177 (101.95.40.177)  78.388 ms 101.95.40.217 (101.95.40.217)  38.071 ms 101.95.89.229 (101.95.89.229)  58.613 ms
 7  61.152.86.58 (61.152.86.58)  69.650 ms 101.95.88.6 (101.95.88.6)  48.548 ms 61.152.86.2 (61.152.86.2)  54.820 ms
 8  * * 202.97.92.42 (202.97.92.42)  55.791 ms
 9  220.191.200.30 (220.191.200.30)  50.032 ms 220.191.200.138 (220.191.200.138)  56.259 ms 220.191.200.126 (220.191.200.126)  58.008 ms
10  * * *
11  115.239.209.38 (115.239.209.38)  48.987 ms 115.239.209.10 (115.239.209.10)  51.455 ms 115.239.209.18 (115.239.209.18)  35.978 ms
12  * * *
13  * * *

2.3 结果报告说明

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。

有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。

如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

2.4 Mac下traceroute的使用

在Spotlight中搜索网络实用工具,选择Traceroute即可使用;

Alt text

转载请注明出处:
文章地址: 实用Mtr和Traceroute来判断网络的连通性和路由追踪
作者: mraxu