如何在Linux上使用traceroute命令

您可以使用Linux 跟踪路由 命令以发现网络数据包传输过程中的慢速跳动,并对网络连接速度缓慢进行故障排除。我们将向您展示如何!

traceroute如何工作

当你欣赏如何 跟踪路线 可以使了解结果变得容易得多。网络数据包到达目的地所经过的路线越复杂,就越难确定可能会出现减速的位置。

小型组织的局域网(LAN)可能相对简单。它可能至少有一台服务器和一台或两台路由器。在不同位置之间或通过Internet进行通信的广域网(WAN)上,复杂性增加了。然后,您的网络数据包会遇到(并由其转发和路由)很多硬件,例如路由器和网关。

数据包上元数据的标题描述了其长度,来源,去向,使用的协议等。协议的规范定义了报头。如果可以识别协议,则可以确定标题中每个字段的开始和结束并读取元数据。

跟踪路线 使用TCP / IP协议套件,并发送用户数据报协议数据包。标头包含生存时间(TTL)字段,该字段包含一个八位整数值。尽管顾名思义,它代表的是计数,而不是持续时间。

数据包通过路由器从其始发地到达其目的地。数据包每次到达路由器时,都会减少TTL计数器。如果TTL值达到1,则接收数据包的路由器会将该值递减,并注意到它现在为零。然后,该数据包将被丢弃,因为它“超时”,因此不会转发到其下一跳。

路由器将Internet消息控制协议(ICMP)超时消息发送回数据包的起点,以使其知道数据包超时。超过时间消息包含原始标头和原始数据包数据的前64位。这是在“请求评论792”的第六页上定义的。

因此,如果 跟踪路由 发送一个数据包,然后将TTL值设置为1,则该数据包只会到达第一个路由器,然后才被丢弃。它将收到来自路由器的ICMP超时消息,并且它可以记录往返所花费的时间。

然后,它将TTL设置为2重复该练习,该操作将在两跳之后失败。 跟踪路线 将TTL增加到3,然后重试。重复此过程,直到到达目的地或测试最大跳数(默认为30)。

某些路由器的播放效果不佳

一些路由器存在错误。他们尝试转发TTL为零的数据包,而不是丢弃它们并提出ICMP超时消息。

据思科称,某些互联网服务提供商(ISP)限制了其路由器中继的ICMP消息的数量。

某些设备配置为从不发送ICMP数据包。这通常是为了确保设备不会被不自觉地强制参与分布式拒绝服务,例如蓝精灵攻击。

跟踪路线 默认回复时间为5秒。如果在这五秒钟内未收到响应,则尝试将被放弃。这意味着来自非常慢的路由器的响应将被忽略。

安装traceroute

跟踪路线 已在Fedora 31上安装,但必须在Manjaro 18.1和Ubuntu 18.04上安装。安装 跟踪路线 在Manjaro上,使用以下命令:

sudo pacman -Sy traceroute

安装 跟踪路线 在Ubuntu上,使用以下命令:

须藤apt-get install tr​​aceroute

使用traceroute

如上所述, traceroute的 目的是在从您的计算机到目的地的每个跃点上引起路由器的响应。有些人可能会闭口不给任何东西,而另一些人可能会毫不犹豫地撒下豆子。

举例来说,我们将运行 跟踪路由 到爱尔兰的布拉尼城堡网站,这里是著名的布拉尼石碑的所在地。传说,如果您亲吻布拉尼石碑,您将得到“ gab的礼物”的祝福。希望我们沿途遇到的路由器都适当地散乱。

我们输入以下命令:

traceroute www.blarneycastle.ie

第一行为我们提供以下信息:

  • 目的地及其IP地址。
  • 跳数 跟踪路由 会在放弃之前尝试。
  • 我们正在发送的UDP数据包的大小。

所有其他行都包含有关其中一个跃点的信息。不过,在深入研究细节之前,我们可以看到计算机与Blarney Castle网站之间存在11个跃点。第11跳还告诉我们我们已经到达目的地。

每跳行的格式如下:

  • 设备的名称,或者,如果设备无法标识其自身,则为IP地址。
  • IP地址。
  • 这三个测试中的每一个都花费了往返时间。如果星号在这里,则表示该测试没有回应。如果设备完全不响应,则会看到三个星号,并且没有设备名称或IP地址。

