席東
(河南省駐馬店財經學校,駐馬店463000)
當前使用的IP 地址為IPv4 版本,它由32 位二進制組成,共有2 的32 次方,即大概42.9 億個IP 地址,但是這些IP 地址中還有一部分保留地址、網絡地址、廣播地址、本地環回地址、組播地址,所以能夠被分配使用的IP 數量非常有限。
根據網絡協議,要求網絡設備如需接入網絡,就必須要給網絡設備配置一個IP 地址,于是IPv4 地址資源就顯得嚴重不足,那么如何才能使用有限的IP 地址將無數個網絡設備接入到互聯網中呢?
人們從有限的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
這些地址不向任何用戶分配,被IANA 作為私有地址保留下來,這些地址可以被任何組織、企業或個人內部使用。除去各種保留地址及私有地址剩下的都是公有地址。公有地址可以在互聯網進行路由,需要申請,繳費才能使用。私有地址與公有地址的區別在于,私有地址僅能在企業、組織、個人內部(局域網)使用,不能作為全球路由地址,也就是說,出了組織的局域網這些地址就不再有意義了。那么對于一個局域網來說,如果不需要連接到Internet,就可以使用私有地址而不用向任何組織申請、注冊。
那么使用私有地址的設備如要訪問互聯網,就需要進行地址轉換,將私有地址轉換為公有地址。
NAT:網絡地址轉換,就是將IP 數據報頭中的IP地址轉換為另一個IP 地址的過程,可以實現私有IP 地址與公網IP 地址間的轉換。
OSI 的網絡層將數據封裝成數據包時,IP 數據包需要兩個非常重要的信息分別是,源地址(發送數據包的網絡設備的接口地址)及目標地址(接收數據包的網絡設備的接口地址)。
配置有NAT 功能的三層設備,在解析接收到的數據包時,如果匹配既定的NAT 規則,則會對IP 數據包中的源IP 地址或目標IP 地址進行轉換。
NAT 技術一般可以分為動態NAT、靜態NAT 和PNAT 三種。
(1)靜態NAT(Static Nat)
靜態NAT 是指將內部網絡的私有IP 地址轉換為外部公有IP 地址時是一一對應的,是靜態的,是不會改變的。即某個私有IP 地址只能轉換為某個固定的公有IP 地址,這樣應用的情況較少,因為這需要大量的公有IP 地址。舉例如下:
①網絡環境

圖1
內網中的計算機通過三層交換機(sw1)連接到一臺邊緣路由器(r1),邊緣路由器(r1)連接外網,server1模擬外網服務器。
pc1:
IP:192.168.0.2 netmask :255.255.255.0 gateway:192.168.0.1
pc2:
IP:192.168.0.3 netmask:255.255.255.0 gateway:192.168.0.1
server1:
IP:1.1.1.2 netmask:255.255.255.0
②需求
內網中的計算機需要訪問外網,那就需要進行地址轉換,轉換關系如表1。

表1
③主要配置
邊緣路由器(r1):
interface FastEthernet0/0
IP address 192.168.1.2 255.255.255.0
IP nat inside
#設置路由器r1 的fa0/0 接口為NAT 的入口
interface FastEthernet0/1
IP address 1.1.1.1 255.255.255.0
IP nat outside
#設置路由器r1 的fa0/1 接口為NAT 的出口
IP nat inside source static 192.168.0.2 1.1.1.3
#將內部私有地址(192.168.0.2)與內部公有地址(1.1.1.3)進行靜態對應。
IP nat inside source static 192.168.0.3 1.1.1.4
#將內部私有地址(192.168.0.3)與內部公有地址(1.1.1.4)進行靜態對應。
④實現的效果
內部計算機通過NAT,將私有地址轉換為公有地址,轉換過程如圖2。

圖2
通過命令:show IP nat translations 可以得到NAT地址轉換列表,由圖2 得出:
內部私有地址:192.168.0.2 對應內部公有地址:1.1.1.3
內部私有地址:1921.68.0.3 對應內部公有地址:1.1.1.4
通過數據包頭信息,如圖3 所示。

圖3
Pc1 發送的數據包經過NAT 轉換后,數據包的源IP 地址轉換為1.1.1.3;pc2 發送的數據包經過NAT 轉換后,數據包的源IP 地址轉換為1.1.1.4。
靜態NAT 的另一個功能是能夠實現將內部服務器映射為內部公有地址,這樣就能夠實現外網訪問內網服務器。在本例中,外網用戶在訪問公有地址1.1.1.3 時,其實訪問的是內部的192.168.0.2,如圖4所示。

圖4
外網用戶在訪問公有地址1.1.1.4 時,其實訪問的是內部的192.168.0.3,如圖5 所示。

