traceroute+mtr

traceroute与mtr

 

traceroute

 

图片

 

 

    1. 从源地址发出一个UDP探测包到目的地址,并将TTL设置为1;

    2. 到达路由器时,将TTL减1;

    3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;

    4. 当源地址收到该ICMP包时,显示这一跳路由信息;

    5. 重复1~5,并每次设置TTL加1;

    6. 直至目标地址收到探测数据包,并返回端口不可达通知(ICMP Port Unreachable);

    7. 当源地址收到ICMP Port Unreachable包时停止traceroute。

      1. 注:
      2. 1. LinuxMac OS等系统使用UDP包进行探测,目标端口号默认为33434,每次探测目标端口号加1Traceroute故意使用了一个大于 30000 的目标端口号,以保证目标地址收到数据包后能够返回一个“端口不可达”的 ICMP 报文,于是源地址就可将端口不可达报文当作跟踪结束的标志。
      3. 2.每个探测包都有唯一的标识号,使得Traceroute能够识别返回的包。UDP数据包使用递增的目标端口号进行标识。
      4. traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
 

1.命令格式:

 

 

  1. traceroute[参数][主机]

2.命令功能:

 

 

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

 

 

3.命令参数:

 

 

  1. -d 允许进行socket级别的调试(当Linux kernel支持它的时候)Enable socket level debugging (when the Linux kernel supports it)
  2. -f 设置第一个检测数据包的存活数值TTL的大小。
  3. -F `“不要分段Don't Fragment”`位置位。这将告诉中间路由器不要将该包分段(当路由器发现该探测包对于网络中MTU来说太大的时候)
  4. -g 设置来源路由网关,最多可设置8个。
  5. -i 使用指定的网络接口送出数据包。
  6. -I 使用ICMP回应取代UDP资料信息。
  7. -T 对探测使用TCP SYN
  8. -m 设置检测数据包的最大存活数值TTL的大小。默认30
  9. -n 直接使用IP地址而非主机名称。
  10. -p port 设置要使用的目标端口。要么是“默认”方法的初始udp端口值(按每个探测递增,默认值为33434),或“icmp”的初始序列(也递增,默认值为1),或某个固定目标其他方法的端口(默认为80tcp”,53代表“udp”等)
  11. -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
  12. -s 设置本地主机送出数据包的IP地址。源地址
  13. -t 设置检测数据包的TOS数值。
  14. 对于IPv 4,设置服务类型(TOS)和优先级值。有用的值是16(低延迟)和8(高吞吐量)。注意,为了使用一些TOS优先级值,您必须是超级用户。对于IPv 6,设置流量控制值
  15. -v 详细显示指令的执行过程。
  16. -w 指定等待应答的时间,默认5s
  17. -q nqueries设置每个跳的探测数据包数。默认为3
  18. -z 探测之间的最小时间间隔(默认为0)。如果值大于10,则它指定一个以毫秒为单位的数字,否则为秒数(浮点值也允许)。当某些路由器对icmp消息使用速率限制时非常有用。
  19. -M traceroute操作使用指定的方法。默认的传统udp方法名为默认情况下,icmp(-I)和tcp(-T)分别有icmptcp名称。方法特定的选项可以通过-O传递。大多数方法都有其简单的快捷方式,(-I意思是-M icmp等)。
  20. -O 指定一些特定于方法的选项。几个选项用逗号分隔(或在cmdline上使用多个-O)。
  21. -U 使用UDP对特定的目标端口进行跟踪(而不是增加每个探针的端口)。默认端口为53(DNS)
  22. -P protocol 使用指定协议的原始数据包进行跟踪路由。默认协议是253rfc3692)。

例1:traceroute 用法简单、最常用的用法

 

 

