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

圖1
內(nèi)網(wǎng)中的計算機通過三層交換機(sw1)連接到一臺邊緣路由器(r1),邊緣路由器(r1)連接外網(wǎng),server1模擬外網(wǎng)服務(wù)器。
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
②需求
內(nèi)網(wǎng)中的計算機需要訪問外網(wǎng),那就需要進行地址轉(zhuǎn)換,轉(zhuǎn)換關(guān)系如表1。

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

圖2
通過命令:show IP nat translations 可以得到NAT地址轉(zhuǎn)換列表,由圖2 得出:
內(nèi)部私有地址:192.168.0.2 對應(yīng)內(nèi)部公有地址:1.1.1.3
內(nèi)部私有地址:1921.68.0.3 對應(yīng)內(nèi)部公有地址:1.1.1.4
通過數(shù)據(jù)包頭信息,如圖3 所示。

圖3
Pc1 發(fā)送的數(shù)據(jù)包經(jīng)過NAT 轉(zhuǎn)換后,數(shù)據(jù)包的源IP 地址轉(zhuǎn)換為1.1.1.3;pc2 發(fā)送的數(shù)據(jù)包經(jīng)過NAT 轉(zhuǎn)換后,數(shù)據(jù)包的源IP 地址轉(zhuǎn)換為1.1.1.4。
靜態(tài)NAT 的另一個功能是能夠?qū)崿F(xiàn)將內(nèi)部服務(wù)器映射為內(nèi)部公有地址,這樣就能夠?qū)崿F(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)服務(wù)器。在本例中,外網(wǎng)用戶在訪問公有地址1.1.1.3 時,其實訪問的是內(nèi)部的192.168.0.2,如圖4所示。

圖4
外網(wǎng)用戶在訪問公有地址1.1.1.4 時,其實訪問的是內(nèi)部的192.168.0.3,如圖5 所示。

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

圖6
內(nèi)網(wǎng)中的計算機通過三層交換機(sw1)連接到一臺邊緣路由器(r1),邊緣路由器(r1)連接外網(wǎng),server1模擬外網(wǎng)服務(wù)器。
(2)需求
內(nèi)網(wǎng)中192.168.0.0/24 所有地址發(fā)出的數(shù)據(jù)包的源IP 地址均可以通過NAT 轉(zhuǎn)換為公有地址(1.1.1.3-1.1.1.4),從而實現(xiàn)訪問外網(wǎng)。
(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
#定義一個基礎(chǔ)列表1,允許192.168.0.0 網(wǎng)段所有主機進行轉(zhuǎn)換。
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 動態(tài)轉(zhuǎn)換
(4)實現(xiàn)的效果
內(nèi)網(wǎng)192.168.0.0/24 網(wǎng)段的計算機發(fā)出的數(shù)據(jù)包的源IP 地址,均可以被NAT 轉(zhuǎn)換為公有地址池(IPs)中的IP 地址。如圖7 所示。

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

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

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