如何在linux上使用traceroute命令

您可以使用Linux traceroute命令来发现网络数据包传输过程中的慢段,并对缓慢的网络连接进行故障排除。我们会教你怎么做!...

您可以使用Linux traceroute命令来发现网络数据包传输过程中的慢段,并对缓慢的网络连接进行故障排除。我们会教你怎么做!

traceroute的工作原理

当您了解traceroute的工作原理时,就更容易理解结果。网络数据包到达目的地的路径越复杂,就越难确定可能发生减速的位置。

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

数据包上元数据的头描述了它的长度、它来自哪里、它要去哪里、使用的协议等等。协议的规范定义了头。如果您可以识别协议,可以确定头中每个字段的开始和结束,并读取元数据。

traceroute使用TCP/IP协议套件,发送用户数据报协议包。标头包含生存时间(TTL)字段,该字段包含一个8位整数值。不管名字怎么说,它代表的是计数,而不是持续时间。

一个包通过路由器从它的起点到它的目的地。每次数据包到达路由器时,它都会减少TTL计数器。如果TTL值曾经达到1,那么接收数据包的路由器将递减该值并注意到它现在为零。数据包随后被丢弃,并且不会转发到其旅程的下一个跃点,因为它已经“超时”

路由器发送一个Internet消息控制协议(ICMP)超时消息回数据包的来源,让它知道数据包超时。超时消息包含原始报头和原始数据包数据的前64位。这在征求意见792第6页中有定义。

因此,如果traceroute发送一个数据包,然后将TTL值设置为1,那么该数据包在被丢弃之前只能到达第一个路由器。它将从路由器接收ICMP超时消息,并记录往返所用的时间。

然后,它将重复练习,TTL设置为2,两次跳后将失败。traceroute将TTL增加到3,然后重试。此过程重复,直到达到目标或测试最大跳数(默认情况下为30)。

有些路由器玩得不好

有些路由器有漏洞。它们尝试转发TTL为零的数据包,而不是丢弃它们并引发ICMP超时消息。

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

某些设备被配置为从不发送ICMP数据包。这通常是为了确保设备不会在无意中被强迫参与分布式拒绝服务,比如**urf攻击。

traceroute的默认答复超时时间为5秒。如果在这五秒钟内没有收到响应,则放弃尝试。这意味着来自非常慢的路由器的响应被忽略。

安装traceroute

traceroute已经安装在fedora31上,但必须安装在manjaro18.1和ubuntu18.04上。要在Manjaro上安装traceroute,请使用以下命令:

sudo pacman -Sy traceroute

如何在linux上使用traceroute命令

要在Ubuntu上安装traceroute,请使用以下命令:

sudo apt-get install traceroute

如何在linux上使用traceroute命令

使用traceroute

如上所述,traceroute的目的是在从您的计算机到目的地的每一跳中从路由器获取响应。有些人可能守口如瓶,什么也不给,而另一些人可能会毫无顾忌地泄露秘密。

例如,我们将运行一个traceroute到爱尔兰布拉尼城堡网站,这里是著名的布拉尼石之家。传说如果你亲吻布拉尼石,你会得到“口碑的礼物”的祝福。让我们希望我们在路上遇到的路由器是适当的唠叨。

我们键入以下命令:

traceroute www.blarneycastle.ie

如何在linux上使用traceroute命令

第一行提供了以下信息:

  • 目标及其IP地址。
  • traceroute在放弃之前将尝试的跃点数。
  • 我们发送的UDP数据包的大小。

所有其他行都包含其中一个跃点的信息。不过,在深入了解细节之前,我们可以看到,我们的电脑和布拉尼城堡网站之间有11个跳跃。跳11也告诉我们我们到达了目的地。

每个跃点行的格式如下:

  • 设备的名称,如果设备没有标识自身,则为IP地址。
  • IP地址。
  • 三次测试的往返时间。如果这里有一个星号,就意味着测试没有反应。如果设备根本没有响应,您将看到三个星号,没有设备名称或IP地址。

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

  • 跃点1:第一个呼叫端口(没有双关语)是本地网络上的DrayTek Vigor路由器。这就是我们的UDP数据包如何离开本地网络并进入互联网的方式。
  • 跃点2:此设备没有响应。也许它被配置为从不发送ICMP数据包。或者,也许它确实响应了,但是太慢了,所以traceroute超时了。
  • hop3:一个设备响应了,但是我们没有得到它的名字,只有IP地址。请注意,这一行中有一个星号,这意味着我们没有得到对所有三个请求的响应。这可能表示数据包丢失。
  • 跳跃4和5:更多匿名跳跃。
  • hop6:这里有很多文本,因为不同的远程设备处理了我们三个UDP请求中的每一个。打印了每个设备的(相当长的)名称和IP地址。当你遇到一个“人满为患”的网络,上面有很多硬件来处理大量的流量时,就会发生这种情况。这一跳位于英国最大的ISP中,如果同一个远程硬件处理了我们的三个连接请求,这将是一个小小的奇迹。
  • 跳7:这是我们的UDP数据包离开ISPs网络时所做的跳。
  • hop8:同样,我们得到的是一个IP地址,而不是设备名。所有三个测试都成功返回。
  • 第9跳和第10跳:还有两个匿名跳。
  • 我们已经到了布拉尼城堡的网站。城堡位于爱尔兰科克,但根据IP地址地理位置,网站位于伦敦。

