如何使用 Traceroute 和 MTR 诊断网络问题

介绍

管理服务器的一个重要部分是监控网络连接。

有一些工具易于使用,但值得了解。在本指南中,我们将讨论如何使用称为traceroute诊断可能发生网络问题的工具的工具

我们还将查看一个名为的实用程序mtr,它将 ping 和 traceroute 的大部分功能组合到一个界面中。

如何使用跟踪路由

traceroute是一个显示远程服务器路径的简单工具。这可以是从您尝试访问的网站到本地网络上的打印机的任何内容。

traceroute程序默认安装在几乎每个 Linux 发行版上,因此您不需要安装它。

要调用它,我们只需要提供一个我们想要探索的网站或 IP 地址:

  • traceroute google.com

您将收到类似于以下内容的输出:

Output
traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets 1 192.241.160.253 (192.241.160.253) 0.564 ms 0.539 ms 0.525 ms 2 192.241.164.241 (192.241.164.241) 0.487 ms 0.435 ms 0.461 ms 3 xe-3-0-6.ar2.nyc3.us.nlayer.net (69.31.95.133) 1.801 ms 1.802 ms 1.762 ms 4 144.223.28.73 (144.223.28.73) 0.583 ms 0.562 ms 0.550 ms 5 144.232.1.21 (144.232.1.21) 1.044 ms 1.048 ms 1.036 ms 6 74.125.49.212 (74.125.49.212) 0.494 ms 0.688 ms 0.643 ms 7 209.85.248.180 (209.85.248.180) 0.650 ms 209.85.248.178 (209.85.248.178) 0.621 ms 0.625 ms 8 72.14.236.208 (72.14.236.208) 0.618 ms 72.14.236.206 (72.14.236.206) 0.898 ms 72.14.236.208 (72.14.236.208) 0.872 ms 9 72.14.239.93 (72.14.239.93) 7.478 ms 7.989 ms 7.466 ms 10 72.14.232.73 (72.14.232.73) 20.002 ms 19.969 ms 19.975 ms 11 209.85.248.228 (209.85.248.228) 30.490 ms 72.14.238.106 (72.14.238.106) 34.463 ms 209.85.248.228 (209.85.248.228) 30.707 ms 12 216.239.46.54 (216.239.46.54) 42.502 ms 42.507 ms 42.487 ms 13 216.239.46.159 (216.239.46.159) 76.578 ms 74.585 ms 74.617 ms 14 209.85.250.126 (209.85.250.126) 80.625 ms 80.584 ms 78.514 ms 15 72.14.238.131 (72.14.238.131) 80.287 ms 80.560 ms 78.842 ms 16 209.85.250.228 (209.85.250.228) 171.997 ms 173.668 ms 170.068 ms 17 66.249.94.93 (66.249.94.93) 238.133 ms 235.851 ms 235.479 ms 18 72.14.233.79 (72.14.233.79) 233.639 ms 239.147 ms 233.707 ms 19 sin04s01-in-f9.1e100.net (173.194.38.137) 236.241 ms 235.608 ms 236.843 ms

第一行告诉我们 traceroute 运行的条件:

Output
traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets

它给出了指定的主机、DNS 为该域返回的 IP 地址、要检查的最大跃点数以及将使用的数据包的大小。

可以用-m标志调整最大跳数如果您尝试路由到的主机距离超过 30 跳,您可能需要在此处指定更大的值。您可以设置的最大值为 255。

  • traceroute -m 255 obiwan.scrye.net

您可以通过在主机名后提供整数来调整发送到每个跃点的数据包的大小:

  • traceroute google.com 70

你会看到这样的输出:

Output
traceroute to google.com (173.194.38.128), 30 hops max, 70 byte packets 1 192.241.160.254 (192.241.160.254) 0.364 ms 0.330 ms 0.319 ms 2 192.241.164.237 (192.241.164.237) 0.284 ms 0.343 ms 0.321 ms

在第一行之后,后续的每一行代表一个“跃点”,或中间主机,您的流量必须通过它才能到达您指定的主机所代表的计算机。

每行具有以下格式:

Output
hop_number host_name (IP_address) packet_round_trip_times

以下是您可能会看到的跃点示例:

Output
3 nyk-b6-link.telia.net (62.115.35.101) 0.311 ms 0.302 ms 0.293 ms

以下是每个字段的含义:

  • hop_number:主机与您的计算机的分离度数的顺序计数。来自数量较多的主机的流量必须经过更多的计算机才能进行路由。
  • host_name:此字段包含对主机 IP 地址进行反向 DNS 查找的结果(如果可用)。如果反向 DNS 查询没有返回任何信息,则给出 IP 地址本身。
  • IP_address:此字段包含此网络跃点的 IP 地址。
  • packet_round_trip_times:该行的其余部分给出了数据包到主机并返回的往返时间。默认情况下,三个数据包被发送到每个主机,每次尝试都附加到行尾。

