traceroute/tracert 是否显示每一跳,还是跳过/隐藏路径的一些细节?

网络工程 路由 包分析
2021-07-07 13:41:56

我目前在大学攻读网络工程学士学位,我的一位教授在课堂上解释说,例如显示 15 跳的跟踪路由实际上是在抽象路径,实际上涉及更多节点。这是真的?

这与我在 traceroute 上可以找到的所有内容相矛盾。据我所知,traceroute 的工作原理是将 ICMP(或 UDP)数据包发送到特定目的地,TTL 从 0 --> n 直到到达目的地。发送出去的探测包在沿途的每个位置相继超时,产生ICMP“超时”应答,到达目的地时最终产生“端口不可达”消息。

我理解traceroute 的不完善之处——例如,traceroute 流量可能被某些网关阻止,或者回复数据包的 TTL 可能设置为探测器的剩余 TTL,导致它永远不会返回给发送者。

但是,经过大量研究后,在始终返回相同路径的跟踪路由的情况下,我找不到任何引用跟踪路由的内容不准确。同样,没有任何引用没有被 traceroute 报告的任何“额外”跃点(除了 * * * 跃点超时没有回复)。

我愿意讨论,我真的很想知道这个问题的答案。

3个回答

traceroute 将显示您从 A 到 B 所经过的第 3 层跃点数。

但是,您可能会在两者之间进行数百次切换。您还可以通过 10 个运行第 2 层 VPN 的 ISP 路由器,该 VPN 显示为单跳。MPLS 网络可以隐藏其内部结构,或向您显示其内部结构。您也可以在路径中设置透明防火墙。

无论哪种方式,您的教授都正确地说您不能保证路径中的每个设备都算作您的一跳。由于我提到的上述几点,您可能会浏览 50 台设备,但在您看来可能只有 3 台。

虽然它不会一直发生。如果您看到 15 跳,它很可能是 15 跳。

这是一个关于 TTL 的 MPLS 设置的基本示例:http : //www.juniper.net/techpubs/en_US/junos13.2/topics/reference/configuration-statement/no-propagate-ttl-edit-protocols -mpls.html

任何不减少 IP TTL 字段值的设备都不会出现在 traceroute 路径中。例如,可以将 Cisco ASA 防火墙配置为递减穿过防火墙的数据包的 IP TTL 字段 ( set connection decrement-ttl )。默认情况下,TTL 不会递减,从而隐藏(嗯,有点)防火墙。

Traceroute 不会向您显示不递减 IP 数据报的 TTL 字段的设备。

它也不会显示递减 TTL 字段的设备,如果 TTL 达到零则消耗数据包,但忽略通过 ICMP 数据报通知发送方此事件。不过,这并非完全不可见。您可以推断在跟踪路由中存在此丢失的跃点,因为当使用下一个更高的 TTL 值时,链中的下一个设备确实会响应,并且我们知道该设备与前一个设备之间的某些设备正在减少 TTL,但不会宣布自己. 传统的traceroute实用程序在没有收到响应时会打印星号;它会为这种类型的主机打印一行星号。

还有一种可能性很小,即中间的某些路由器根据它们的源地址选择性地抑制这些 ICMP 消息,使路径的某些部分即使它们生成了响应也看起来不可见。