有人可以向我自己的公共 IP 解释 tracert 吗?

mas*_*rry 13 networking router routing ip

我正在尝试了解 ip 路由,并且我正在尝试跟踪路由我自己的公共 IP。我刚刚在网上搜索了我的ip并尝试了它。我得到的结果是

> tracert [my_public_ip]

1  <1ms   192.168.100.1
2   4ms   100.64.0.1
3   5ms   10.68.32.220
4   4ms   [my_public_ip]
5   *     Request timed out.
6   4ms   [my_public_ip]
Run Code Online (Sandbox Code Playgroud)

为什么我的公共 IP 两次命中我的公共 IP,中间有一个路由器会丢弃 ICMP traceroute 数据包?

第一个显然是我的路由器的网关,但第二个和第三个 IP 地址是什么。他们看起来都像我的192.168.100.*地址一样是私人的。这些是什么?。我希望我的路由器能够立即访问我的公共 IP,因为它是我的路由器使用的实际 IP。NAT 是否适合这个地方?

也在一个常规的跟踪路由中,例如 google.com 为什么你实际上没有看到你的公共 IP 作为路由的一部分。在 NAT 期间,数据包不会穿过您的公共 IP 吗?

use*_*686 31

我希望我的路由器能够立即访问我的公共 IP,因为它是我的路由器使用的实际 IP。NAT 是否适合这个地方?

这看起来非常像 CGNAT(如“运营商级 NAT”)。

如果您的ISP使用CGNAT,这意味着你的路由器并不实际拥有的公网IP地址了-而不是只在两侧具有私有地址。(通常,“WAN”端将从 100.64.0.0/10 范围中获取一个地址——它实际上是一个专为 CGNAT 目的分配的私有范围。)

此外,您的 ISP 使用的 CGNAT 网关通常具有稍微复杂的配置……有时它们的配置非常奇怪。(有时唯一可用的解释是“这就是 CGNAT 硬件制造商决定这样做的方式”,甚至“当时是有道理的”。)

例如,即使他们仍然在你的路由器地址和你的真实公共地址之间做 NAT 的工作,但为了效率,它的完成方式通常略有不同——公共地址实际上并没有分配给 CGNAT 网关本身,而是一种“虚拟”地址缺乏更好的词,因此尝试跟踪它们根本不会导致任何地方。

也在一个常规的跟踪路由中,例如 google.com 为什么你实际上没有看到你的公共 IP 作为路由的一部分。在 NAT 期间,数据包不会穿过您的公共 IP 吗?

数据包跨路由器,而不是地址。通常,沿途的每台路由器都有多个地址——每个接口一个地址——但仍计为 1 跳,并且总共只会产生一个跟踪路由响应。

(通常,路由器将使用面向您的接口的地址进行响应。因此,如果您以某种方式在相反方向跟踪路由,则完全相同的路由器将显示为具有完全不同的 IP 地址。但是,这不是一个保证规则。)

因此,在一个简单的非 CGNAT 场景中,您的家用路由器将同时拥有 192.168.xx 地址(在“LAN”接口上)您的公共地址(在“WAN”接口上)。但是尽管有两个地址,它只会生成一个 traceroute 响应,通常来自 192.168.xx 地址。

(这是一个半相关图。)

  • 这太棒了。另外(@OP)考虑:您可能正在与其他客户共享该公共 IP,并且它也可能不能保证是静态的(我所知道的大多数 ISP 只会给您一个专用的、固定的公共 IP,如果您支付额外费用);所以他们在你和任何拥有支持该设置的 IP 之间都有一堆基础设施。 (4认同)
  • @MrBrN197 使用动态 IP 存在 IP 租用超时。如果您在超时结束后断开连接并重新连接,您将从 ISP 分配的可用地址池中获得一个新的 IP 地址。但这是一个不同的问题,因此您应该为此创建一个新问题。也许另一个堆栈交换站点也会更好,因为这些类型的问题不适合超级用户的范围。 (3认同)