要在Ubuntu上安装traceroute,请使用以下命令:
sudo apt-get install traceroute
使用traceroute
如上所述,traceroute的目的是在从您的计算机到目的地的每一跳从路由器获得响应。有些人可能守口如瓶,什么也不会泄露,而另一些人可能会毫无顾虑地泄露秘密。
作为一个例子,我们将运行一条Traceroute到爱尔兰的Blarney Castle网站,那里是著名的Blarney Stone的故乡。传说,如果你亲吻布拉尼石碑,你就会得到“喋喋不休的礼物”。让我们希望我们一路上遇到的路由器适当地喋喋不休。
我们键入以下命令:
traceroute www.blarneycastle.ie
第一行给我们提供以下信息:
目的地及其IP地址。 traceroute在放弃之前将尝试的跳数。 我们发送的UDP数据包的大小。
所有其他行都包含有关其中一跳的信息。不过,在我们深入挖掘细节之前,我们可以看到,我们的电脑和布拉尼城堡网站之间有大约11个跳跃。11跳还告诉我们我们已到达目的地。
每条跳线的格式如下:
设备的名称,或者,如果设备不识别自己,则为IP地址。 IP地址。 三个测试中的每一个往返所需的时间。如果这里有星号,那就意味着那次测试没有反应。如果设备完全没有响应,您将看到三个星号,并且没有设备名称或IP地址。
让我们回顾一下下面的内容:
第一跳:第一个停靠端口(不是双关语)是本地网络上的DrayTek Vigor路由器。这就是我们的UDP数据包离开本地网络并进入互联网的方式。 第二步:此设备没有响应。可能它被配置为从不发送ICMP数据包。或者,也许它确实有反应,但太慢了,所以Traceroute超时了。 第三跳:一台设备响应了,但我们没有得到它的名称,只得到了IP地址。请注意,这一行中有一个星号,这意味着我们没有收到对所有三个请求的响应。这可能表示数据包丢失。 跳数4和5:更多匿名跳数。 第6步:这里有很多文本,因为我们三个UDP请求中的每一个都由不同的远程设备处理。打印了每个设备的(相当长的)名称和IP地址。当您遇到有很多硬件来处理大量流量的“密集”网络时,就会出现这种情况。这一跳是英国最大的ISP之一。所以,如果同样的远程硬件处理我们的三个连接请求,那将是一个小小的奇迹。 第7跳:这是我们的UDP数据包离开ISP网络时进行的跳跃。 第8跳:同样,我们得到了IP地址,但没有设备名称。所有三个测试都成功返回。 跳数9和10:又有两个匿名跳数。 跳11:我们已经到了布拉尼城堡的网站。城堡位于爱尔兰的科克,但根据IP地址地理位置,网站位于伦敦。
所以,这是一件喜忧参半的事。有些设备玩得团团转,有些回应了,但没有告诉我们他们的名字,而另一些则完全匿名。
然而,我们确实到达了目的地,我们知道它有11跳的距离,旅程的往返时间是13.773毫秒和14.715毫秒。
隐藏设备名称
正如我们已经看到的,有时包括设备名称会导致显示混乱。要更容易地查看数据,可以使用-n(无映射)选项。
要使用我们的示例执行此操作,我们键入以下内容:
traceroute -n blarneycastle.ie
这使得为可能指示瓶颈的往返时间挑选大量数字变得更容易。
HOP 3看起来有点可疑。上一次,它只回应了两次,这次,它只回应了一次。当然,在这种情况下,这不是我们所能控制的。
但是,如果您正在调查您的公司网络,那么深入研究该节点将是值得的。
设置traceroute超时值
如果我们延长默认超时期限(5秒),可能会得到更多响应。为此,我们将使用-w(等待时间)选项将其更改为7秒。(请注意,这是一个浮点数。)
我们键入以下命令:
traceroute -w 7.0 blarneycastle.ie
这并没有太大的不同,所以响应可能超时了。很可能匿名啤酒花是故意保密的。
设置测试次数
默认情况下,traceroute向每跳发送三个UDP数据包。我们可以使用-q(查询数)选项来向上或向下调整该值。
为了加快traceroute测试,我们键入以下命令以将发送的UDP探测数据包数减少到1:
traceroute -q 1 blarneycastle.ie
这会向每一跳发送一个探测。
设置初始TTL值
我们可以将TTL的初始值设置为1以外的值,并跳过一些跃点。通常,第一组测试的TTL值设置为1,下一组测试的TTL值设置为2,依此类推。如果我们将其设置为5,则第一个测试将尝试跳到5跳,并跳过1到4跳。
因为我们知道Blarney Castle网站距离这台计算机有11跳,所以我们键入以下命令直接进入Hop 11:
traceroute -f 11 blarneycastle.ie
这为我们提供了一份关于到目的地的连接状态的精美、简明的报告。
体贴周到
traceroute是调查网络路由、检查连接速度或识别瓶颈的一个很棒的工具。Windows也有一个功能类似的tracert命令。
但是,您不想用大量UDP数据包轰炸未知设备,并且要小心在脚本或无人值守作业中包含traceroute。
traceroute可以对网络施加的负载可能会对其性能产生不利影响。除非你处于“现在就能修好”的情况,否则你可能想在正常工作时间以外使用它。