您的位置:

Linux运维:使用traceroute进行网络诊断

一、traceroute简介

traceroute是一个用于诊断网络故障的工具,它能够显示数据包从源到目的地经过的所有路由器(包括路由器名称和IP地址),并显示每个路由器的响应时间。traceroute的工作原理是向目的地发送一系列数据包,每次将TTL(Time To Live)值设置为逐渐增大的数值,这样当数据包在经过路由器时,TTL值会减少,当TTL值为0时,数据包就会被丢弃并发回来一个“Time Exceeded”消息,这样就能得到每一跳的路由器的IP地址。

二、使用traceroute进行网络诊断

traceroute命令的使用格式为:

traceroute [-FIldnrvx] [-f <第一个TTL>] [-m <最大跳数>] [-p <端口号>] [-q <流量>] [-s <源IP地址>] [-t <type of service>] [-w <超时时间>] [-z <分组大小>] 主机名/IP地址

其中,常用的选项有:

  • -I:使用ICMP Echo请求作为数据包的载荷。
  • -F:设置Do not Fragment标志位,防止数据包在传输时被分片。
  • -l:使用小于数据包默认长度的数据包。
  • -d:启用调试模式,显示SOCKET I/O。
  • -n:直接使用IP地址而不进行DNS解析。
  • -m:指定最大跳数。
  • -p:指定端口号。
  • -q:指定每个跳点要发送的数据包数量。
  • -s:指定源IP地址。
  • -t:指定IP包的Type of Service。
  • -w:指定等待超时的时间。
  • -z:设置每个分组的大小。
  • -v:显示IP地址的具体信息。
  • -x:使用专用IP地址进行扫描,忽略ICMP重定向报文。

三、traceroute实例

1. 普通使用

执行traceroute www.baidu.com命令,可以得到类似以下的结果:

traceroute to www.baidu.com (39.156.69.79), 30 hops max, 60 byte packets
1  192.168.1.1 (192.168.1.1)  1.089 ms  1.298 ms  1.275 ms
2  1.222.178.1 (1.222.178.1)  7.118 ms  7.210 ms  7.329 ms
3  * * *
4  1.222.68.209 (1.222.68.209)  12.829 ms  12.912 ms  13.001 ms
5  1.222.69.30 (1.222.69.30)  17.157 ms  17.221 ms  17.338 ms
6  119.147.218.169 (119.147.218.169)  19.982 ms  20.015 ms  19.997 ms
7  202.97.51.253 (202.97.51.253)  28.971 ms 202.97.34.85 (202.97.34.85)  29.112 ms 202.97.34.89 (202.97.34.89)  29.064 ms
8  218.30.54.186 (218.30.54.186)  28.963 ms 202.97.49.173 (202.97.49.173)  74.891 ms  74.863 ms
9  61.148.56.169 (61.148.56.169)  63.126 ms 61.148.56.161 (61.148.56.161)  64.650 ms  61.148.56.169 (61.148.56.169)  63.119 ms
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

结果显示,从本机到百度服务器的路径上,经过了多个路由器。第一个数字表示路由器的跳数,下面的IP地址表示经过该路由器时的IP地址。

2. 使用-t指定Type of Service值

执行traceroute -t 10 www.baidu.com命令,使用Type of Service为10的IP包进行网络测试:

traceroute to www.baidu.com (220.181.57.216), 30 hops max, 60 byte packets
1  192.168.1.1 (192.168.1.1)  2.071 ms  2.292 ms  2.269 ms
2  1.222.178.1 (1.222.178.1)  6.641 ms  6.727 ms  6.851 ms
3  * * *
4  1.222.68.209 (1.222.68.209)  12.545 ms  12.628 ms  12.715 ms
5  1.222.69.30 (1.222.69.30)  16.986 ms  17.049 ms  17.171 ms
6  119.147.218.169 (119.147.218.169)  19.546 ms  19.570 ms  19.575 ms
7  202.97.68.105 (202.97.68.105)  29.477 ms 202.97.51.245 (202.97.51.245)  29.620 ms 202.97.34.93 (202.97.34.93)  29.559 ms
8  202.97.61.77 (202.97.61.77)  28.773 ms  28.744 ms 218.30.54.190 (218.30.54.190)  29.248 ms
9  61.148.56.169 (61.148.56.169)  63.751 ms  62.307 ms  62.845 ms
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

