两个私有IP之间的路由怎样经过公有IP?

两个私有IP之间的路由怎样经过公有IP?

我试图理解这个输出的含义traceroute。我更改了 IP 地址以保护隐私,但保留了公有/私有 IP 范围区别。

traceroute.db -e -n 10.1.1.9
traceroute to (10.1.1.9), 30 hops max, 60 byte packets
 1  10.0.0.1  0.596 ms  0.588 ms  0.577 ms
 2  10.0.0.2  1.032 ms  1.029 ms  1.084 ms
 3  10.0.0.3  3.360 ms  3.355 ms  3.338 ms
 4  23.0.0.4  3.974 ms  4.592 ms  4.584 ms
 5  23.0.0.5  13.442 ms  13.445 ms  13.434 ms
 6  45.0.0.6  13.195 ms  12.924 ms  12.913 ms
 7  67.0.0.7  52.088 ms  51.683 ms  52.040 ms
 8  10.1.1.8  46.878 ms  44.575 ms  44.815 ms
 9  10.1.1.9  45.932 ms  45.603 ms  45.593 ms

第一个 10.0.* 范围在我的组织内部。最后一个 10.1.* 范围是我组织的另一个站点。中间地址属于不同的 ISP。我预计两个站点之间有某种 VPN,但我对我们的网络拓扑不太了解。

我不明白的是,路由如何从私有地址通过公共地址回到私有地址。搜索让我找到了MPLS 跟踪路由上的公共 IP,这给出了一种可能的解释:多协议标签交换 (MPLS)。MPLS 是唯一可能或最有可能的解释吗?否则,这对我们的网络基础设施有什么启示?

给我启发的附加问题是:在这种情况下,谁生成了 ICMP TTL 超出的数据包,以及是否相关破坏了它们的源地址和目标地址?

答案1

两端都有服务器进行网络地址转换 (NAT)。当地址通过这些服务器时,数据包上的标头地址将被重写为该服务器的 Internet 地址。服务器会跟踪哪些连接属于哪个内部主机。

Traceroute 显示 ICMP 数据包内部的数据,表明在给定的跳数内是否到达主机。NAT 路由器不会更改此数据。因此,您可以看到每个主机接收数据包的地址。

通常,在这种情况下,远端的服务器名称已使用 DNAT(目标 NAT)路由到私有网络上的主机。

该地址很可能通过两个站点之间的 VPN 隧道传递。VPN 将源地址和最终地址封装在跳数 3 和 7 之间发送的数据包中。虽然机制不同,但效果相同。跳数 3 和 7 处的路由器将知道远程路由器支持的地址范围,并相应地路由数据包。离开跳数 7 后,IP 目标将是 67.0.0.7,其公共地址属于跳数 3。由于路由跟踪的工作方式,这是不可见的。根据 VPN 协议,跳数 7 之后的某些跳数可能无法跟踪。

在某些情况下,您可能会看到 ISP 通过私有地址路由到公共地址。这将显示为两个公共地址之间的一个或多个私有地址。如果具有公共地址的中间路由器属于同一组织,则它们可能具有允许端到端通信而无需转换的路由规则。

相关内容