ISP在一条路由中两次拥有相同的IP是否正常?


8

如果我在家庭网络之外跟踪路由,则在路由器之后直接连续两次看到相同的IP:

  1     1 ms     1 ms     1 ms  router
  2    17 ms    16 ms    16 ms  217.0.117.61
  3    16 ms    16 ms    16 ms  217.0.117.61
  4    17 ms    17 ms    17 ms  87.186.233.102
  5    26 ms    24 ms    24 ms  217.239.39.2
  6    24 ms    24 ms    25 ms  ...

这是正常现象,还是代表ISP的配置错误?


3
如果IP位于不相邻的跃点上,则可能会配置错误。但是在您的情况下,它们是相邻的,这可能意味着此设备可以简单地将数据包TTL降低两次。
罗伯特

Answers:


14

如果这种情况发生一次或很少

所有IP数据包都有一个生存时间TTL)字段。每个转发数据包的路由器都会将该字段减1。如果路由器将TTL递减为0,它将丢弃该数据包并生成ICMP TTL超出错误数据包,然后将其发送回发起方。

Traceroute使用此功能发送具有顺序增加的TTL的数据包。这允许traceroute构建源与目标之间路径的图片。

在您的情况下,从路由器到217.0.117.61可能有两条路径,其中一条路径比另一条路径长。所以发生了什么事:

  1. 以TTL = 1发送的数据包到达了您的路由器,路由器已回答。
  2. 以TTL = 2发送的数据包
    • 到达您的路由器,将TTL递减至1,然后继续发送,
    • 然后达到217.0.117.61,得到了回答。
  3. TTL = 3发送的报文
    • 到达您的路由器,将TTL减至2,然后继续发送,
    • 然后到达某个未知路由器,将TTL递减至1,然后继续发送,
    • 然后达到217.0.117.61,得到了回答。

因此,这就是为什么您两次输入相同的条目。可能会更糟,每个 IP被列出两次,但是显然给出第一个217.0.117.61答案的路由器再也没有参与到跟踪中,因此以下所有数据包都通过了从未返回IP的未知路由器。

如果总是这样

正是由于您的ISP设置其网络的方式。您列表中的IP属于德国电信(Deutsche Telekom AG),该公司具有庞大的内部网络和高性能的复杂节点,其中一个似乎可以回答两次。

有两种可能的解释:

  • ISP的防火墙可以回答traceroute请求。公司防火墙本身就是一台专用计算机。如果已编程,它可以使用已编程的IP地址(可能是它正在保护的节点的IP地址)来回答路由请求。

  • 公司路由器可以通过其内部和外部接口进行应答。这种高速,高吞吐量的路由器实际上是一个将专用子路由器作为组件的一体机网络。答案可能来自前向和后向子路由器,并使用相同的IP进行回答。


它始终是路径的两倍。在第二种情况下它怎么可能没有通过未知路由器?
亚当·林德伯格

2
如果总是这样,那是因为您的ISP设置其网络的方式。我还没有提到其他一些解释,因为可能性较小:(1)ISP的防火墙可以回答traceroute请求,(2)请求在ISP处经过NAT,并且您从其内部都得到了答案和外部接口,但内部接口正在将其IP映射到外部接口。
哈里麦克

您列出的所有IP都在Deutsche Telekom AG内部。逻辑上说,他们拥有一个庞大的内部网络,其中包含许多翻译内容,这是对我们的帮助
HarryMC

1

因为它一直发生,所以我认为最可能的原因是路由器固件之一中的错误,导致它要么在应有的情况下未能丢弃跟踪数据包(并发送“ TTL超出”报告),要么在它发送之前就发送了应该。这是BSD traceroute手册页中第一个问题的示例:

A sample use and output might be:

 [yak 71]% traceroute nis.nsf.net.
 traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 56 byte packet
 1 helios.ee.lbl.gov (128.3.112.1)  19 ms 19 ms  0 ms
 2 lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  39 ms  19 ms
 3 lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  39 ms  19 ms
 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  39 ms  40 ms  39 ms
 [...]

Note that lines 2 & 3 are the same.  This is due to a buggy kernel on the
2nd hop system - lbl-csam.arpa - that forwards packets with a zero ttl (a
bug in the distributed version of 4.3 BSD).

在此示例中,是第二台路由器出现了错误,最后第三台路由器被列出为#2和#3。

另一方面,请考虑如果第二个路由器存在一个错误,该错误导致在TTL达到1而不是0时丢弃数据包,该怎么办:

  1. 在第一个路由器上,以TTL = 1发送的跟踪数据包递减为0,丢弃该数据包并报告TTL超过,因此显示为跃点#1。这里一切都很好。
  2. 以TTL = 2发送的数据包在第一个路由器上递减为1;然后第二台路由器将其递减为0,丢弃并报告,因此显示为跃点2。同样,这里一切都很好。
  3. 以TTL = 3发送的数据包在第一个路由器上递减为2;然后第二个路由器将其递减为1,并错误地丢弃并报告它,因此它显示为跃点3。

同样,它是第二个有错误的路由器,但是在这种情况下,它是被列出两次的第二个路由器(在手册页的示例中,它是被列出两次的第三个路由器)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.