如果您想更改针对每个主机测试的数据包数量,您可以使用该-q选项指定一个数量,如下所示:

  • traceroute -q1 google.com

如果您想放弃反向 DNS 查找以加快跟踪速度,您可以传递以下-n标志:

  • traceroute -n google.com

你会得到这样的输出:

Output
traceroute to google.com (74.125.235.7), 30 hops max, 60 byte packets 1 192.241.160.253 0.626 ms 0.598 ms 0.588 ms 2 192.241.164.241 2.821 ms 2.743 ms 2.819 ms 3 69.31.95.133 1.470 ms 1.473 ms 1.525 ms

如果您的 traceroute 分解为一些星号 (*),则表示到主机的路由有问题。

Output
... 15 209.85.248.220 (209.85.248.220) 121.809 ms 72.14.239.12 (72.14.239.12) 76.941 ms 209.85.248.220 (209.85.248.220) 78.946 ms 16 72.14.239.247 (72.14.239.247) 101.001 ms 92.478 ms 92.448 ms 17 * * 209.85.250.124 (209.85.250.124) 175.083 ms 18 * * * 19 * * *

路由问题是什么意思?

如果您的 traceroute 尝试在特定的跃点或节点处停止并且无法找到到主机的路由,那么您就有问题了。

虽然路由未能返回的跃点可能是网络问题的位置,但诊断并不总是那么容易。

由于每个 ping 代表一个往返数据包,并且数据包通常在任一方向使用不同路径的情况,这可能表明在完全不同的、可能更近的路由中出现问题。

也可能是问题出在您看到的最后一跳之后的一跳。除非您可以从该特定跃点获得返回跟踪路由,否则很难诊断问题的确切位置。这在您自己的网络之外通常是不可能的。

如何使用港铁

traceroute 程序的动态替代方案是mtr. 结合 ping 和 traceroute 的功能,mtr 允许您不断轮询远程服务器并查看延迟和性能如何随时间变化。

与 traceroute 不同,大多数系统默认不安装 mtr。您可以通过键入以下命令来获取它。

Ubuntu/Debian:

  • sudo apt-get install mtr

CentOS/Fedora:

  • yum install mtr

拱:

  • pacman -S mtr

安装后,您可以通过键入以下内容调用它:

  • mtr google.com

你会收到这样的输出:

Output
My traceroute [v0.80] traceroute (0.0.0.0) Tue Oct 22 20:39:42 2013 Resolver: Received error response 2. (server failure)er of fields q uit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 192.241.160.253 0.0% 371 0.4 0.6 0.1 14.3 1.0 2. 192.241.164.241 0.0% 371 7.4 2.5 0.1 37.5 4.8 3. xe-3-0-6.ar2.nyc3.us. 2.7% 371 3.6 2.6 1.1 5.5 1.1 4. sl-gw50-nyc-.sprintli 0.0% 371 0.7 5.0 0.1 82.3 13.1

虽然输出可能看起来相似,但与 traceroute 相比的一大优势是输出会不断更新。这允许您累积趋势和平均值,还允许您查看网络性能如何随时间变化。

如果您运行了 traceroute,则发送到每个跃点的数据包可能会顺利通过,即使在路由间歇性丢失数据包的情况下也是如此。mtr 实用程序允许您通过在更广泛的时间范围内收集数据来监视这种情况。

也可以使用--report选项运行 mtr ,它返回向每跳发送 10 个数据包的结果。

  • mtr --report google.com

该报告如下所示:

Output
HOST: traceroute Loss% Snt Last Avg Best Wrst StDev 1.|-- 192.241.160.254 0.0% 10 1.5 0.9 0.4 1.5 0.4 2.|-- 192.241.164.237 0.0% 10 0.6 0.9 0.4 2.7 0.7 3.|-- nyk-b6-link.telia.net 0.0% 10 0.5 0.5 0.2 0.7 0.2 4.|-- nyk-bb2-link.telia.net 0.0% 10 67.5 18.5 0.8 87.3 31.8

当您不一定要实时测量,但需要比 traceroute 提供的数据范围更大的数据时,这会很有用。

结论


使用traceroutemtr,您可以了解在前往特定域或地址的途中哪些服务器导致了问题。这在对内部网络进行故障排除时以及在遇到网络问题时尝试提供信息以支持成员或 ISP 时非常有用。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