ISP 向其客户提供公共 IP 地址,并使用 DHCP 来实现这一点。现在的问题是,他们还在使用 nat 公共 IP 地址吗?
我自己的理解是:私有 IP - nat - 我的公共动态 IP - nat - isp 公共 IP - isp 服务器 - 目的地。
典型的 nat 是:私有 IP - nat - 公共 IP - 互联网。
我可以进行端口转发,所以我猜我没有进行网络地址转换。但是 traceroute 的结果让我很困惑。
从 core1.mnl1.he.net 出站,并入站到我的 IP。从 core1.mnl1.he.net 跟踪到我的 IP:
从我的 IP 出站,入站到 core1.mnl1.he.net。从我的 IP 跟踪到 core1.mnl1.he.net:
现在是我的第二跳,为什么它显示 49.149.x.1?那个 .1 肯定是 isp 路由器的网关,而且根据我自己的理解,它应该显示 49.149.x.125,但是它确实显示在来自 core1.mnl1.he.net 的出站跟踪路由上,而 .1 消失了。
答案1
现在的问题是他们还在使用 nat 公共 IP 地址吗?
可能不会。实际上,没有理由在两个公共地址范围之间使用 NAT。
如果你使用的是运营商级 NAT,那么技术上ISP 可能会为 NATed 用户使用公共地址……但这样做会完全挫败了 CGNAT 的观点– 这是为了避免向每个客户提供公开地址。
相反,CGNAT 后面的客户通常会从特殊私有范围 100.64.0.0/10(为此目的保留)或从通常的私有范围之一(例如 10.0.0.0/8)接收地址。
NAT 并不意味着动态地址分配。
动态地址分配并不意味着 NAT。
但 traceroute 的结果让我很困惑
“traceroute” 中的跃点不是地址本身,而是路由器。任何路由器通常都有多个地址,但仍然只有一跳。(数据包不是从一个地址传输到另一个地址,而是从主机传输到路由器再传输到主机。)
例如,您的家用路由器有两个接口,每个接口都有一个 IP 地址(“LAN”接口上的 IP 地址为 192.168.1.1,“WAN”接口上的 IP 地址为 49.149.x.125)。但是,整个路由器算作一个“跳跃”,并且只会对跟踪路由产生一个响应。
通常,路由器会从属于原始数据包到达的同一接口的地址进行响应。因此,如果您从“LAN”端启动跟踪,路由器将响应为 192.168.1.1 - 但跟踪数据包是通过“WAN”接收的,同一路由器将看起来是 49.149.x.125。
[...]
↕
┌─────── ??? ──────────┐
│ your ISP's gateway │
└──── 49.149.x.1 ──────┘
↕
┌─ WAN = 49.149.x.125 ─┐
│ your own router │
└─ LAN = 192.168.1.1 ──┘
↕
[your PC]
这同样适用于 traceroute 中看到的大部分路由器。如果你沿相反方向运行跟踪,你会看到不同的 IP 地址,但很多时候它们来自完全相同的路由器 - 只是网络连接方向相反。
例如,在 HE.NET 端,您有:
[core1.mnl1.he.net]
↕
┌ 10ge7-4 = 184.104.192.101 ─┐
│ core1.hkg1.he.net │ (The "core" routers have many
└ 100ge10-1 = 184.105.64.129 ┘ more interfaces, but this
↕ specific path only uses two.)
┌─ 100ge10-2 = 184.105.64.130 ┐
│ core1.tyo1.he.net │
└ 100ge11-2 = 184.105.213.118 ┘
↕
[...]
因此当您启动跟踪路由时到core1.mnl1,路由器使用面向您的地址(.213.118 和 .64.129)进行回复。当 core1.mnl1 开始跟踪时,它会看到来自相同路由器的面向 mnl1 的地址(.192.101 和 .64.130)。