網路位址轉譯
发布时间:2026-10-27 | 浏览:1
網路位址轉譯 (英語: N etwork A ddress T ranslation ,縮寫: NAT ),又稱 IP動態偽裝 (英語: IP Masquerade ) [ 1 ] : 176 ,是一種在IP 封包 通過 路由器 或 防火牆 時重寫來源或目的 IP位址 或 埠 的技術。這種技術普遍應用於有多台主機,但只通過一個公有IP位址訪問 網際網路 的 私有網路 中。
NAT技術部署方便,且得到了廣泛應用。然而,NAT也讓主機之間的通訊變得複雜,導致了通訊效率的降低。
1990年代中期,NAT是作為一種解決 IPv4位址短缺 以避免保留IP位址困難的方案而流行起來的。網路位址轉譯在很多國家廣泛使用。所以NAT就成了家庭和小型辦公室網路連接上的路由器的一個標準特徵,因為對他們來說,申請獨立的IP位址的代價要高於所帶來的效益。
在一個典型的組態中,一個本地網路使用一個專有網路的指定子網路(比如192.168.x.x或10.x.x.x)和連在這個網路上的一個路由器。這個路由器占有這個網路位址空間的一個專有位址(比如192.168.0.1),同時它還通過一個或多個 網際網路服務提供商 提供的公有的IP位址(叫做「過載」NAT)連接到網際網路上。當資訊由本地網路向網際網路傳遞時,源位址從專有位址轉換為公用位址。由路由器跟蹤每個連接上的基本資料,主要是目的位址和埠。當有回覆返迴路由器時,它通過輸出階段記錄的連接跟蹤資料來決定該轉發給內部網路的哪個主機;如果有多個公用位址可用,當封包返回時, TCP 或 UDP 客戶機的埠號可以用來分解封包。對於網際網路上的通訊,路由器本身充當源和目的。
流行在網路上的一種看法認為, IPv6 的廣泛採用將使得NAT不再需要,因為NAT只是一個處理IPv4的位址空間不足的方法。
在一個具有NAT功能的路由器下的主機並沒有建立真正的對外IP位址,並且不能參與一些 網際網路協定 。一些需要初始化從外部網路建立的TCP連接和無狀態協定(比如UDP)無法實現。除非NAT路由器管理者預先設定了規則,否則送來的封包將不能到達正確的目的位址。一些協定有時可以在 應用層闡道 (見下)的輔助下,在參與NAT的主機之間容納一個NAT的實例,比如 FTP 。NAT也會使安全協定變得複雜,比如 IPsec 。
端對端連接是被 IAB委員會 ( 英語 : Internet Architecture Board ) 支援的核心網際網路協定之一,因此有些人據此認為NAT是對 公用網際網路 的一個破壞。一些 網際網路服務提供商 (ISP)只向他們的客戶提供本地IP位址,所以他們必須通過NAT來訪問 ISP 網路以外的服務,並且這些公司能不能算得上真正的提供了網際網路服務的話題也被談起。
基本網路位址轉譯(Basic NAT)
這一種也可稱作NAT或「靜態NAT」,在 RFC 2663 中提供了資訊。它在技術上比較簡單,僅支援位址轉換,不支援埠對映。Basic NAT要求對每一個當前連接都要對應一個公網IP位址,因此要維護一個公網的位址池。 寬頻 (broadband)路由器通常使用這種方式來允許一台指定的裝置去管理所有的外部連結,甚至當路由器本身只有一個可用外部IP時也如此,這台路由器有時也被標記為 DMZ主機 。由於改變了IP源位址,在重新封裝封包時候必須重新計算校驗和,網路層以上的只要涉及到IP位址的頭部校驗和都要重新計算。
Basic NAT要維護一個無埠號NAT表,結構如下。
這種方式支援 傳輸層協定 (例如TCP、UDP等)的埠對映,並允許多台主機共享一個公網IP位址。
支援埠轉換的NAT又可以分為兩類:源位址轉換和目的位址轉換。前一種情形下發起連接的電腦的IP位址將會被重寫,使得內網主機發出的封包能夠到達外網主機。後一種情況下被連接電腦的IP位址將被重寫,使得外網主機發出的封包能夠到達內網主機。實際上,以上兩種方式通常會一起被使用以支援雙向通訊。
NAPT維護一個帶有IP以及埠號的NAT表,結構如下。
一些高層協定(比如 FTP 、 Quake 、 SIP )在IP包的有效資料內傳送 網路層 (第三層)資訊。比如, 主動模式 的 FTP 使用單獨的埠分別來控制命令傳輸和資料傳輸。當請求一個檔案傳輸時,主機在傳送請求的同時也通知對方自己想要在哪個埠接受資料。但是,如果主機是在一個簡單的NAT防火牆後傳送的請求,那麼由於埠的對映,將會使對方接收到的資訊無效。
一個 應用層閘道 ( Application Layer Gateway ,ALG)可以修正這個問題。執行在NAT防火牆裝置上的 ALG 軟體模組可以更新任何由位址轉換而導致無效的資訊。顯然,ALG需要明白它所要修正的上層協定,所以每個有這種問題的協定都需要有一個單獨的 ALG 。
但是,除 FTP 外的大多數傳統的客戶機-伺服器協定不需要傳送網路層(第三層)資訊,也就不需要 ALG 。
這個問題的另一個可能的解決方法是使用像 STUN 這樣的技術,但是這隻針對建立在 UDP 上的高層協定,並且需要它內建這種技術。這種技術對於對稱NAT也是無效的。還有一種可能的方案是 UPnP ,但它需要和NAT裝置配合起來使用。
下列「圓錐型/對稱型」分類源自已廢止的RFC 3489,且只用於描述UDP上的NAT變體。RFC 4787指出這套術語不足以描述實際NAT行為,因此改以對映與過濾等個別行為描述;其後RFC 5389也從STUN移除NAT類型偵測,理由是現實裝置的變化使該技術過於脆弱。 [ 2 ] [ 3 ] 下表保留該歷史分類:
一旦內部位址(iAddr:iPort)對映到外部位址(eAddr:ePort),所有發自iAddr:iPort的封包都經由eAddr:ePort向外傳送。
任意外部主機都能經由傳送封包給eAddr:ePort到達iAddr:iPort。
一旦內部位址(iAddr:iPort)對映到外部位址(eAddr:ePort),所有發自iAddr:iPort的封包都經由eAddr:ePort向外傳送。
唯iAddr:iPort曾經傳送封包到外部主機(nAddr:any),外部主機才能經由傳送封包給eAddr:ePort到達iAddr:iPort。(註:any指外部主機源埠不受限制。)
類似受限制錐形NAT,但是還有埠限制。
一旦內部位址(iAddr:iPort)對映到外部位址(eAddr:ePort),所有發自iAddr:iPort的封包都經由eAddr:ePort向外傳送。
在受限圓錐型NAT基礎上增加了外部主機源埠必須是固定的。
每一個來自相同內部IP與埠,到一個特定目的地IP和埠的請求,都對映到一個獨特的外部IP和埠。 同一內部IP與埠發到不同的目的地和埠的資訊包,都使用不同的對映。
只有曾經收到過內部主機資料的外部主機,才能夠把封包發回。
負載均衡 :目的位址轉換NAT可以重新導向一些伺服器的連接到其他隨機選定的伺服器。
失效終結:目的位址轉換NAT可以用來提供高可靠性的服務。如果一個系統有一台通過路由器訪問的關鍵伺服器,一旦路由器檢測到該伺服器當機,它可以使用目的位址轉換NAT透明的把連接轉移到一個備份伺服器上。
透明代理 :NAT可以把連接到網際網路的 HTTP 連接重新導向到一個指定的 HTTP 代理伺服器 以快取資料和過濾請求。一些 網際網路服務提供商 就使用這種技術來減少頻寬的使用而不用讓他們的客戶組態他們的 瀏覽器 支援代理連接。
P2P 連線:在純 IPv4 網路中,進行對等連線,例如 VoIP 應用,遊戲機連線,或者 Tailscale 等異地組網(不同於內網穿透,內網穿透對應通訊埠轉發,例如 FRP ,需要 1 台具有全球唯一單播位址的伺服器) 工具(基於 WireGuard ) 等網路嘗試打通 STUN 直連時,需要考慮雙方的 NAT 類型。例如針對埠受限錐型到埠受限錐型,通常能夠成功建立 對等網路 ,因為二者都屬於 EIM 錐型家族( RFC 5780 定義),即 Easy- NAT 。 而針對對稱型和埠受限錐型,會比對稱型到全錐型 困難很多 ,這和對稱型的特徵有關,部分 ISP 在外部埠或 IP 變化時會使用遞增埠,而部分 ISP 會使用隨機埠,甚至有可能需要利用 生日攻擊 來進行 NAT 穿透 。 RFC 5780 本身為對 RFC 3489 的改進,但現實中的網路位址轉譯,比對映規則和過濾規則還要複雜得多。在開源社群有部分針對 RFC 5780 和 3489 規則開發的 NAT 類型和特徵測試器 ,供專業網路工程人員使用。
^ Olaf Kirch; Terry Dawson. Linux Network Administrator's Guide, 2nd Edition . O'Reilly . 2000 [ 2023-12-12 ] . ISBN 1-56592-400-2 . (原始內容 存檔 於2024-02-05).
^ Network Address Translation (NAT) Behavioral Requirements for Unicast UDP . RFC Editor. January 2007 [ 2026-10-09 ] (英語) .
^ Session Traversal Utilities for NAT (STUN) . RFC Editor. October 2008 [ 2026-10-09 ] (英語) .
IPv6至IPv6網路字首翻譯 (NPTv6), IPv6 下的一種NAT實踐
Network Address Translation Traversal of MSDN ( 頁面存檔備份 ,存於 網際網路檔案館 )
http://www.windowsnetworking.com/articles_tutorials/NAT_Windows_2003_Setup_Configuration.html ( 頁面存檔備份 ,存於 網際網路檔案館 )–這篇文章介紹了怎樣在 Windows 2003 中建立和組態NAT
http://www.cisco.com/en/US/about/ac123/ac147/archived_issues/ipj_7-3/anatomy.html ( 頁面存檔備份 ,存於 網際網路檔案館 )
http://computer.howstuffworks.com/nat.htm/printable ( 頁面存檔備份 ,存於 網際網路檔案館 )
RFC 4008 – Standards Track – NAT中的被管理對象的定義
RFC 3022 –傳統NAT
RFC 1631 –已作廢– IP NAT
http://freshmeat.net/projects/nat-traverse/ ( 頁面存檔備份 ,存於 網際網路檔案館 )
自2023年12月需補充來源的條目
拒絕當選首頁新條目推薦欄目的條目