網(wǎng)絡(luò)地址轉(zhuǎn)換原理
網(wǎng)絡(luò)地址轉(zhuǎn)換原理及其配置實(shí)例發(fā)表時(shí)間:2010-1-4 王茂芝 郭科 來(lái)源:萬(wàn)方數(shù)據(jù)關(guān)鍵字:網(wǎng)絡(luò)模型 尋址 網(wǎng)絡(luò)地址轉(zhuǎn)換 網(wǎng)絡(luò)連接介紹了網(wǎng)絡(luò)分層模型。闡述了不同層次尋址的概念和內(nèi)容以及具體實(shí)施過(guò)程。指
網(wǎng)絡(luò)地址轉(zhuǎn)換原理及其配置實(shí)例
發(fā)表時(shí)間:2010-1-4 王茂芝 郭科 來(lái)源:萬(wàn)方數(shù)據(jù)
關(guān)鍵字:網(wǎng)絡(luò)模型 尋址 網(wǎng)絡(luò)地址轉(zhuǎn)換 網(wǎng)絡(luò)連接
介紹了網(wǎng)絡(luò)分層模型。闡述了不同層次尋址的概念和內(nèi)容以及具體實(shí)施過(guò)程。指出了網(wǎng)絡(luò)地址轉(zhuǎn)換NA T 技術(shù)的核心思想是以端口空間換地址空聞,并詳細(xì)解釋了NAT 技術(shù)的原理和實(shí)施過(guò)程。最后給出了一個(gè)基于NA T 技術(shù)的配置實(shí)例。
1 引言
隨著計(jì)算機(jī)的普及以及Internet 應(yīng)用的推廣,越來(lái)越多的計(jì)算機(jī)通過(guò)各種方式接入到Internet 中。但現(xiàn)行Internet 的IP 地址(IPv4)采用的是32位的編址方式,從而導(dǎo)致口地址的分配面臨“枯竭”的危險(xiǎn)。針對(duì)這一潛在威脅,現(xiàn)已采用了一系列的補(bǔ)救措施。其中最徹底的措施是把IPv4升級(jí)為IPv6,使地址空間從32位擴(kuò)充為128位。還有就是基于網(wǎng)絡(luò)私有地址劃分的代理(Proxy)技術(shù)和網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translator,NA T) 技術(shù)心。對(duì)一個(gè)局域網(wǎng)而言,使用這兩種技術(shù),理論上只需為其分配一個(gè)可路由的IP 地址,就可實(shí)現(xiàn)全網(wǎng)絡(luò)機(jī)器接入并訪問(wèn)Internet ,從而達(dá)到節(jié)約IP 地址的目的。其中,代理技術(shù)是一種應(yīng)用級(jí)的解決方案:由于此時(shí)網(wǎng)絡(luò)活動(dòng)的每個(gè)報(bào)文,都要從物理層一直上升到應(yīng)用層才能得到處理,所以延時(shí)大,效率和通用性較差;而NA T 技術(shù)則是應(yīng)用層以下的解決方案,所以性能和通用性較好。
本文在給出網(wǎng)絡(luò)分層模型和尋址的概念后,探討NAT 技術(shù)的原理,并給出了一個(gè)配置實(shí)例。為實(shí)驗(yàn)室網(wǎng)絡(luò)維護(hù)與管理提供了借鑒和參考。
2網(wǎng)絡(luò)分層模型與尋址
基于TCP /IP 技術(shù)的Internet 網(wǎng)絡(luò)分層模型如圖1所示。需要說(shuō)明的是,關(guān)于TCP /IP 的層次結(jié)構(gòu)模型有些文獻(xiàn)中分為4層:應(yīng)用層、傳輸層、IP 層(互聯(lián)網(wǎng)層) 、網(wǎng)絡(luò)接口層。本文把網(wǎng)絡(luò)接口層分成網(wǎng)絡(luò)接口和物理硬件2部分(見(jiàn)圖1) 。
TCP /IP 模型這種概念分層包含了2個(gè)重要的分界線:(1)協(xié)議地址分界線,用以區(qū)分高層和低層的尋址。具體地講就是高層用IP 地址,而低層用的是物理(MAC)地址;(2)操作系統(tǒng)分界線,用以區(qū)分系統(tǒng)程序和應(yīng)用程序。具體講就是傳輸層以上的為應(yīng)用程序,以下的通常為系統(tǒng)程序。應(yīng)用程序通過(guò)一種所謂的端口機(jī)制(Socket機(jī)制) 訪問(wèn)操作系統(tǒng)的內(nèi)容。
除了把口地址映射為物理地址的過(guò)程稱為尋址外,我們把端口的確定、域名和IP 地址轉(zhuǎn)換以及IP 地址和物理(MAC)地址的轉(zhuǎn)換都稱為尋址。在這種廣義尋址概念下,尋址就包括3方面的內(nèi)容:(1)應(yīng)用層中的應(yīng)用程序訪問(wèn)傳輸層時(shí)端口的確定;(2)在域名系統(tǒng)(Domain Name System,DNS) 哺1解析出網(wǎng)絡(luò)域名對(duì)應(yīng)的IP 地址后,IP 層根據(jù)目的機(jī)器IP 地址進(jìn)一步確定傳送分組時(shí)的路由;(3)在利用低層通信鏈路傳送信息時(shí),實(shí)現(xiàn)口地址和物理地址的轉(zhuǎn)換工作。
為此,首先需要明確以下3點(diǎn):(1)在TCP /IP 構(gòu)架下,端口和應(yīng)用是對(duì)應(yīng)的,如文件傳輸應(yīng)用(ftp)和端口20與2l 對(duì)應(yīng),網(wǎng)頁(yè)瀏覽服務(wù)(ht—tp) 和端口80對(duì)應(yīng),遠(yuǎn)程登錄(telnet)和端口23對(duì)應(yīng)等;(2)IP地址通常和機(jī)器(的連接) 對(duì)應(yīng),也就是說(shuō),給定一個(gè)IP 地址,可以唯一地確定和某臺(tái)機(jī)器相連的一個(gè)連接,從而進(jìn)一步確定某臺(tái)機(jī)器(可以認(rèn)為IP 地址和機(jī)器之間建立了對(duì)應(yīng)關(guān)系) ;(3)物理(MAC)地址通常和實(shí)施底層通信的具體物理硬件設(shè)備(如網(wǎng)卡或其他網(wǎng)絡(luò)接口設(shè)備) 聯(lián)系。
這樣,作為端口機(jī)制(在操作系統(tǒng)中通常以Socket 套接字方式予以實(shí)現(xiàn)) 就可實(shí)現(xiàn)應(yīng)用層訪問(wèn)傳輸層時(shí)端口的確定,完成端口的尋址工作;DNS 解析出網(wǎng)絡(luò)域名對(duì)應(yīng)機(jī)器的IP 地址,定位該機(jī)器,然后IP 層的路由算法用來(lái)確定分組的投遞方向,完成IP 地址的尋址工作;另外,地址轉(zhuǎn)換協(xié)議(Address Resolution Protocol,An_P)用來(lái)實(shí)現(xiàn)把IP 地址映射為物理(MAC)
,地址的過(guò)程,反向地址轉(zhuǎn)換協(xié)議(Reverse AddressResolution Protocol,RASP) 用來(lái)實(shí)現(xiàn)物理地址映射為IP 地址的過(guò)程。通過(guò)這兩個(gè)協(xié)議實(shí)現(xiàn)IP 地址和物理地址的相互映射,完成物理地址的尋址工作,并進(jìn)一步實(shí)現(xiàn)底層鏈路的數(shù)據(jù)通信。

