如何使用跟踪路由和 MTR 诊断网络问题

介绍

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

在本指南中,我们将讨论如何使用名为traceroute的工具来诊断网络问题可能发生的地方。

我们还将考虑一个名为mtr的实用程序,该实用程序将 ping 和 traceroute 的许多功能结合到一个界面中。

如何使用 Traceroute

traceroute是一个简单的工具来显示通往远程服务器的路径,可以是您正在尝试访问的网站到本地网络上的打印机。

traceroute程序默认安装在几乎每个Linux发行版上,所以您不应该安装它。

为了称呼它,我们只需要提供一个网站或IP地址,我们想探索:

1traceroute google.com

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

 1[secondary_label Output]
 2traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets
 3  1 192.241.160.253 (192.241.160.253)  0.564 ms 0.539 ms 0.525 ms
 4  2 192.241.164.241 (192.241.164.241)  0.487 ms 0.435 ms 0.461 ms
 5  3 xe-3-0-6.ar2.nyc3.us.nlayer.net (69.31.95.133)  1.801 ms 1.802 ms 1.762 ms
 6  4 144.223.28.73 (144.223.28.73)  0.583 ms 0.562 ms 0.550 ms
 7  5 144.232.1.21 (144.232.1.21)  1.044 ms 1.048 ms 1.036 ms
 8  6 74.125.49.212 (74.125.49.212)  0.494 ms 0.688 ms 0.643 ms
 9  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
10  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
11  9 72.14.239.93 (72.14.239.93)  7.478 ms 7.989 ms 7.466 ms
1210 72.14.232.73 (72.14.232.73)  20.002 ms 19.969 ms 19.975 ms
1311 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
1412 216.239.46.54 (216.239.46.54)  42.502 ms 42.507 ms 42.487 ms
1513 216.239.46.159 (216.239.46.159)  76.578 ms 74.585 ms 74.617 ms
1614 209.85.250.126 (209.85.250.126)  80.625 ms 80.584 ms 78.514 ms
1715 72.14.238.131 (72.14.238.131)  80.287 ms 80.560 ms 78.842 ms
1816 209.85.250.228 (209.85.250.228)  171.997 ms 173.668 ms 170.068 ms
1917 66.249.94.93 (66.249.94.93)  238.133 ms 235.851 ms 235.479 ms
2018 72.14.233.79 (72.14.233.79)  233.639 ms 239.147 ms 233.707 ms
2119 sin04s01-in-f9.1e100.net (173.194.38.137)  236.241 ms 235.608 ms 236.843 ms

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

1[secondary_label Output]
2traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets

它会给出指定的主机、DNS 返回该域的 IP 地址、可检查的最大跳跃次数以及将使用的包的大小。

最大跳跃数可以通过m旗调节。如果您试图路由的主机距离您超过 30 跳跃,您可能需要在这里指定更大的值。

1traceroute -m 255 obiwan.scrye.net

您可以通过在主机名之后给出整数来调整发送给每个 hop 的包的大小:

1traceroute google.com 70

你会看到这样的输出:

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

在第一个行之后,每个接下来的行代表一个跳跃,或中间主机,您的流量必须通过,以达到您指定的主机所代表的计算机。

每一行都有以下格式:

1[secondary_label Output]
2hop_number host_name   (IP_address)  packet_round_trip_times

以下是你可能看到的跳跃的例子:

1[secondary_label Output]
23 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:此字段包含这个网络 hop的IP地址。

如果您想更改对每个主机进行测试的包数量,您可以用 -q 选项指定一个数字,如下:

1traceroute -q1 google.com

如果您想放弃反向DNS搜索以加快跟踪,您可以通过n旗:

1traceroute -n google.com

你会得到这样的输出:

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

如果您的路径溶解成一些星座 (*),则与通往主机的路径存在问题。

1[secondary_label Output]
2...
3  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
4  16 72.14.239.247 (72.14.239.247)  101.001 ms 92.478 ms 92.448 ms
5  17  * * 209.85.250.124 (209.85.250.124)  175.083 ms
6  18  * * *
7  19  * * *

一条路线是什么意思

如果您的追踪路径尝试在特定跳跃或节点中停止,并且无法找到通往主机的路径,则存在问题。

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

由于每一个 ping 都代表一个环游包,并且由于包通常在两个方向使用不同的路径,这可能表明一个完全不同的路径存在问题,可能更接近。

也可能是问题是在你看到的最后一个跳跃后直接出现的跳跃。很难诊断出问题的确切位置,除非你能从那个特定跳跃中获得回路线。

如何使用MTR

一个动态的替代方案是mtr。结合 ping 和 traceroute 的功能,mtr 允许您不断调查远程服务器,并看到延迟和性能如何随着时间的推移而变化。

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

Ubuntu 和 Debian:

1sudo apt-get install mtr

CentOS / 费多拉:

1yum install mtr

阿克:

1pacman -S mtr

一旦安装,您可以通过键入呼叫它:

1mtr google.com

你会收到这样的输出:

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

虽然输出看起来可能类似,但与traceroute相比,最大的优势是输出不断更新,这允许您积累趋势和平均值,并允许您看到网络性能随着时间的推移而变化。

如果你运行了一个跟踪路线,有可能发送到每个跳跃的数据包发生在没有事件的情况下,即使在路线正在遭受间歇性丢失的数据包的情况下,MTR实用程序允许你通过收集更广泛的时间范围的数据来监控这种情况。

还可以运行mtr使用--report选项,该选项返回每跳10个包的发送结果。

1mtr --report google.com

报告看起来像这样:

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

当您不一定想要实时测量时,这可能是有用的,但您想要比 traceroute 提供的数据范围更大。

结论


借助traceroutemtr,您可以了解到您前往特定域或地址的服务器会导致问题,这在解决内部网络问题时,以及在尝试提供支持会员或ISP的信息时,可能会有用。

Published At
Categories with 技术
Tagged with
comments powered by Disqus