关于Type of Service的具体含义,可以参考RFC 2474。

3. 使用-m指定最大跳数

执行traceroute -m 10 www.baidu.com命令,设置最大跳数为10,即只会跟踪前10个路由器:

traceroute to www.baidu.com (39.156.69.79), 10 hops max, 60 byte packets
1  192.168.1.1 (192.168.1.1)  0.935 ms  1.168 ms  1.144 ms
2  1.222.178.1 (1.222.178.1)  11.002 ms  11.105 ms  11.247 ms
3  * * *
4  1.222.68.209 (1.222.68.209)  16.654 ms  16.736 ms *
5  * * *
6  180.130.250.14 (180.130.250.14)  39.022 ms  39.160 ms 180.149.128.126 (180.149.128.126)  39.381 ms
7  202.97.51.61 (202.97.51.61)  46.259 ms * 202.97.51.85 (202.97.51.85)  49.396 ms
8  * * *
9  39.156.69.79 (39.156.69.79)  58.030 ms * *

可以看到,traceroute只跟踪了前10个路由器,后面的路由器没有被显示出来。

4. 使用-q指定每个跳点要发送的数据包数量

执行traceroute -q 3 www.baidu.com命令,设置每个跳点要发送的数据包数量为3:

traceroute to www.baidu.com (39.156.69.79), 30 hops max, 60 byte packets
1  192.168.1.1 (192.168.1.1)  0.992 ms  1.328 ms  1.304 ms
2  1.222.178.1 (1.222.178.1)  6.918 ms  7.113 ms  7.195 ms
3  * * *
4  1.222.68.209 (1.222.68.209)  13.710 ms  13.803 ms  13.891 ms
5  1.222.69.30 (1.222.69.30)  18.151 ms  18.214 ms  18.338 ms
6  119.147.218.169 (119.147.218.169)  20.956 ms  20.989 ms  20.971 ms
7  202.97.51.245 (202.97.51.245)  28.586 ms  202.97.51.61 (202.97.51.61)  29.673 ms 202.97.34.93 (202.97.34.93)  29.482 ms
8  218.30.54.186 (218.30.54.186)  28.861 ms  201.97.49.173 (201.97.49.173)  74.316 ms  74.287 ms
9  61.148.56.169 (61.148.56.169)  63.316 ms 61.148.56.161 (61.148.56.161)  63.599 ms  62.208 ms
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

可以看到,traceroute向每个跳点都发送了3个数据包。

四、总结

traceroute是一个非常常用的网络诊断工具,它可以帮助我们找到网络故障的原因。通过对traceroute的学习,我们可以深入了解网络通信的原理和各种路由器的工作方式,为我们的网络诊断工作提供有力的支持。

Linux运维:使用traceroute进行网络诊断

2023-05-13
基础命令行技巧:打造高效Linux运维效率

2023-05-13
Linux运维必备:深入理解traceroute命令实现网络

2023-05-13
使用traceroute探查网络故障

2023-05-13
探究网络路径:linux traceroute的功能与使用

一、traceroute的基本概念 traceroute命令可以用来探索数据从源设备到目标设备所经过的路径。它通过发送一系列的数据包,每次递增TTL值,并对每一个包进行时间测量,来获取到达目标设备所需

2023-12-08
Linux系统管理:高效运维者的必备技能

一、系统安装 系统安装是Linux运维的第一步,正确的安装可以使系统更加稳定,提高运维效率。下面是一个CentOS系统安装示例: #下载CentOS镜像文件 wget -c http://mirror

2023-12-08
Linux笔记

2023-05-22
Linux路由追踪

2023-05-19
mtr工具详解

2023-05-19
Traceroute程序详解

2023-05-20
Linux日志命令:记录系统运行状况

2023-05-13
Linux运维必备:使用netstat命令查看网络连接状态

2023-05-13
追踪数据包路由的工具使用方法

2023-05-13
Linux查询命令与使用场景

2023-05-13
高级Linux命令行用法大全,让你成为Linux终端大师

2023-05-13
Linux查看网关命令详解

2023-05-18
网络排错利器——使用traceroute命令定位网络故障位置

2023-05-13
Linux命令大全-提高运维效率

2023-05-13
Linux中查看网络状态的命令及用法

2023-05-13
使用Linux命令追踪网络路由

2023-05-13