让我们回顾一下下面的内容:

  • 跃点1: 呼叫的第一个端口(无双关)是本地网络上的DrayTek Vigor路由器。这就是我们的UDP数据包离开本地网络并进入Internet的方式。
  • 跃点2: 该设备没有响应。也许它被配置为从不发送ICMP数据包。或者,也许它确实响应了,但是太慢了,所以跟踪路由 时间到。
  • 跃点3: 设备响应,但我们没有得到它的名称,只有IP地址。请注意,此行中有一个星号,这表示我们未对所有三个请求都做出回应。这可能表示数据包丢失。
  • 蛇麻草4和5: 更多匿名啤酒花。
  • 跃点6: 这里有很多文本,因为不同的远程设备处理了我们三个UDP请求中的每一个。打印每个设备的(相当长的)名称和IP地址。当您遇到“人口稠密”的网络时,可能会发生这种情况,在该网络上有许多用于处理大量流量的硬件。此跃点是英国最大的ISP之一,因此,如果相同的远程硬件处理我们的三个连接请求,这将是一个很小的奇迹。
  • 跃点7: 这是我们的UDP数据包离开ISP网络时发出的跃点。
  • 跃点8: 同样,我们得到一个IP地址,但没有设备名称。所有三个测试均成功返回。
  • 蛇麻草9和10: 另外两个匿名跃点。
  • 跃点11: 我们已经到达了布拉尼城堡网站。该城堡位于爱尔兰的科克,但根据IP地址的地理位置,该网站位于伦敦。

因此,这是一个混合包。一些设备打球,一些设备做出了回应,但没有告诉我们他们的名字,其他设备则保持完全匿名。

但是,我们确实到达了目的地,我们知道它距目的地11跳,往返的时间为13.773和14.715毫秒。

隐藏设备名称

如我们所见,有时包括设备名称会导致显示混乱。为了更轻松地查看数据,您可以使用 -n (无映射)选项。

为此,请输入以下内容:

跟踪路由-n blarneycastle.ie

这样可以更轻松地为往返时间选择大量数字,这可能表明存在瓶颈。

跃点3开始看起来有点可疑。上一次,它只响应了两次,而这次,它只响应了一次。当然,在这种情况下,这是我们无法控制的。

但是,如果您正在调查公司网络,则值得深入研究该节点。

设置traceroute超时值

也许,如果我们延长默认超时时间(五秒),我们将获得更多响应。为此,我们将使用 -w (等待时间)选项将其更改为7秒。 (请注意,这是一个浮点数。)

我们输入以下命令:

traceroute -w 7.0 blarneycastle.ie

差异不大,因此回应可能会超时。匿名跃点很可能是有目的的秘密。

设置测试次数

默认, 跟踪路线 向每个跃点发送三个UDP数据包。我们可以使用 -q (查询数量)选项可向上或向下调整。

为了加快 跟踪路线 测试中,我们键入以下内容以减少发送给一个的UDP探测数据包的数量:

traceroute -q 1 blarneycastle.ie

这会将单个探针发送到每个跃点。

设置初始TTL值

我们可以将TTL的初始值设置为非1的值,并跳过一些跃点。通常,对于第一组测试,TTL值设置为一个,对于下一组测试,TTL值设置为两个,依此类推。如果我们将其设置为5,则第一个测试将尝试跳到第五跳,并跳过一到四跳。

因为我们知道Blarney Castle网站是来自此计算机的11个跃点,所以我们键入以下内容直接跳到跃点11:

traceroute -f 11 blarneycastle.ie

这为我们提供了关于目标连接状态的简明报告。

体贴

跟踪路由 是研究网络路由,检查连接速度或确定瓶颈的好工具。 Windows也有一个 rt 功能相似的命令。

但是,您不想用UDP数据包的洪流轰炸未知的设备,并且要小心不要 跟踪路线 在脚本或无人值守的工作中。

负载 跟踪路线 放置在网络上可能会对其性能产生不利影响。除非您处于“立即解决”的情况,否则您可能希望在正常工作时间之外使用它。


$config[zx-auto] not found$config[zx-overlay] not found