如何在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 traceroute
使用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数据包的洪流轰炸未知的设备,并且要小心不要 跟踪路线
在脚本或无人值守的工作中。
负载 跟踪路线
放置在网络上可能会对其性能产生不利影响。除非您处于“立即解决”的情况,否则您可能希望在正常工作时间之外使用它。