網路工程師入門系列 | NAT網路地址轉換
- 2020 年 1 月 13 日
- 筆記

在公司內網一般使用私有IP地址,但私有IP不允許在Internet上使用,全部使用公網IP需要支付高額費用,於是很多公司採用NAT技術實現對Internet的訪問。更多時候NAT功能是直接在路由器上實現的。
一.NAT概述
1.NAT的概念
當在專用網內部的一些主機本來已經分配到了本地IP地址(即僅在本專用網內使用的專用地址),但現在又想和網際網路上的主機通訊(並不需要加密)時,可使用NAT方法。
這種方法需要在專用網連接到網際網路的路由器上安裝NAT軟體。裝有NAT軟體的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通訊時,都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和網際網路連接。
另外,這種通過使用少量的公有IP 地址代表較多的私有IP 地址的方式,將有助於減緩可用的IP地址空間的枯竭
① 私有 IP 地址是指內部網路或主機的IP 地址,公有IP 地址是指在網際網路上全球唯一的IP 地址。RFC 1918 為私有網路預留出了三個IP 地址塊,如下:
A 類:10.0.0.0~10.255.255.255 B 類:172.16.0.0~172.31.255.255 C 類:192.168.0.0~192.168.255.255
上述三個範圍內的地址不會在網際網路上被分配,因此可以不必向ISP 或註冊中心申請而在公司或企業內部自由使用
二.NAT的轉換方式
NAT的實現方式有三種,即靜態轉換Static Nat、動態轉換Dynamic Nat和埠多路復用OverLoad。
①靜態轉換是指將內部網路的私有IP地址轉換為公有IP地址,IP地址對是一對一的,是一成不變的,某個私有IP地址只轉換為某個公有IP地址。藉助於靜態轉換,可以實現外部網路對內部網路中某些特定設備(如伺服器)的訪問。
②動態轉換是指將內部網路的私有IP地址轉換為公用IP地址時,IP地址是不確定的,是隨機的,所有被授權訪問上Internet的私有IP地址可隨機轉換為任何指定的合法IP地址。也就是說,只要指定哪些內部地址可以進行轉換,以及用哪些合法地址作為外部地址時,就可以進行動態轉換。動態轉換可以使用多個合法外部地址集。當ISP提供的合法IP地址略少於網路內部的電腦數量時。可以採用動態轉換的方式。
③埠多路復用(Port address Translation,PAT)是指改變外出數據包的源埠並進行埠轉換,即埠地址轉換(PAT,Port Address Translation).採用埠多路復用方式。內部網路的所有主機均可共享一個合法外部IP地址實現對Internet的訪問,從而可以最大限度地節約IP地址資源。同時,又可隱藏網路內部的所有主機,有效避免來自internet的攻擊。因此,目前網路中應用最多的就是埠多路復用方式。
ALG(Application Level Gateway),即應用程式級網關技術:傳統的NAT技術只對IP層和傳輸層頭部進行轉換處理,但是一些應用層協議,在協議數據報文中包含了地址資訊。為了使得這些應用也能透明地完成NAT轉換,NAT使用一種稱作ALG的技術,它能對這些應用程式在通訊時所包含的地址資訊也進行相應的NAT轉換。例如:對於FTP協議的PORT/PASV命令、DNS協議的 「A」 和 「PTR」 queries命令和部分ICMP消息類型等都需要相應的ALG來支援。
如果協議數據報文中不包含地址資訊,則很容易利用傳統的NAT技術來完成透明的地址轉換功能,通常我們使用的如下應用就可以直接利用傳統的NAT技術:HTTP、TELNET、FINGER、NTP、NFS、ARCHIE、RLOGIN、RSH、RCP等。
三.NAT的工作方式
藉助於NAT,私有(保留)地址的"內部"網路通過路由器發送數據包時,私有地址被轉換成合法的IP地址,一個區域網只需使用少量IP地址(甚至是1個)即可實現私有地址網路內所有電腦與Internet的通訊需求。
NAT將自動修改IP報文的源IP地址和目的IP地址,Ip地址校驗則在NAT處理過程中自動完成。有些應用程式將源IP地址嵌入到IP報文的數據部分中,所以還需要同時對報文的數據部分進行修改,以匹配IP頭中已經修改過的源IP地址。否則,在報文數據部分嵌入IP地址的應用程式就不能正常工作。
1.靜態NAT
2.動態轉換
四、NAPT
1.NAPT地址轉換
當公司用戶超過200個,動態NAT技術就無法滿足需求了,因為無論是靜態NAT還是還是動態NAT,同一時刻一個公有IP地址只能與一個私有IP地址進行映射(綁定)。
為了進一步提高公有IP地址的利用率,使得一個公有IP地址可以與多個私有IP地址進行映射,我們可以使用NAPT技術。 NAPT的原理就是將TCP報文與UDP報文中的埠號作為映射參數納入公有IP地址與私有IP地址之間的映射關係中,從而使得同一個公有IP地址在同一時刻可以與多個私有IP地址進行映射。
五、Easy IP
Easy IP 技術是NAPT的一種簡化情況, Easy IP 無需建立公有IP地址資源池,因為 Easy IP 只會用到一個公有IP地址,該IP地址就是路由器與外網伺服器連接的介面地址。
六、NAT Server
NAT Server是最常用的基於目的地址的NAT 。當內網部署了一台伺服器,其真實IP是私網地址,但是希望公網用戶可以通過一個公網地址來訪問該伺服器,這時可以配置NAT Server,使設備將公網用戶訪問該公網地址的報文自動轉發給內網伺服器。
NAT Server功能使得內部伺服器可以供外部網路訪問。外部網路的用戶訪問內部伺服器時,NAT將請求報文的目的地址轉換成內部伺服器的私有地址。對內部伺服器回應報文而言,NAT還會自動將回應報文的源地址(私網地址)轉換成公網地址。
NAT Server可以通過靜態IP(即global IP地址)和動態IP(即介面IP地址)兩種方式實現地址轉換。當通過global IP地址配置NAT Server後,再通過基於介面地址的方式配置NAT Server,當被借用的介面的地址與global IP地址相同時,二者衝突,基於介面方式的NAT Server不生效。
七、NAT的特性
網路地址與埠號轉換其特點是:
(1)在路由器轉發IP數據報時NAPT對IP地址和埠號都進行轉換轉換過程如下對於出專用網的數據把專用網內不同的源IP地址轉換為同樣的全球IP地址把源主機埠號轉換為不同的新的埠號;對於入專用網的應答NAPT根據不同的目的埠號從NAPT轉換表中找到正確的目的主機。
(2)NAPT工作在網路層和傳輸層。NAT優點:(1)通過NAT專用網內部主機可使用專用地址與網際網路上的主機通訊。(2)通過NAT一個全球合法IP地址可被多台專用網內部主機分享使用節省全球IP地址資源。NAT缺點:通訊必須由專用網內的主機發起專用網內部的主機不能充當伺服器。
1. NAT的優點
- ①節省公有合法IP地址
- ②處理地址交叉
- ③增強靈活性
- ④安全性
2.NAT的缺點
- ①延遲增大
- ②配置和維護的複雜性
- ③不支援某些應用
八、NAT故障處理
在實際工作中經常會碰到NAT故障,這些問題基本上可以歸於兩類,分別是配置錯誤和沒有正確理解NAT的工作方式。 出現這些問題的徵兆基本相同,即內部區域網的IP地址被配置了NAT,而內部的區域網絡卻沒有像預期結果那樣能夠訪問外部網路。
如果理解了實施NAT要到達的目標,然後通過查看配置,檢查下面的錯誤是否是問題的原因,一般可以將問題解決。
1.是否設置了ACL,阻塞了進行過NAT或者沒有進行過NAT的流量,配置時要牢記與ACL相關的NAT操作。如果針對沒有進行ACL的流量配置了ACL,而到達的流量實際上是進行了NAT的流量,這就導致流量被丟棄。
2.定義需要進行NAT的ACL時,漏掉了需要進行地址轉換的網路,用來定義需要進行NAT操作的網路地址的ACL,應該包括所有需要進行NAT的網路。如果列表中缺少一個或很多個地址,都將導致無法對來自這些地址的流量進行NAT。
3.在NAT語句中漏掉了overload
關鍵字。為了建立PAT
,在NAT配置命令的最後,必須是用overload關鍵字。漏掉這個關鍵字,將會導致無法進行PAT,最終將會導致只有數目有限的主機可以訪問公用網路或者互聯網,而不是期望中的所有主機。
4.不對稱路由導致NAT失敗。當分組進入一個使用 ip nat inside
命令進行配置的介面時,以及離開使用ip nat outside
命令配置的介面時,就會發生NAT。在有很多介面的路由器上,必須確保需要進行NAT流量進入路由器的所有介面都是用 ip nat inside
命令進行配置的,而這個流量離開的所有介面都是用ip nat outside
命令配置的。否則,流量在經過沒有使用正確的NAT命令配置的介面時,無法進行NAT。
5.NAT地址池和靜態NAT表項中有重疊地址。確保NAT地址池中的 ip 地址也不能用於靜態NAT,這是很重要的,否則將會導致間斷性的NAT失敗。如果將廣播地址配置到NAT地址池中,也會出現間斷性的NAT失敗。
6.inside
和outside
介面配置錯誤,也會造成NAT失敗。
比較有用的排錯命令是 show ip nat statistics
,可以通過此命令查看NAT的各種資訊。如果想要跟蹤NAT的操作,可以使用debug ip nat
命令顯示出每個轉換的數據包。

技
術
是
用
來
學
的
,
不
是
用
來
收
藏
的
!