圖1 網(wǎng)絡(luò)分層模型與尋址
3 網(wǎng)絡(luò)地址轉(zhuǎn)換原理
網(wǎng)絡(luò)地址轉(zhuǎn)換指的是NAT ,而不是ASP 或RARP 。在上述TCP /IP 分層模型構(gòu)架下,1個(gè)網(wǎng)絡(luò)通信連接由五元組構(gòu)成,即源IP 地址,源端口,目的IP 地址,目的端口,協(xié)議類型。1臺(tái)參與通信的主機(jī)可以同時(shí)建立的連接數(shù)取決于協(xié)議端口號(hào)。在IPv4中,協(xié)議端口號(hào)為16 bit ,所以可建立的連接數(shù)最多為。一般情況下,1臺(tái)主機(jī)并發(fā)的網(wǎng)絡(luò)連接數(shù)遠(yuǎn)小于216個(gè)。根據(jù)統(tǒng)計(jì),1臺(tái)普通客戶機(jī)并發(fā)網(wǎng)絡(luò)連接一般為5—50個(gè),而一般的服務(wù)器為50—500個(gè)。這樣,如果能夠充分利用協(xié)議端口,就可以使1個(gè)IP 地址給很多主機(jī)同時(shí)使用。以端口空間換地址空間,這就是NA T 的核心思想。下面通過(guò)一個(gè)實(shí)例解釋“以端口空間換地址空間的思想”以及NA T 的操作過(guò)程。如圖2所示,有1個(gè)內(nèi)部局域網(wǎng)絡(luò)(172.20.x .x) 使用的是私有IP 地址(172.20.130.x) ,通過(guò)1個(gè)NAT 網(wǎng)關(guān)和外部Inter —net 相連。其中,NAT 網(wǎng)關(guān)有兩個(gè)接口,一個(gè)和內(nèi)部網(wǎng)絡(luò)相連,其接口IP 為172.20.130.168;另一個(gè)接I :1和外部網(wǎng)絡(luò)相連,其接口IP 為202.1 15.143.16。在這種結(jié)構(gòu)下,只要配置好NAT 網(wǎng)關(guān),就可實(shí)現(xiàn)內(nèi)部局域網(wǎng)絡(luò)(172.20.L X)所有機(jī)器(其私有IP 地址為:172.20.130.x) 通過(guò)1個(gè)外部IP 地址(即NAT 網(wǎng)關(guān)和外部網(wǎng)絡(luò)相連的IP 地址:202.115.143.16) 接入Internet 的效果。
如圖2所示,假設(shè)機(jī)器172.20.130.1通過(guò)http 向機(jī)器202.115.128.33發(fā)送一個(gè)網(wǎng)頁(yè)服務(wù)(www)請(qǐng)求。此時(shí)網(wǎng)絡(luò)連接對(duì)應(yīng)的五元組為(172.20.130.1,Source —Port —AA ,202.115.128.33,80,TCP) ,假定此連接源機(jī)器端口為AA ,并且協(xié)議類型為傳輸層的TCP 而不是應(yīng)用層的http 。

