NAT 後面的 NAT 如何運作(路由器的 NAT 和 ISP 的 NAT)?

NAT 後面的 NAT 如何運作(路由器的 NAT 和 ISP 的 NAT)?

我正在使用數據機路由器,並且在某些情況下也位於 ISP NAT 之後。 NAT(ISP 的 NAT)後面的 NAT(路由器的 NAT)如何運作?

據我所知,NAT 的工作原理是這樣的:計算機 A 和 B 獲取內部 IPinternal1internal2.然後 NAT 為它們提供同一 IP 上的端口,以便麵向公眾,它們位於後面someIP:1someIP:2

但是,如果路由器執行此操作,然後 ISP 再次執行此操作,則 IP 的形式將是someIP:1:100someIP:2:101這是不可能的,因為連接埠沒有二級連接埠。

那麼這是如何運作的呢?

答案1

讓我們試試一個簡單的例子。

在「正常」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
+------------------------+

CGN(“ISP NAT”)的工作方式大致相同。唯一的區別是,它不會為其內部主機提供 RFC1918 私人位址,因為這可能會與業務網路發生衝突。相反,範圍 (RFC6598) 中的位址100.64.0.0/10由上圖中的「路由器 2」分配。就客戶自己的路由器而言,其“公共”位址來自該範圍 - 但實際上無法在公共互聯網上訪問!

答案2

據我所知,NAT 的工作原理是這樣的:計算機 A 和 B 獲取內部 IP 內部 1 和 內部 2。然後 NAT 為它們提供同一 IP 上的端口,以便麵向公眾,它們位於 someIP:1 和 someIP:2 後面。

連接埠數量不是主機位址的一部分 – 無論是否使用 NAT,IP 層都不存在連接埠之類的東西。主機的 IP 位址始終是只是地址;它沒有“第二級”端口,也沒有“第一級”端口。[1]

相反,連接埠屬於每個單獨的 TCP/UDP聯繫主機在 IP 之上建立的。 (嚴格來說,它們是每個資料包的一部分,並且同一連接中的所有資料包都使用相同的連接埠。)

所以當你看到一個地址寫成 時12.34.56.78:123,整個事情就是不是主機的 IP 位址 – 這是連接埠 123 的 TCP 連線端點IP 位址仍然簡單的主機12.34.56.78

這些連接埠沒有添加通過 NAT – 他們一直都在那裡;每個 TCP 或 UDP 封包都有兩個連接埠(一個「來源」連接埠和一個「目標」連接埠)。執行 NAT 的路由器只是將它們轉換為不同的值。無論您有多少層 NAT,該封包仍然會有兩個連接埠。


[1]這意味著當您有兩台主機在同一個公共位址後面進行 NAT 時,它們實際上對於 IP 層來說是無法區分的——當來自外部的 IP 封包發送到someIP它時,它無法指定它想要哪一台主機; NAT 路由器必須從 TCP 層推斷出這一點。這就是為什麼您必須配置「連接埠轉送」規則才能接收入站連線。

相關內容