命令:

 

 

  1. traceroute www.baidu.com
  2. 输出
  3. traceroute to www.baidu.com (220.181.38.149), 30 hops max, 60 byte packets
  4. 1 bogon (192.168.0.1) 11.205 ms 11.283 ms 15.513 ms
  5. 2 bogon (10.18.0.1) 18.147 ms 18.089 ms 18.013 ms
  6. 3 bogon (172.17.4.53) 18.811 ms 18.737 ms 18.667 ms
  7. 4 bogon (172.17.2.74) 17.919 ms 17.877 ms 17.813 ms
  8. 5 bogon (172.17.3.73) 18.413 ms 18.358 ms 18.300 ms
  9. 6 1.193.202.1.static.bjtelecom.net (1.202.193.1) 42.078 ms 23.129 ms 6.226 ms
  10. 7 * * *
  11. 8 36.110.244.46 (36.110.244.46) 12.896 ms 18.089 ms 19.891 ms
  12. 9 36.110.244.94 (36.110.244.94) 21.361 ms 36.110.244.90 (36.110.244.90) 20.628 ms *
  13. 10 220.181.182.30 (220.181.182.30) 19.863 ms 220.181.182.170 (220.181.182.170) 19.821 ms 220.181.182.178 (220.181.182.178) 19.759 ms
  14. 11 * * *
  15. 12 * * *
  16. 30 * * *

说明:

 

 

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;

 

 