圖2 NAT 網(wǎng)絡(luò)連接示意圖
由于源IP 是一個(gè)不可路由的私有IP ,只能在局域網(wǎng)內(nèi)部使用,所以,如果此時(shí)五元組不做任何修改的話,那么此網(wǎng)絡(luò)連接返回的信息將不可達(dá)。實(shí)際情況是:在網(wǎng)絡(luò)傳送分組經(jīng)過(guò)NAT 網(wǎng)關(guān)時(shí),NAT 網(wǎng)關(guān)要對(duì)分組報(bào)頭控制信息做修改(主要是對(duì)IP 地址、端口號(hào)以及校驗(yàn)和3項(xiàng)進(jìn)行修改) 。表1顯示了局域網(wǎng)內(nèi)部1臺(tái)主機(jī)向外部互聯(lián)網(wǎng)某一機(jī)器發(fā)送www 請(qǐng)求以及外部主機(jī)對(duì)其請(qǐng)求進(jìn)行響應(yīng)時(shí),2個(gè)不同方向分組信息傳送過(guò)程網(wǎng)絡(luò)連接五元組數(shù)值在經(jīng)過(guò)NAT 網(wǎng)關(guān)前后的調(diào)整情況。從表1可以發(fā)現(xiàn):內(nèi)網(wǎng)主機(jī)對(duì)于外網(wǎng)是不可見(jiàn)的,外網(wǎng)看到的只是NAT 網(wǎng)關(guān)。這一點(diǎn)可以從對(duì)www 的請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)連接五元組的目的IP 地址清楚地得到反映。
既然內(nèi)網(wǎng)主機(jī)對(duì)于外網(wǎng)是不可見(jiàn)的,那么信息是如何傳送回發(fā)起請(qǐng)求的源內(nèi)網(wǎng)主機(jī)呢? 這是通過(guò)NAT 網(wǎng)關(guān)設(shè)備保留一個(gè)如表2所示的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的。具體就是:產(chǎn)生響應(yīng)的主機(jī)先把信息傳送回NA T 網(wǎng)關(guān),NAT 網(wǎng)關(guān)根據(jù)此時(shí)五元組的目的端口號(hào)(為NAT 全局端口號(hào)) 查表2所示的數(shù)據(jù)結(jié)構(gòu),得到源內(nèi)網(wǎng)主機(jī)IP 和源端口號(hào),從而修改五元組的數(shù)值(見(jiàn)表
1) 把數(shù)據(jù)從NAT 網(wǎng)關(guān)發(fā)送回源內(nèi)網(wǎng)主機(jī)相應(yīng)的端口(應(yīng)用) ,這樣就完成了整個(gè)網(wǎng)絡(luò)活動(dòng)。從表2可見(jiàn),NAT 網(wǎng)關(guān)設(shè)備中的全局端口號(hào)是非常關(guān)鍵的,因?yàn)檎峭ㄟ^(guò)它才實(shí)現(xiàn)了內(nèi)網(wǎng)主機(jī)IP 和源端口號(hào)與外網(wǎng)主機(jī)IP 和目的端口號(hào)之間的映射關(guān)系,這也正是“以端口空間(NAT網(wǎng)關(guān)的全局端口) 換地址空間(內(nèi)網(wǎng)所有主機(jī)IP 地址)”思想的體現(xiàn)。
表1 2個(gè)不同方向上網(wǎng)絡(luò)連接(請(qǐng)求和響應(yīng)) 五元組在經(jīng)過(guò)NAT 網(wǎng)關(guān)前后時(shí)的變化值

