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

Ada*_*erg 8 networking routing

如果我从家庭网络跟踪路由,我会在路由器之后直接连续两次看到相同的 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  ...
Run Code Online (Sandbox Code Playgroud)

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

har*_*ymc 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 有一个防火墙来响应跟踪路由请求。企业防火墙本身就是一台专用计算机。如果被编程,它可以用编程的 IP 地址回答跟踪路由请求,该 IP 地址可能是它正在保护的节点的 IP 地址。

  • 公司路由器可以从其内部和外部接口进行应答。如此高速、高吞吐的路由器,其实就是一个以专用子路由器为组件的盒装网络。答案可能来自前向和后向子路由器,使用相同的 IP 进行应答。

  • 如果总是发生这种情况,则是因为您的 ISP 设置其网络的方式。还有一些我没有提到的其他解释,因为不太可能:(1) ISP 有一个防火墙来回答 traceroute 请求,(2) 请求通过了 [NAT](https://en.wikipedia.org/ wiki/Network_address_translation)在 ISP 上,您从其内部和外部接口都得到了答案,但内部接口正在将其 IP 映射到外部接口。 (2认同)