Linux 中的 traceroute 命令


介绍

traceroute” 命令是一个网络诊断工具,允许用户跟踪数据包从源计算机到目的地的路由。此工具被网络管理员和工程师广泛用于排查网络问题,例如高延迟、数据包丢失和连接问题。

Traceroute 通过向目标发送生存时间 (TTL) 值逐渐增加的数据包来工作。每个数据包到达路由器时,路由器都会将 TTL 值减 1,如果 TTL 值变为零,则丢弃该数据包。traceroute 命令侦听路由器发回的错误消息,并记录处理数据包的每个路由器的 IP 地址。

traceroute 命令可在多种操作系统上使用,包括 Linux。在本文中,我们将深入讨论 Linux 中的 traceroute 命令,包括其语法、选项以及如何使用的示例。

Traceroute 命令语法

Linux 中 traceroute 命令的基本 语法如下:

$ traceroute [options] destination

目标可以是主机名或 IP 地址。一些可与 traceroute 命令一起使用的常用选项包括:

  • -I − 使用 ICMP 回显代替 UDP 数据包

  • -T − 使用 TCP SYN 数据包代替 UDP 或 ICMP

  • -m max_ttl − 指定搜索目标的最大跳数

  • -q nqueries − 指定每个跳数的探测次数

  • -w waittime − 指定等待响应的时间(以秒为单位)

使用 -I 选项

traceroute 命令默认使用 UDP 数据包。但是,在某些情况下,路由器或防火墙可能会阻止 UDP 数据包,这可能会导致 traceroute 命令失败。在这种情况下,可以使用 -I 选项来使用 ICMP 回显代替 UDP 数据包。

$ traceroute -I www.google.com

使用 -T 选项

traceroute 命令也可以用来使用 TCP SYN 数据包而不是 UDP 或 ICMP 来追踪路由。当防火墙阻止 UDP 或 ICMP 数据包时,这很有用。

$ traceroute -T www.google.com

使用 -m 选项

traceroute 命令使用默认的最大跳数 (30) 来到达目标。但是,在某些情况下,在默认跳数内可能无法到达目标。在这种情况下,可以使用 “-m” 选项来指定搜索目标的最大跳数。

$ traceroute -m 15 www.google.com

使用 -q 选项

默认情况下,traceroute 命令每个跳数只发送一个探测。但是,在某些情况下,需要更多关于特定跳数的信息。在这种情况下,可以使用 “-q” 选项来指定每个跳数的探测次数。

$ traceroute -q 15 www.google.com

traceroute 命令的使用示例

让我们来看一些 traceroute 命令在实践中如何使用的示例。

示例 1

追踪到网站的路由

$ traceroute www.google.com
traceroute to www.google.com (142.251.46.228), 30 hops max, 60 byte packets
 1  * * *
 2  10.88.3.230 (10.88.3.230)  1.396 ms 10.88.3.228 (10.88.3.228)  1.459 ms 10.88.3.222 (10.88.3.222)  1.410 ms
…………
 9  66.249.94.29 (66.249.94.29)  3.020 ms 209.85.250.83 (209.85.250.83)  2.457 ms sfo03s27-in-f4.1e100.net (142.251.46.228)  1.309 ms

在这个例子中,traceroute 命令用于追踪到 "www.google.com" 网站的路由。输出显示处理数据包的路由器的 IP 地址和主机名,以及每个探测到达跳点并返回所花费的时间(以毫秒为单位)。我们可以看到,从源 IP “192.168.1.1” 开始,到达目的地需要 13 个跳点。最后一个跳点是 IP 地址 “142.251.46.228”,这是 "www.google.com" 网站的 IP 地址。

示例 2

追踪到 IP 地址的路由

$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
…………
 5  138.68.33.9 (138.68.33.9)  4.040 ms  4.034 ms  4.020 ms
 6  * * *
 7  142.251.70.106 (142.251.70.106)  5.344 ms dns.google (8.8.8.8)  2.114 ms  2.051 ms

在这个例子中,traceroute 命令用于追踪到 IP 地址 “8.8.8.8” 的路由,这是 Google 的公共 DNS 服务器之一。输出显示与前一个示例相同的信息,包括处理数据包的路由器的 IP 地址和主机名,以及每个探测到达跳点并返回所花费的时间(以毫秒为单位)。我们可以看到,从源 IP “192.168.1.1” 开始,到达目的地需要 7 个跳点。最后一个跳点是 IP 地址 “8.8.8.8”,这是目标 IP 地址。

结论

traceroute 命令是一个强大的网络诊断工具,允许用户跟踪数据包从源到目的地的路由。它可以通过识别出现问题的特定跳点或路由器来用于排查网络问题,例如高延迟、数据包丢失和连接问题。了解本文中讨论的 traceroute 命令、其选项和示例可以帮助网络管理员和工程师更有效地在 Linux 中诊断和解决网络问题。

更新于:2024年2月26日

5K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告