所以,这是一个混合袋。一些设备玩球,一些回应,但没有告诉我们他们的名字,还有一些保持完全匿名。

然而,我们确实到达了目的地,我们知道它离我们有11跳的路程,往返时间是13.773和14.715毫秒。

隐藏设备名称

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

要使用我们的示例执行此操作,请键入以下内容:

traceroute -n blarneycastle.ie

如何在linux上使用traceroute命令

这样就可以更容易地为可能表示瓶颈的往返计时选择大量的数字。

第三跳看起来有点可疑。上一次,它只回应了两次,而这次,它只回应了一次。在这种情况下,我们当然无法控制。

然而,如果你正在调查你的公司网络,那么对这个节点进行更深入的研究是值得的。

设置traceroute超时值

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

我们键入以下命令:

traceroute -w 7.0 blarneycastle.ie

如何在linux上使用traceroute命令

这并没有造成太大的影响,所以回应可能已经过时了。很可能匿名的啤酒花是故意保密的。

设置测试数

默认情况下,traceroute向每个跃点发送三个UDP数据包。我们可以使用-q(查询数)选项来向上或向下调整。

为了加快traceroute测试的速度,我们键入以下命令以减少发送到其中一个的UDP探测数据包的数量:

traceroute -q 1 blarneycastle.ie

如何在linux上使用traceroute命令

这会向每个跃点发送一个探测。

设置初始ttl值

我们可以将TTL的初始值设置为1以外的值,并跳过一些跳跃。通常,TTL值在第一组测试中设置为1,在下一组测试中设置为2,依此类推。如果我们把它设为5,第一个测试将尝试跳到5,跳过1到4。

因为我们知道Blarney Castle网站离这台计算机有11个跃点,所以我们键入以下内容直接转到跃点11:

traceroute -f 11 blarneycastle.ie

如何在linux上使用traceroute命令

这给了我们一个很好的,关于目标连接状态的简明报告。

体贴

traceroute是研究网络路由、检查连接速度或识别瓶颈的一个很好的工具。Windows还有一个tracert命令,其功能类似。

但是,您不希望用大量的UDP数据包轰炸未知设备,并且要小心在脚本或无人参与的作业中包含traceroute。

负载跟踪路由可能会对网络性能产生不利影响。除非您处于“现在就修复”的情况,否则您可能希望在正常工作时间之外使用它。

  • 发表于 2021-04-02 14:17
  • 阅读 ( 135 )
  • 分类:互联网

你可能感兴趣的文章

如何在linux上安装和使用powershell

... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 307 )

如何在android和termux上使用linux命令行

...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...

  • 发布于 2021-03-18 07:26
  • 阅读 ( 373 )

如何在windows10上获得linux bash shell

... 如何在windows10上安装linux bash shell ...

  • 发布于 2021-03-21 11:48
  • 阅读 ( 284 )

linux下如何重命名文件

要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...

  • 发布于 2021-03-22 02:48
  • 阅读 ( 275 )

如何在linux中添加用户

想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...

  • 发布于 2021-03-26 23:29
  • 阅读 ( 334 )

初学者的nmap:获得端口扫描的实践经验

... 您还可以使用-A选项在traceroute旁边启用版本和操作系统检测。 ...

  • 发布于 2021-03-28 11:48
  • 阅读 ( 179 )

如何在Windows10上导出和导入linux系统

...已配置的系统,与其他计算机共享,或者只保存备份。 如何工作 导入和导出功能是在2019年5月的Windows10版本1903更新中添加的。如果尚未安装,则无法使用这些命令行选项。 您只需要为Windows wsl命令提供两个新选项:--export和--i...

  • 发布于 2021-04-03 10:24
  • 阅读 ( 188 )

windows10的新bashshell所能做的一切

...些指南汇总到一个大列表中。 windows上linux入门 相关:如何在windows10上安装和使用Linux Bash Shell 您可以在任何版本的windows10(包括windows10home)上安装Linux环境和bashshell。但是,它确实需要64位版本的Windows10。您只需启用Windows Subs...

  • 发布于 2021-04-06 14:44
  • 阅读 ( 263 )

如何在windows10上安装和使用linux bash shell

...令行应用程序都能正常工作,因为这个特性并不完美。 如何在windows10上安**ash 相关:如何知道我运行的是32位还是64位Windows? 此功能在32位版本的Windows 10上不起作用,因此请确保您使用的是64位版本的Windows。无论如何,如果你...

  • 发布于 2021-04-06 16:32
  • 阅读 ( 246 )

如何在Windows10上设置默认的linux发行版

...个Linux环境,可以设置默认值并在它们之间切换。 相关:如何在windows10上安装和使用Linux Bash Shell 您可以自由地一次运行多个Linux环境,但是当您运行类似wsl.exe文件或者bash.exe启动shell,或者使用wsl[command]或bash-c[command]从Windows中...

  • 发布于 2021-04-06 16:40
  • 阅读 ( 197 )
gxk3810
gxk3810

0 篇文章

相关推荐