NAT 背后的 NAT 如何工作(路由器的 NAT 和 ISP 的 NAT)?

isp*_*iro 2 networking router modem port-forwarding nat

我正在使用调制解调器路由器,并且在某些情况下也在 ISP NAT 后面。NAT(ISP 的 NAT)后面的 NAT(路由器的 NAT)如何工作?

据我所知,NAT 是这样工作的:计算机 A 和 B 获得内部 IPinternal1internal2. 然后NAT给出了相同的IP端口他们,让他们公开面对落后someIP:1someIP:2

但是,如果路由器这样做,然后 ISP 再次这样做,则 IP 将采用 形式someIP:1:100someIP:2:101这是不可能的,因为端口没有二级端口。

那么这是如何工作的呢?

Bob*_*Bob 7

让我们尝试一个简单的例子。

在“普通”NAT 家庭网络中,192.168.1.2:11223映射到“公共”地址:端口对203.0.113.5:22334。因此,最终目标主机认为它收到了来自它的数据包,203.0.113.5:22334并且不知道其背后的“专用”网络。


现在,让我们将其扩展到具有两个 NAT 级别的双 NAT 网络。

在离主机最近的路由器上,192.168.1.2:11223映射到“公共”地址:端口对10.0.0.8:22334。现在,10.0.0.8仍然是私有地址,只是在不同的网络中。就这个路由器而言,它的工作已经完成。

在作为 LAN 网关的下一个路由器上,第一个路由器所在的路由器10.0.0.8:22334被映射到另一个地址:端口对,位于其自己的公共接口上203.0.113.5:12345

最终目标主机认为它收到了来自 的数据包203.0.113.5:12345。它和公共互联网作为一个整体,没有任何知识10.0.0.0/8192.168.0.0/16在这里参与该子网。它将向该地址发送一个响应,该地址必须依次由每个路由器转换回。

                              Different address:port pairs for
                              thesame endpoint in one connection!
+------------------------+    -----------------------------------
|Host                    |
|192.168.1.2             |
+------------------------+    192.168.1.2:11223 <--- Host sees
                                                     this pair

+------------------------+    192.168.1.2:11223 <--- Router 1 sees
|Router 1                |                           req from this
|internal 192.168.1.1/24 |
|external 10.0.0.8       |
+------------------------+    10.0.0.8:22334 <------ Router 1 sends
                                                     req from this

+------------------------+    10.0.0.8:22334 <------ Router 2 sees
|Router 2                |                           req from this
|internal 10.0.0.1/24    |
|external 203.0.113.5    |
+------------------------+    203.0.113.5:12345 <--- Router 2 sends
                                                     req from this

+------------------------+    203.0.113.5:12345 <--- Public internet
|Public internet         |                           sees this pair
+------------------------+
Run Code Online (Sandbox Code Playgroud)

CGN(“ISP NAT”)的工作方式大致相同。唯一的区别是它没有为其内部主机提供 RFC1918 私有地址,因为这可能会与业务网络发生冲突。相反,100.64.0.0/10范围 (RFC6598) 中的地址由上图中的“路由器 2”分配。就客户自己的路由器而言,其“公共”地址来自该范围 - 但实际上无法在公共互联网上访问!