天天看點

NAT協定(網絡位址轉換協定)詳解

作者:運維法拉令

NAT協定是将IP資料報頭中的IP位址轉換為另外一個IP位址的過程,主要用于實作私有網絡通路公有網絡的功能。這種通過使用少量的IP位址代表較多的私有IP位址的方式,将有助于減少IP位址空間的枯竭。

一、為什麼需要NAT

IPv4位址随着使用者的增多壓力不斷增大,但是每一個路由器的IP位址下面都有很多的私有位址,外部消息隻需要找到這個路由器,這個路由器把消息找到真正目的主機傳遞給它即可。

每一個路由器都可以配置設定很多私有位址,并且不同路由器的私有位址可以重複,通過這種位址轉換,能夠大大增加位址的容量。

私有位址有三種:

①10.0.0.0~10.255.255.255/8

②172.16.0.0~172.31.255.255/12

③192.168.0.0~192.168.255.255/16

這些位址可以在任何組織或企業内部使用,和其他Internet位址的差別就是,僅能在内部使用,不能作為全球路由位址。

對于有Internet通路需求而内部又使用私有位址的網絡,就要在組織的出口位置部署NAT網關,在封包離開私網進入Internet時,将源IP替換為公網位址,通常是出口裝置的接口位址。

一個對外的通路請求在到達目标以後,表現為由本組織出口裝置發起,是以被請求的服務端可将響應由Internet發回出口網關。

網關再将目的位址替換為私網的源主機位址,發回内部。這樣一次由私網主機向公網服務端的請求和響應就在通信兩端均無感覺的情況下完成了。

依據這種模型,數量龐大的内網主機就不再需要公有IP位址了。NAT的轉換示意圖如下所示:

NAT協定(網絡位址轉換協定)詳解

二、NAT的實作方式

NAT的實作方式有三種,即靜态NAT、動态NAT和NAPT。

1.靜态NAT

如果一個内部主機唯一占用一個公網IP,這種方式被稱為一對一模型。此種方式下,轉換上層協定就是不必要的,因為一個公網IP就能唯一對應一個内部主機。

顯然,這種方式對節約公網IP沒有太大意義,主要是為了實作一些特殊的組網需求。比如使用者希望隐藏内部主機的真實IP,或者實作兩個IP位址重疊網絡的通信。

NAT協定(網絡位址轉換協定)詳解

2.動态NAT

它能夠将未注冊的IP位址映射到注冊IP位址池中的一個位址。不像使用靜态NAT那樣,你無需靜态地配置路由器,使其将每個内部位址映射到一個外部位址,但必須有足夠的公有網際網路IP位址,讓連接配接到網際網路的主機都能夠同時發送和接收分組。

NAT協定(網絡位址轉換協定)詳解

3.NAPT

通過使用NAPT,隻需使用一個公網ip位址,就可将數千名使用者連接配接到網際網路。其核心之處就在于利用端口号實作公網和私網的轉換。

面對私網内部數量龐大的主機,如果NAT隻進行IP位址的簡單替換,就會産生一個問題:當有多個内部主機去通路同一個伺服器時,從傳回的資訊不足以區分響應應該轉發到哪個内部主機。

此時,需要NAT裝置根據傳輸層資訊或其他上層協定去區分不同的會話,并且可能要對上層協定的辨別進行轉換,比如TCP或UDP端口号。

這樣NAT網關就可以将不同的内部連接配接通路映射到同一公網IP的不同傳輸層端口,通過這種方式實作公網IP的複用和解複用。

這種方式也被稱為端口轉換PAT、NAPT或IP僞裝,但更多時候直接被稱為NAT,因為它是最典型的一種應用模式。

NAT協定(網絡位址轉換協定)詳解

舉個例子:

用戶端172.18.250.6和百度伺服器202.108.22.5通信,172.18.250.6發送資料時,先轉換為219.155.6.240:1723(任意>1024的随機端口);

然後再利用這個身份發送資料給百度伺服器;然後百度伺服器回應資料并發送給219.155.6.240:1723,NAT網關檢查自己的關聯表,意識到這是自己地私網中172.18.250.6的資料包;然後把這個資料發送給用戶端。

也就是說,我們利用端口号的唯一性實作了公網ip轉換為私網ip的這一步。NAPT能夠使用傳輸層端口号來辨別主機,是以,從理論上說,最多可讓大約65000台主機共用一個公有IP位址。

三、NAT技術的優缺點

1.優點

  • 節省合法的公有ip位址。
  • 位址重疊時,提供解決辦法。

2.缺點

  • 由于内網是私有IP,是以不能直接從公網通路内部網絡服務。
  • 有一些應用程式雖然是用A端口發送資料的,但卻要用B端口進行接收,不過NAT裝置翻譯時卻不知道這一點,它仍然建立一條針對A端口的映射,結果對方響應的資料要傳給B端口時,NAT裝置卻找不到相關映射條目而會丢棄資料包。

繼續閱讀