Traceroute每跳默认发送3个探测包(发包的数量可通过-q进行设置),探测包的返回会受到网络情况的影响。如果防火墙封掉了ICMP的返回信息,那么相应的延时位置会以*显示。如果某台网关阻塞或者某台DNS出现问题,那么相应行的延时会变长。可以加-n 参数来避免DNS解析,以IP格式输出数据。

 

 

  1. traceroute 主要利用 IP 数据包的 TTL 字段值 + ICMP 来实现,它发送的用于探测网络路径的数据包的 IP 之上的协议可以是 UDPTCPICMP
  2. 不同模式下,探测过程中设计的数据包如下:
  3. UDP 模式
  4. UDP 探测数据包(目标端口大于 30000 + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Destination Unreachable 数据包
  5. TCP 模式
  6. TCP [SYN] 探测数据包(目标端口为 Web 服务的 80 + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 TCP [SYN ACK] 数据包
  7. ICMP 模式
  8. ICMP Echo (ping) Request 探测数据包 + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Echo (ping) reply 数据包

MTR

 

运行Mtr指定一个IP地址,Mtr会查看运行Mtr的主机和指定目标主机之间的网络节点。在确定目标主机和本地主机间每个网络节点的IP地址后,它向每个网络节点发送一个ICMP ECHO请求,以确定到每个节点的链路的质量。就像这样它会打印到每个节点的运行统计信息。通过这个工具我们可以大概定位到网络出问题的节点,再来具体分析。

 

 

查看mtr的参数

 

 

  1. mtr -h 提供帮助命令
  2. mtr -v 显示mtr的版本信息
  3. mtr -r 已报告模式显示
  4. mtr -w 选项标志使用主机名
  5. mtr -c 设置每秒发送数据包的数量
  6. mtr -s 用来指定ping数据包的大小
  7. mtr -n no-dns不对IP地址做域名解析
  8. mtr -a 来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
  9. mtr -i 使用这个参数来设置ICMP返回之间的要求默认是1秒。因此将其设置为十分之几秒(0.1,0.2等)通常很有帮助。
  10. mtr -u 使用UDP数据报而不是ICMP ECHO
  11. mtr -4 IPv4
  12. mtr -6 IPv6

例1
mtr -r -c 30 -s 1024 -n www.baidu.com

 

 

  1. [root@master ~]# mtr -r -c 30 -s 1024 -n www.baidu.com
  2. HOST: master Loss% Snt Last Avg Best Wrst StDev
  3. 1. 192.168.0.1 3.3% 30 5.1 10.2 1.8 33.8 7.8
  4. 2. 10.18.0.1 0.0% 30 7.0 10.7 3.3 40.7 9.5
  5. 3. 172.17.4.53 0.0% 30 5.4 10.4 3.6 32.0 7.8
  6. 4. ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
  7. 5. 172.17.3.73 3.3% 30 10.4 11.9 4.3 25.5 6.5
  8. 6. 1.202.193.1 0.0% 30 19.8 20.3 4.5 106.8 24.3
  9. 7. ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
  10. 8. 36.110.244.46 93.3% 30 9.0 17.4 9.0 25.8 11.8
  11. 9. 36.110.246.242 33.3% 30 32.0 16.2 7.0 55.5 11.0
  12. 10. 220.181.17.18 0.0% 30 5.9 17.0 5.9 49.2 11.2
  13. 11. ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
  14. 12. ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
  15. 13. ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
  16. 14. ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
  17. 15. 220.181.38.150 0.0% 24 22.9 14.2 7.7 26.4 5.5

报告说明:

 

 

第一列:显示的是IP地址和本机域名
第二列:是显示的到每个对应节点IP的丢包率
第三列:snt:30 设置每秒发送数据包的数量,默认值是10 可以通过参数 -c来指定。
第四列:显示到对应节点最后一次值的返回时延(毫秒)
第五列:发送的数据包到对应节点返回的平均(average)时延(毫秒)
第六列:发送的数据包到对应节点返回的最好或者说时延最短的(毫秒)
第七列:发送的数据包到对应节点返回的最差或者说时延最常的(毫秒)
第八列:每个节点时延的标准偏差(standard deviation )(毫秒)

 

 

  1. #注:
  2. 在大多数情况下,averageAvg)列是关注的焦点。
  3. 最后一列StDev提供了每个主机的延迟标准偏差。标准差越大,延迟测量之间的差异越大。标准偏差允许您评估所提供的平均值(平均值)是否代表数据集的真实中心,或者是否因某种现象或测量误差而偏斜。如果标准偏差很高,请查看最佳和最差延迟测量,以确保平均值是实际延迟的良好表示,而不是太大波动的结果。

1、为什么提示有???
问号:是因为该节点防火墙封掉了ICMP的返回信息,所以我们得不到相关的数据包返回数据。

 

 

2、为什么中间某些节点有丢包而后面节点有没有丢包了:
对于MTR报告我们主要关注丢包率和延时。如果在Loss% 列有丢包,说明这一跳可能有问题。但是,ISP会人为的限制ICMP的速率,这也会导致丢包现象。

 

 

3、如何排除是限速干扰了?
我们只需要观察丢包的下一跳或者后面几跳是否有丢包率为0的情况,如果有,则说明是设备本身的干扰。
判定理由:如果中间路由某跳确实丢包,那么后续节点肯定收不到预定的数据包数量了。对于MTR测试结果,一般首先看最后一跳,如果最后一跳有丢包,那么这个分析才是有意义的。

 

 

例2
mtr -r -n www.google.com

 

 

  1. [root@master ~]# mtr -r -n www.google.com
  2. HOST: master Loss% Snt Last Avg Best Wrst StDev
  3. 1. 192.168.0.1 0.0% 10 6.5 5.8 1.4 12.5 3.9
  4. 2. 10.18.0.1 0.0% 10 3.6 6.3 2.6 12.2 3.8
  5. 3. 172.17.4.53 0.0% 10 3.3 9.0 2.9 27.5 9.5
  6. 4. 172.17.2.74 0.0% 10 11.9 7.4 2.8 14.5 4.2
  7. 5. 172.17.3.73 0.0% 10 8.1 11.1 4.4 34.8 8.8
  8. 6. 1.202.193.1 0.0% 10 9.8 24.5 6.8 84.9 25.3
  9. 7. 106.120.235.13 60.0% 10 6.4 20.5 6.4 54.1 22.7
  10. 8. 219.141.135.174 0.0% 10 8.4 13.4 5.1 48.5 12.7
  11. 9. ??? 100.0 10 0.0 0.0 0.0 0.0 0.0

流量确实到达目标主机。但是,MTR报告显示丢失,因为目标主机未发送回复。这可能是由于未正确配置的网络或防火墙(iptables)规则导致主机丢弃ICMP数据包的结果。

posted @ 2021-03-16 10:25  zhangshan  阅读(44)  评论(0编辑  收藏  举报