陸軍,劉佳,楊俊葉
(石家莊理工職業(yè)學(xué)院,河北石家莊050228)
NAT技術(shù)的具體應(yīng)用與實(shí)踐
陸軍,劉佳,楊俊葉
(石家莊理工職業(yè)學(xué)院,河北石家莊050228)
本文闡述了NAT技術(shù)產(chǎn)生的原因,分析了NAT的工作原理和類型,并舉例說(shuō)明在思科路由器上如何配置網(wǎng)絡(luò)地址端口轉(zhuǎn)換,以實(shí)現(xiàn)局域網(wǎng)主機(jī)訪問(wèn)互聯(lián)網(wǎng)上的服務(wù)器。
NAT;PAT;路由器
隨著網(wǎng)絡(luò)用戶的迅猛增長(zhǎng),IPv4的地址空間日趨緊張,在將地址空間從IPv4轉(zhuǎn)到IPv6之前,需要將日益增多的單位內(nèi)部網(wǎng)絡(luò)接入外部網(wǎng)。在申請(qǐng)不到足夠的公網(wǎng)IP地址的情況下,要使單位主機(jī)都能連接到Internet上,必須使用NAT技術(shù)。
NAT英文全稱是NetworkAddress Translation,稱為網(wǎng)絡(luò)地址轉(zhuǎn)換,它是一個(gè)IETF標(biāo)準(zhǔn),允許一個(gè)用戶眾多的機(jī)構(gòu)僅用少量的公網(wǎng)地址連接到Internet上。
(1)內(nèi)部網(wǎng)絡(luò)(Inside):指那些由單位所擁有的網(wǎng)絡(luò),與NAT路由器上被定義為inside的接口相連接。
(2)外部網(wǎng)絡(luò)(Outside):指除了內(nèi)部網(wǎng)絡(luò)之外的所有網(wǎng)絡(luò),稱為Internet網(wǎng)絡(luò),與NAT路由器上被定義為outside的接口相連接。
(3)內(nèi)部本地地址(InsideLocalAddress):內(nèi)部網(wǎng)絡(luò)主機(jī)使用的IP地址。這些地址一般為私有IP地址,它們不能直接在Internet上路由,因而也就不能直接用于對(duì)Internet的訪問(wèn),必須通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換,以合法的公網(wǎng)IP地址的身份來(lái)訪問(wèn)Internet。
(4)內(nèi)部全局地址(InsideGlobal Address):內(nèi)部網(wǎng)絡(luò)使用的公有IP地址,這些地址是向ICANN申請(qǐng)才可取得的公有IP地址。當(dāng)使用內(nèi)部本地地址的主機(jī)要與Internet通信時(shí),NAT轉(zhuǎn)換時(shí)使用的地址。
(5)外部本地地址(OutsideLocal Address):外部網(wǎng)絡(luò)主機(jī)使用的IP地址,這些地址不一定是公有IP地址。
(6)外部全局地址(OutsideGlobal Address):外部網(wǎng)絡(luò)主機(jī)使用的IP地址。這些地址是全局可路由的公有IP地址。
NAT進(jìn)行地址轉(zhuǎn)換的過(guò)程就是本地地址與全局地址之間的轉(zhuǎn)換過(guò)程,無(wú)論數(shù)據(jù)包是從內(nèi)部網(wǎng)絡(luò)發(fā)往外部網(wǎng)絡(luò),還是從外部網(wǎng)絡(luò)發(fā)往內(nèi)部網(wǎng)絡(luò)。不同的只是本地地址和全局地址所對(duì)應(yīng)的網(wǎng)絡(luò)不同,以及數(shù)據(jù)包重新封裝的源和目的地址不同。
在轉(zhuǎn)換過(guò)程中,當(dāng)數(shù)據(jù)包還在內(nèi)部網(wǎng)絡(luò)位置時(shí)有一個(gè)作為源地址的內(nèi)部本地地址和一個(gè)作為目的地址的外部本地地址。此數(shù)據(jù)包首先發(fā)往路由器連接內(nèi)部網(wǎng)絡(luò)的接口中。當(dāng)數(shù)據(jù)包被轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)時(shí),數(shù)據(jù)包的源地址就會(huì)轉(zhuǎn)變?yōu)閮?nèi)部全局地址,而目的地址被轉(zhuǎn)變?yōu)橥獠咳值刂?。也就是把?shù)據(jù)包的所有源和目的地址全部由本地地址轉(zhuǎn)換為全局地址。這個(gè)過(guò)程是通過(guò)NAT中的本地地址與全局地址映射條目來(lái)實(shí)現(xiàn)的,所以事先要在NAT路由器上配置這樣的映射條目。
相反,當(dāng)數(shù)據(jù)包是從外部網(wǎng)絡(luò)位置發(fā)來(lái),并且仍位于外部網(wǎng)絡(luò)中時(shí),則它的源地址就是外部全局地址,目的地址就是內(nèi)部全局地址。相當(dāng)于由內(nèi)部網(wǎng)絡(luò)向外部網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包時(shí),外部網(wǎng)絡(luò)主機(jī)接收到的數(shù)據(jù)包中的源地址和目的地址的互換。而當(dāng)數(shù)據(jù)包被路由器轉(zhuǎn)發(fā)到本地網(wǎng)絡(luò)時(shí),源地址被轉(zhuǎn)變?yōu)橥獠勘镜氐刂罚康牡刂繁晦D(zhuǎn)變?yōu)閮?nèi)部本地地址,也相當(dāng)于由內(nèi)部網(wǎng)絡(luò)向外部網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包時(shí),內(nèi)部網(wǎng)絡(luò)主機(jī)發(fā)送的數(shù)據(jù)包中的源地址和目的地址的互換。
NAT有三種類型:靜態(tài)NAT(StaticNAT)、動(dòng)態(tài)NAT(DynamicNAT)和網(wǎng)絡(luò)地址端口轉(zhuǎn)換PAT(PortAddressTranslation)。
(1)靜態(tài)地址轉(zhuǎn)換:局域網(wǎng)內(nèi)部的私網(wǎng)地址,一對(duì)一地映射為一個(gè)公網(wǎng)地址。
(2)動(dòng)態(tài)地址轉(zhuǎn)換:有一個(gè)供轉(zhuǎn)換用的公網(wǎng)地址池,從地址池中選擇未用的公網(wǎng)地址,實(shí)現(xiàn)私網(wǎng)地址與公網(wǎng)地址間一對(duì)一對(duì)映射轉(zhuǎn)換。可提高公網(wǎng)地址的利用率。
(3)網(wǎng)絡(luò)地址端口轉(zhuǎn)換:用一個(gè)公網(wǎng)地址的一個(gè)端口來(lái)對(duì)應(yīng)一個(gè)私網(wǎng)地址,從而建立起基于IP地址和端口的一一對(duì)應(yīng)關(guān)系。對(duì)于一個(gè)公網(wǎng)IP地址,由于有6萬(wàn)多個(gè)TCP端口,因此,理論上可代理6萬(wàn)多臺(tái)使用私網(wǎng)地址的主機(jī)訪問(wèn)因特網(wǎng)。但實(shí)際上,用戶訪問(wèn)一個(gè)網(wǎng)站,通常要建立多個(gè)TCP連接,實(shí)際能代理的主機(jī)數(shù)通常為4000臺(tái)左右。
4.1 在思科路由器配置NAT的命令
在企業(yè)、學(xué)校的局域網(wǎng)訪問(wèn)Internet時(shí),廣泛使用的是網(wǎng)絡(luò)地址端口轉(zhuǎn)換,網(wǎng)絡(luò)地址端口轉(zhuǎn)換在思科路由器上配置的命令為:
ipnatinside|
ipnatoutside
ipnatpoolnamestart-ipend-ipnetmasknetmask
access-list access-list-numberpermitsource
source-wildcard
ipnatinsidesourcelistaccess–list-number pool
nameoverload
4.2 一個(gè)應(yīng)用NAT配置的實(shí)例
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖所示:
主機(jī)0的ip地址為:172.16.1.2/24默認(rèn)網(wǎng)關(guān):172.16.1.1
主機(jī)1的ip地址為:172.16.1.3/24默認(rèn)網(wǎng)關(guān):172.16.1.1。
主機(jī)2的ip地址為:172.16.1.4/24默認(rèn)網(wǎng)關(guān):172.16.1.1。
服務(wù)器0的ip地址為:135.128.1.2/24默認(rèn)網(wǎng)關(guān):135.128.1.1。
具體配置步驟如下:在路由器0上操作:
Router>en
Router#conf t
Router(config)#host A
A(config)#int f0/0
A(config-if)#ipadd 172.16.1.1 255.255.255.0
A(config-if)#noshut
A(config-if)#intf0/1
A(config-if)#ipadd 210.28.1.2 255.255.255.252
A(config-if)#noshut
A(config-if)#exit
A(config)#iproute 0.0.0.0 0.0.0.0 f0/1
A(config)#intf0/0
A(config-if)#ipnatinside
A(config-if)#intf0/1
A(config-if)#ipnatoutside
A(config-if)#exit
A(config)#ip nat pool jspinj 210.28.1.2 210.28.1.2
netmask 255.255.255.252
A(config)#acc 10 per 172.16.1.0 0.0.0.255
A(config)#ip nat inside source list 10 pool jspi-nj
overload
A(config)#end
A#wri
在路由器1上操作:
Router>en
Router#conf t
Router(config)#host B
B(config)#int f0/0
B(config-if)#ip add 135.128.1.1 255.255.255.0
B(config-if)#no shut
B(config-if)#int f0/1
B(config-if)#ip add 210.28.1.1 255.255.255.252
B(config-if)#no shut
B(config-if)#end
B#wri
用主機(jī)0訪問(wèn)服務(wù)器0的內(nèi)容,在路由器0上執(zhí)行show ip nat translations可查看NAT轉(zhuǎn)換情況。
(1)NAT使得IP協(xié)議從面向無(wú)連接變成面向連接。NAT必須維護(hù)專用IP地址與公用IP地址以及端口號(hào)的映射關(guān)系。在TCP/IP協(xié)議體系中,如果一個(gè)路由器出現(xiàn)故障,不會(huì)影響到TCP協(xié)議的執(zhí)行。因?yàn)橹灰獛酌胧詹坏綉?yīng)答,發(fā)送進(jìn)程就會(huì)進(jìn)入超時(shí)重傳處理。而當(dāng)存在NAT時(shí),最初設(shè)計(jì)的TCP/IP協(xié)議過(guò)程將發(fā)生變化,Internet可能變得比較脆弱。
(2)NAT違反了基本的網(wǎng)絡(luò)分層結(jié)構(gòu)模型的設(shè)計(jì)原則。因?yàn)樵趥鹘y(tǒng)的網(wǎng)絡(luò)分層結(jié)構(gòu)模型中,第N層是不能修改第N+1層的報(bào)頭內(nèi)容的。NAT破壞了這種各層獨(dú)立的原則。
(3)有些應(yīng)用是將IP地址插入到正文的內(nèi)容中,例如標(biāo)準(zhǔn)的FTP協(xié)議與IPPhone協(xié)議H.323。如果NAT與這一類協(xié)議一起工作,那么NAT協(xié)議一定要做適當(dāng)?shù)匦拚?。同時(shí),網(wǎng)絡(luò)的傳輸層也可能使用TCP與UDP協(xié)議之外的其他協(xié)議,那么NAT協(xié)議必須知道并且做相應(yīng)的修改。由于NAT的存在,使得P2P應(yīng)用實(shí)現(xiàn)出現(xiàn)困難,因?yàn)镻2P的文件共享與語(yǔ)音共享都是建立在IP協(xié)議的基礎(chǔ)上的。
總的來(lái)說(shuō),NAT帶來(lái)了很大的優(yōu)越性,可以節(jié)約地址空間、可以簡(jiǎn)化配置、使網(wǎng)絡(luò)規(guī)劃更靈活。但是,它對(duì)網(wǎng)絡(luò)應(yīng)用帶來(lái)了一定的影響,也給網(wǎng)絡(luò)管理帶來(lái)了一定的復(fù)雜性,并且會(huì)潛在的影響網(wǎng)絡(luò)安全性,所以在使用時(shí)一定要仔細(xì)的規(guī)劃。
[1]馮昊.交換機(jī)/路由器配置與管理[M].北京:清華大學(xué)大學(xué)出版社,2010
[2]胡芝.計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)指南[M].杭州:浙江大學(xué)出版社,2011
[3]蔣玲.網(wǎng)絡(luò)工程師培訓(xùn)教程[M].成都:四川大學(xué)出版社,2010
TP393.2
A
JL01-0229(2013)04-0015-03
2013-09-26
責(zé)任編輯:封軍來(lái)
校對(duì):曹軍校
陸軍(1969-),男,漢族,河北石家莊市人,網(wǎng)絡(luò)與信息學(xué)院,高級(jí)工程師,主要從事計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)與研究工作。