表2 NAT網(wǎng)關(guān)中保留的內(nèi)網(wǎng)IP 和源端口號(hào)與外網(wǎng)IP 和目的端口號(hào)的映射關(guān)系

4 基于NAT 技術(shù)的配置實(shí)例
一個(gè)在Linux 環(huán)境下基于NA T 技術(shù)的配置實(shí)例已在筆者所在實(shí)驗(yàn)室通過(guò)測(cè)試且運(yùn)行穩(wěn)定。其中,內(nèi)網(wǎng)主機(jī)136臺(tái),只搭配一臺(tái)NA T 服務(wù)器和占用1個(gè)外部可路由IP 。NAT 網(wǎng)
,關(guān)設(shè)備所處的網(wǎng)絡(luò)環(huán)境如圖2所示。并且假定NA T 網(wǎng)關(guān)與外部網(wǎng)絡(luò)互連的網(wǎng)卡名為ethO 。
如果eth0對(duì)應(yīng)IP 地址是通過(guò)動(dòng)態(tài)方式獲得,配置如下:

其中語(yǔ)句1:打開(kāi)口轉(zhuǎn)發(fā)功能,語(yǔ)句2:裝載nat 模塊,語(yǔ)句3和4:保證在應(yīng)用NAT 技術(shù)時(shí)ftp 操作的順利進(jìn)行,語(yǔ)句5:清空nat 表中的所有規(guī)則,語(yǔ)句6和7:配置NAT 轉(zhuǎn)發(fā)功能。語(yǔ)句6和語(yǔ)句7的區(qū)別在于一個(gè)針對(duì)的是動(dòng)態(tài)IP ,而另一個(gè)則是靜態(tài)IP 。每個(gè)語(yǔ)句的細(xì)節(jié)限于篇幅在此不作詳細(xì)介紹,有興趣的讀者可以參閱Linux 相關(guān)書(shū)籍。 5 結(jié)論
NAT 技術(shù)是一種實(shí)用性較強(qiáng)并且經(jīng)過(guò)了實(shí)踐檢驗(yàn)的比較成熟的技術(shù),它能較好地解決部分單位IP 地址短缺的問(wèn)題。特別是由于它能完全隱藏內(nèi)網(wǎng)信息,并保持較高的吞吐量和較低的延遲,因此它經(jīng)常和包過(guò)濾技術(shù)相結(jié)合并成為新一代防火墻構(gòu)筑的基礎(chǔ)。它的不足之處在于仍有部分應(yīng)用需要特殊處理才能通過(guò)NA T 。