網路地址轉換（，縮寫：），又稱 IP 動態偽裝，是一種在 IP 封包透過路由器或防火牆時重寫來源或目的 IP 地址或埠的技術。這種技術普遍應用於有多臺主機，但只通過一個公有 IP 地址訪問網際網路的私有網路中。 NAT 技術部署方便，且得到了廣泛應用。然而，NAT 也讓主機之間的通訊變得複雜，導致了通訊效率的降低。 概述 1990 年代中期，NAT 是作為一種解決 IPv4 地址短缺以避免保留 IP 地址困難的方案而流行起來的。網路地址轉換在很多國家廣泛使用。所以 NAT 就成了家庭和小型辦公室網路連線上的路由器的一個標準特徵，因為對他們來說，申請獨立的 IP 地址的代價要高於所帶來的效益。 在一個典型的配置中，一個本地網路使用一個專有網路的指定子網（比如 192168xx 或 10xxx）和連在這個網路上的一個路由器。這個路由器佔有這個網路地址空間的一個專有地址（比如 19216801），同時它還透過一個或多個因特網服務提供商提供的公有的 IP 地址（叫做 過載 NAT）連線到因特網上。當資訊由本地網路向因特網傳遞時，源地址從專有地址轉換為公用地址。由路由器跟蹤每個連線上的基本資料，主要是目的地址和埠。當有回覆返回路由器時，它透過輸出階段記錄的連線跟蹤資料來決定該轉發給內部網的哪個主機；如果有多個公用地址可用，當資料包返回時，TCP 或 UDP 客戶機的埠號可以用來分解資料包。對於因特網上的通訊，路由器本身充當源和目的。 流行在網路上的一種看法認為，IPv6 的廣泛採用將使得 NAT 不再需要，因為 NAT 只是一個處理 IPv4 的地址空間不足的方法。 缺點 在一個具有 NAT 功能的路由器下的主機並沒有建立真正的對外 IP 位址，並且不能參與一些因特網協議。一些需要初始化從外部網路建立的 TCP 連線和無狀態協議（比如 UDP）無法實現。除非 NAT 路由器管理者預先設定了規則，否則送來的資料包將不能到達正確的目的地址。一些協議有時可以在應用層閘道器（見下）的輔助下，在參與 NAT 的主機之間容納一個 NAT 的例項，比如。NAT 也會使安全協議變得複雜，比如。 端對端連線是被支援的核心因特網協議之一，因此有些人據此認為 NAT 是對公用因特網的一個破壞。一些因特網服務提供商（ISP）只向他們的客戶提供本地 IP 地址，所以他們必須透過 NAT 來訪問網路以外的服務，並且這些公司能不能算得上真正的提供了因特網服務的話題也被談起。 優點 NAT 除了帶來方便和低成本之外，對全雙工連線支援的缺少在一些情況下可以看作是優點而不是限制。在一定程度上，NAT 依賴於本地網路上的一臺機器來初始化和路由器另一邊的主機的所有連線，它可以阻止外部網路上的惡意活動。這樣就可以阻止網路蠕蟲病毒來提高本地系統的可靠性，阻擋惡意瀏覽來提高本地系統的私密性。很多具有 NAT 功能的防火牆都是使用這種功能來提供核心保護的。另外，它也為 UDP 的跨區域網的傳輸提供了方便性。 型別 基本網路地址轉換（Basic NAT） 這一種也可稱作 NAT 或 靜態 NAT，在中提供了資訊。它在技術上比較簡單，僅支援地址轉換，不支援埠對映。Basic NAT 要求對每一個當前連線都要對應一個公網 IP 地址，因此要維護一個公網的地址池。寬頻（broadband）路由器通常使用這種方式來允許一臺指定的裝置去管理所有的外部連結，甚至當路由器本身只有一個可用外部 IP 時也如此，這臺路由器有時也被標記為 DMZ 主機。由於改變了 IP 源地址，在重新封裝資料包時候必須重新計算校驗和，網路層以上的只要涉及到 IP 地址的頭部校驗和都要重新計算。 Basic NAT 要維護一個無埠號 NAT 表，結構如下。 內網 IP 外網 IP 192168155 219152168222 192168159 219152168223 1921681155 219152168224 網路地址埠轉換（NAPT） 這種方式支援傳輸層協議（例如 TCP、UDP 等）的埠對映，並允許多臺主機共享一個公網 IP 地址。 支援埠轉換的 NAT 又可以分為兩類：源地址轉換和目的地址轉換。前一種情形下發起連線的計算機的 IP 地址將會被重寫，使得內網主機發出的資料包能夠到達外網主機。後一種情況下被連線計算機的 IP 地址將被重寫，使得外網主機發出的資料包能夠到達內網主機。實際上，以上兩種方式通常會一起被使用以支援雙向通訊。 NAPT 維護一個帶有 IP 以及埠號的 NAT 表，結構如下。 內網 IP 外網 IP 1921681555566 2191521682229200 19216815980 2191521682229201 1921681594465 2191521682229202 受到 NAT 影響的應用程式 一些高層協議（比如 FTP、Quake、SIP）在 IP 包的有效資料內傳送網路層（第三層）資訊。比如，主動模式的 FTP 使用單獨的埠分別來控制命令傳輸和資料傳輸。當請求一個檔案傳輸時，主機在傳送請求的同時也通知對方自己想要在哪個埠接受資料。但是，如果主機是在一個簡單的 NAT 防火牆後傳送的請求，那麼由於埠的對映，將會使對方接收到的資訊無效。 一個應用層閘道（，ALG）可以修正這個問題。執行在 NAT 防火牆裝置上的軟體模組可以更新任何由地址轉換而導致無效的資訊。顯然，ALG 需要明白它所要修正的上層協議，所以每個有這種問題的協議都需要有一個單獨的。 但是，除外的大多數傳統的客戶機－伺服器協議不需要傳送網路層（第三層）資訊，也就不需要。 這個問題的另一個可能的解決方法是使用像這樣的技術，但是這隻針對建立在上的高層協議，並且需要它內建這種技術。這種技術對於對稱 NAT 也是無效的。還有一種可能的方案是，但它需要和 NAT 裝置配合起來使用。 轉換和過濾方式 以下型別是基於 RFC 3489 所定義： 完全圓錐型 NAT（，也叫 NAT1） 一旦內部地址（iAddriPort）對映到外部地址（eAddrePort），所有發自 iAddriPort 的封包都經由 eAddrePort 向外傳送。 任意外部主機都能經由傳送封包給 eAddrePort 到達 iAddriPort。 受限圓錐型 NAT（，也叫 NAT2） 一旦內部地址（iAddriPort）對映到外部地址（eAddrePort），所有發自 iAddriPort 的封包都經由 eAddrePort 向外傳送。 唯 iAddriPort 曾經傳送封包到外部主機（nAddrany），外部主機才能經由傳送封包給 eAddrePort 到達 iAddriPort。（注：any 指外部主機源埠不受限制。） 埠受限圓錐型 NAT（，也叫 NAT3） 類似受限制錐形 NAT，但是還有埠限制。 一旦內部地址（iAddriPort）對映到外部地址（eAddrePort），所有發自 iAddriPort 的封包都經由 eAddrePort 向外傳送。 在受限圓錐型 NAT 基礎上增加了外部主機源埠必須是固定的。 對稱 NAT（，也叫 NAT4） 每一個來自相同內部 IP 與埠，到一個特定目的地 IP 和埠的請求，都對映到一個獨特的外部 IP 和埠。 同一內部 IP 與埠發到不同的目的地和埠的資訊包，都使用不同的對映。 只有曾經收到過內部主機資料的外部主機，才能夠把封包發回。 其他用途 負載均衡：目的地址轉換 NAT 可以重定向一些伺服器的連線到其他隨機選定的伺服器。 失效終結：目的地址轉換 NAT 可以用來提供高可靠性的服務。如果一個系統有一臺透過路由器訪問的關鍵伺服器，一旦路由器檢測到該伺服器當機，它可以使用目的地址轉換 NAT 透明的把連線轉移到一個備份伺服器上。 透明代理：NAT 可以把連線到因特網的連線重定向到一個指定的代理伺服器以快取資料和過濾請求。一些因特網服務提供商就使用這種技術來減少頻寬的使用而不用讓他們的客戶配置他們的瀏覽器支援代理連線。 參考資料 參見 NAT 穿越 IPv4 地址枯竭 埠轉發 電信級 NAT STUN TURN ICE IPv6 至 IPv6 網路字首翻譯（NPTv6），IPv6 下的一種 NAT 實踐 外部連結 Network Address Translation Traversal of MSDN httpwwwwindowsnetworkingcomarticles_tutorialsNAT_Windows_2003_Setup_Configurationhtml 這篇文章介紹了怎樣在中建立和配置 NAT httpwwwciscocomenUSaboutac123ac147archived_issuesipj_73anatomyhtml httpcomputerhowstuffworkscomnathtmprintable NAT 中的被管理物件的定義 傳統 NAT 已作廢 httpfreshmeatnetprojectsnattraverse N