圖5
(2)動態NAT(Dynamic Nat)
動態NAT 是指在具備NAT 技術的網絡設備上配置由多個公有IP 地址組成的地址池,在進行內部網絡的私有IP 地址轉換為公用IP 地址時,私有地址與公有地址的對應關系不是確定的,而是隨機的。所有允許被NAT 進行轉換的私有IP 地址可以隨機轉換為公有地址池中任一個公有IP 地址。也就是說,只要指定哪些內部地址可以進行轉換,以及用哪些合法地址作為公有地址池,就可以進行IP 地址的動態轉換。
(1)網絡環境

圖6
內網中的計算機通過三層交換機(sw1)連接到一臺邊緣路由器(r1),邊緣路由器(r1)連接外網,server1模擬外網服務器。
(2)需求
內網中192.168.0.0/24 所有地址發出的數據包的源IP 地址均可以通過NAT 轉換為公有地址(1.1.1.3-1.1.1.4),從而實現訪問外網。
(3)主要配置
邊緣路由器(r1):
interface FastEthernet0/0
IP address 192.168.1.2 255.255.255.0
IP nat inside
interface FastEthernet0/1
IP address 1.1.1.1 255.255.255.0
IP nat outside
access-list 1 permit 192.168.0.0 0.0.0.255
#定義一個基礎列表1,允許192.168.0.0 網段所有主機進行轉換。
IP nat pool IPs 1.1.1.3 1.1.1.4 netmask 255.255.255.0
#定義一個由1.1.1.3 到1.1.1.4 組成的公有地址池(IPs)
IP nat inside source list 1 pool IPs
#開啟NAT 動態轉換
(4)實現的效果
內網192.168.0.0/24 網段的計算機發出的數據包的源IP 地址,均可以被NAT 轉換為公有地址池(IPs)中的IP 地址。如圖7 所示。

圖7
由圖7 可見,內網192.168.0.2 經NAT 轉換為1.1.1.4;內網192.168.0.4 經NAT 轉換為1.1.1.3。但由于公用地址池中只有兩個公用IP(1.1.1.3 和1.1.1.4),已經被192.168.0.2 和192.168.0.4 占用,由于公有地址池中可用IP 已經用盡,所以內網中的其他私有地址,將不能進行轉換,如圖8 所示。

圖8
由此得出,動態NAT 雖然能夠動態進行私有地址與公有地址間的地址轉換,但要求公有地址池中要有足夠的公用IP 地址。動態NAT 在公有IP 地址不足時,采取先到先得,如果公有地址分配完畢,其他的地址轉換請求就不再進行的策略,弊端很多,一般很少使用。
(3)NAT 重載
動態NAT 及靜態NAT 技術都不能滿足大量私有地址同時訪問外網的需求。PNAT 改進了地址轉換機制,在內網進行對外的訪問時,除了將數據包源地址改為外網地址以外,同時還將各個數據包所包含的通訊端口號進行了修改,以保證當數據包從NAT 設備轉發出去后各個主機的源端口號不同。當數據從外部返回時,NAT 設備根據其中的目的端口號和內網地址的對應關系再將數據包轉發回到內網主機。這樣就可以實現使用一個或少量的公網IP 地址,完成局域網中大量使用私有地址的網絡設備同時接入互聯網。
網絡環境和網絡需求與動態NAT 保持一致,最主要的區別在于多路復用NAT,在配置NAT 地址轉換時加上overload,允許公有地址復用,如圖9 所示。

圖9
可以得出公有地址1.1.1.3 通過使用不同端口實現了三個私有地的復用地址轉換。
NAT 重載也是一種動態NAT,它利用端口將多個私有IP 地址映射到一個(或多個,能夠實現負載分擔,提高時效)公網IP 地址(實現多個私有地址對一個公有地址)。通過使用PNAT(NAT 重載),只需使用一個或幾個公網IP 地址,就可將成百上千個網絡設備連接到互聯網。
NAT 重載最大限度地節約了IP 地址資源,NAT 重載是現實生活中使用最為廣泛的一種NAT 技術。
NAT 緩解IPv4 地址不足的問題,在地址重疊時也可以提供解決方案,能夠更加靈活地將網絡設備連接到互聯網。但是由于NAT 轉換需要消耗網絡設備的軟、硬件資源,勢必會造成路由延遲;由于IP 地址經過了轉換也會導致端到端的IP 追蹤無法進行;甚至會造成一些應用程序無法正常運行。
NAT 技術緩解了IPv4 地址資源不足的問題,并且在一定程序上能夠實現路由的負載分擔。但是IPv4地址在不久的將來勢必枯竭,NAT 技術不能徹底解決IP 地址空間不足的實質問題。使用IPv6 技術才能從根本上解決IP 地址不足的問題,不過NAT 技術在IPv4 轉換到IPv6 的過程中,發揮著不可或缺的作用。