成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

NAT詳解:基本原理、穿越技術(shù)(P2P打洞)、端口老化等

網(wǎng)絡(luò) 通信技術(shù)
針對(duì)目前很多filecoin廠商宣傳的NAT穿透,小編做個(gè)科普,希望大家擦亮眼睛,不要被過(guò)度神話的營(yíng)銷(xiāo)手段蒙蔽雙眼。

 針對(duì)目前很多filecoin廠商宣傳的NAT穿透,小編做個(gè)科普,希望大家擦亮眼睛,不要被過(guò)度神話的營(yíng)銷(xiāo)手段蒙蔽雙眼。

1. IPv4協(xié)議和NAT的由來(lái)

今天,無(wú)數(shù)快樂(lè)的互聯(lián)網(wǎng)用戶在盡情享受Internet帶來(lái)的樂(lè)趣。他們?yōu)g覽新聞,搜索資料,下載軟件,廣交新朋,分享信息,甚至于足不出戶獲取一切日用所需。企業(yè)利用互聯(lián)網(wǎng)發(fā)布信息,傳遞資料和訂單,提供技術(shù)支持,完成日常辦公。然而,Internet在給億萬(wàn)用戶帶來(lái)便利的同時(shí),自身卻面臨一個(gè)致命的問(wèn)題:構(gòu)建這個(gè)無(wú)所不能的Internet的基礎(chǔ)IPv4協(xié)議已經(jīng)不能再提供新的網(wǎng)絡(luò)地址了。

2011年2月3日中國(guó)農(nóng)歷新年, IANA對(duì)外宣布:IPv4地址空間末尾5個(gè)地址塊已經(jīng)被分配給下屬的5個(gè)地區(qū)委員會(huì)。2011年4月15日,亞太區(qū)委員會(huì)APNIC對(duì)外宣布,除了個(gè)別保留地址外,本區(qū)域所有的IPv4地址基本耗盡。一時(shí)之間,IPv4地址作為一種瀕危資源身價(jià)陡增,各大網(wǎng)絡(luò)公司出巨資收購(gòu)剩余的空閑地址。其實(shí),IPv4地址不足問(wèn)題已不是新問(wèn)題,早在20年以前,IPv4地址即將耗盡的問(wèn)題就已經(jīng)擺在Internet先驅(qū)們面前。這不禁讓我們想去了解,是什么技術(shù)使這一危機(jī)延緩了盡20年。

要找到問(wèn)題的答案,讓我們先來(lái)簡(jiǎn)略回顧一下IPv4協(xié)議。

IPv4即網(wǎng)際網(wǎng)協(xié)議第4版——Internet Protocol Version 4的縮寫(xiě)。IPv4定義一個(gè)跨越異種網(wǎng)絡(luò)互連的超級(jí)網(wǎng),它為每個(gè)網(wǎng)際網(wǎng)的節(jié)點(diǎn)對(duì)應(yīng)分配一個(gè)IP地址。如果我們把Internet比作一個(gè)郵政系統(tǒng),那么IP地址的作用就等同于包含城市、街區(qū)、門(mén)牌編號(hào)在內(nèi)的完整地址。IPv4使用32bits整數(shù)表達(dá)一個(gè)地址,地址的范圍就是232 約為43億。以IP創(chuàng)始時(shí)期可被聯(lián)網(wǎng)的設(shè)備來(lái)看,這樣的一個(gè)空間已經(jīng)很大,很難被短時(shí)間用完。然而,事實(shí)遠(yuǎn)遠(yuǎn)超出人們的設(shè)想,計(jì)算機(jī)網(wǎng)絡(luò)在此后的幾十年里迅速壯大,網(wǎng)絡(luò)終端數(shù)量呈爆炸性增長(zhǎng)。

更為糟糕的是,為了路由和管理方便,43億的地址空間被按照不同前綴長(zhǎng)度劃分為A,B,C,D類地址網(wǎng)絡(luò)和保留地址。其中,A類網(wǎng)絡(luò)地址127段,每段包括主機(jī)地址約1678萬(wàn)個(gè)。B類網(wǎng)絡(luò)地址16384段,每段包括65536個(gè)主機(jī)地址。

 

圖1 IPv4網(wǎng)絡(luò)地址劃分

IANA向超大型企業(yè)/組織分配A類網(wǎng)絡(luò)地址,一次一段。向中型企業(yè)或教育機(jī)構(gòu)分配B類網(wǎng)絡(luò)地址,一次一段。這樣一種分配策略使得IP地址浪費(fèi)很?chē)?yán)重,很多被分配出去的地址沒(méi)有真實(shí)被利用,地址消耗很快。以至于二十世紀(jì)90年代初,網(wǎng)絡(luò)專家們意識(shí)到,這樣大手大腳下去,IPv4地址很快就要耗光了。于是,人們開(kāi)始考慮IPv4的替代方案,同時(shí)采取一系列的措施來(lái)減緩IPv4地址的消耗。正是在這樣一個(gè)背景之下,本期的主角閃亮登場(chǎng),它就是網(wǎng)絡(luò)地址轉(zhuǎn)換——NAT。

NAT是一項(xiàng)神奇的技術(shù),說(shuō)它神奇在于它的出現(xiàn)幾乎使IPv4起死回生。在IPv4已經(jīng)被認(rèn)為行將結(jié)束歷史使命之后近20年時(shí)間里,人們幾乎忘了IPv4的地址空間即將耗盡這樣一個(gè)事實(shí)——在新技術(shù)日新月異的時(shí)代,20年可算一段漫長(zhǎng)的歷史。更不用說(shuō),在NAT產(chǎn)生以后,網(wǎng)絡(luò)終端的數(shù)量呈加速上升趨勢(shì),對(duì)IP地址的需求劇烈增加。此足見(jiàn)NAT技術(shù)之成功,影響之深遠(yuǎn)。

說(shuō)它神奇,更因?yàn)镹AT給IP網(wǎng)絡(luò)模型帶來(lái)了深遠(yuǎn)影響,其身影遍布網(wǎng)絡(luò)每個(gè)角落。根據(jù)一份最近的研究報(bào)告,70%的P2P用戶位于NAT網(wǎng)關(guān)以內(nèi)。因?yàn)镻2P主要運(yùn)行在終端用戶的個(gè)人電腦之上,這個(gè)數(shù)字意味著大多數(shù)PC通過(guò)NAT網(wǎng)關(guān)連接到Internet。如果加上2G和3G方式聯(lián)網(wǎng)的智能手機(jī)等移動(dòng)終端,在NAT網(wǎng)關(guān)之后的用戶遠(yuǎn)遠(yuǎn)超過(guò)這個(gè)比例。

然而當(dāng)我們求本溯源時(shí)卻發(fā)現(xiàn)一個(gè)很奇怪的事實(shí):NAT這一意義重大的技術(shù),NAT初版的RFC作者,只是整理歸納了已被廣泛采用的技術(shù)。

2. NAT的工作模型和特點(diǎn)

2.1 NAT的概念模型

NAT名字很準(zhǔn)確,網(wǎng)絡(luò)地址轉(zhuǎn)換,就是替換IP報(bào)文頭部的地址信息。NAT通常部署在一個(gè)組織的網(wǎng)絡(luò)出口位置,通過(guò)將內(nèi)部網(wǎng)絡(luò)IP地址替換為出口的IP地址提供公網(wǎng)可達(dá)性和上層協(xié)議的連接能力。那么,什么是內(nèi)部網(wǎng)絡(luò)IP地址?

RFC1918規(guī)定了三個(gè)保留地址段落:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。這三個(gè)范圍分別處于A,B,C類的地址段,不向特定的用戶分配,被IANA作為私有地址保留。這些地址可以在任何組織或企業(yè)內(nèi)部使用,和其他Internet地址的區(qū)別就是,僅能在內(nèi)部使用,不能作為全球路由地址。這就是說(shuō),出了組織的管理范圍這些地址就不再有意義,無(wú)論是作為源地址,還是目的地址。對(duì)于一個(gè)封閉的組織,如果其網(wǎng)絡(luò)不連接到Internet,就可以使用這些地址而不用向IANA提出申請(qǐng),而在內(nèi)部的路由管理和報(bào)文傳遞方式與其他網(wǎng)絡(luò)沒(méi)有差異。

對(duì)于有Internet訪問(wèn)需求而內(nèi)部又使用私有地址的網(wǎng)絡(luò),就要在組織的出口位置部署NAT網(wǎng)關(guān),在報(bào)文離開(kāi)私網(wǎng)進(jìn)入Internet時(shí),將源IP替換為公網(wǎng)地址,通常是出口設(shè)備的接口地址。一個(gè)對(duì)外的訪問(wèn)請(qǐng)求在到達(dá)目標(biāo)以后,表現(xiàn)為由本組織出口設(shè)備發(fā)起,因此被請(qǐng)求的服務(wù)端可將響應(yīng)由Internet發(fā)回出口網(wǎng)關(guān)。出口網(wǎng)關(guān)再將目的地址替換為私網(wǎng)的源主機(jī)地址,發(fā)回內(nèi)部。這樣一次由私網(wǎng)主機(jī)向公網(wǎng)服務(wù)端的請(qǐng)求和響應(yīng)就在通信兩端均無(wú)感知的情況下完成了。依據(jù)這種模型,數(shù)量龐大的內(nèi)網(wǎng)主機(jī)就不再需要公有IP地址了。

 

圖2 NAT轉(zhuǎn)換過(guò)程示意圖

雖然實(shí)際過(guò)程遠(yuǎn)比這個(gè)復(fù)雜,但上面的描述概括了NAT處理報(bào)文的幾個(gè)關(guān)鍵特點(diǎn):

1. 網(wǎng)絡(luò)被分為私網(wǎng)和公網(wǎng)兩個(gè)部分,NAT網(wǎng)關(guān)設(shè)置在私網(wǎng)到公網(wǎng)的路由出口位置,雙向流量必須都要經(jīng)過(guò)NAT網(wǎng)關(guān); 2. 網(wǎng)絡(luò)訪問(wèn)只能先由私網(wǎng)側(cè)發(fā)起,公網(wǎng)無(wú)法主動(dòng)訪問(wèn)私網(wǎng)主機(jī); 3. NAT網(wǎng)關(guān)在兩個(gè)訪問(wèn)方向上完成兩次地址的轉(zhuǎn)換或翻譯,出方向做源信息替換,入方向做目的信息替換; 4. NAT網(wǎng)關(guān)的存在對(duì)通信雙方是保持透明的; 5. NAT網(wǎng)關(guān)為了實(shí)現(xiàn)雙向翻譯的功能,需要維護(hù)一張關(guān)聯(lián)表,把會(huì)話的信息保存下來(lái)。

隨著后面對(duì)NAT的深入描述,讀者會(huì)發(fā)現(xiàn),這些特點(diǎn)是鮮明的,但又不是絕對(duì)的。其中第二個(gè)特點(diǎn)打破了IP協(xié)議架構(gòu)中所有節(jié)點(diǎn)在通訊中的對(duì)等地位,這是NAT一個(gè)很大的弊端,為對(duì)等通訊帶來(lái)了諸多問(wèn)題,當(dāng)然相應(yīng)的克服手段也應(yīng)運(yùn)而生。事實(shí)上,第四點(diǎn)是NAT致力于達(dá)到的目標(biāo),但在很多情況下,NAT并沒(méi)有做到,因?yàn)槌薎P首部,上層通信協(xié)議經(jīng)常在內(nèi)部攜帶IP地址信息。這些我們稍后解釋。

2.2 一對(duì)一的NAT

如果一個(gè)內(nèi)部主機(jī)只占用一個(gè)公網(wǎng)IP,這種方式被稱為一對(duì)一模型。此種方式下,轉(zhuǎn)換上層協(xié)議就是不必要的,因?yàn)橐粋€(gè)公網(wǎng)IP對(duì)應(yīng)一個(gè)內(nèi)部主機(jī)。顯然,這種方式對(duì)節(jié)約公網(wǎng)IP沒(méi)有太大意義,主要是為了實(shí)現(xiàn)一些特殊的組網(wǎng)需求。比如用戶希望隱藏內(nèi)部主機(jī)的真實(shí)IP,或者實(shí)現(xiàn)兩個(gè)IP地址重疊網(wǎng)絡(luò)的通信。

2.3 一對(duì)多的NAT

NAT最典型的應(yīng)用場(chǎng)景就如同圖2描述的,一個(gè)組織網(wǎng)絡(luò),在出口位置部署NAT網(wǎng)關(guān),所有對(duì)公網(wǎng)的訪問(wèn)表現(xiàn)為一臺(tái)主機(jī)。這就是所謂的一對(duì)多模型。這種方式下,出口設(shè)備只占用一個(gè)由Internet服務(wù)提供商分配的公網(wǎng)IP地址。面對(duì)私網(wǎng)內(nèi)部數(shù)量龐大的主機(jī),如果NAT只進(jìn)行IP地址的簡(jiǎn)單替換,就會(huì)產(chǎn)生一個(gè)問(wèn)題:當(dāng)有多個(gè)內(nèi)部主機(jī)去訪問(wèn)同一個(gè)服務(wù)器時(shí),從返回的信息不足以區(qū)分響應(yīng)應(yīng)該轉(zhuǎn)發(fā)到哪個(gè)內(nèi)部主機(jī)。此時(shí),需要NAT設(shè)備根據(jù)傳輸層信息或其他上層協(xié)議去區(qū)分不同的會(huì)話,并且可能要對(duì)上層協(xié)議的標(biāo)識(shí)進(jìn)行轉(zhuǎn)換,比如TCP或UDP端口號(hào)。這樣NAT網(wǎng)關(guān)就可以將不同的內(nèi)部連接訪問(wèn)映射到同一公網(wǎng)IP的不同傳輸層端口,通過(guò)這種方式實(shí)現(xiàn)公網(wǎng)IP的復(fù)用和解復(fù)用。這種方式也被稱為端口轉(zhuǎn)換PAT、NAPT或IP偽裝,但更多時(shí)候直接被稱為NAT,因?yàn)樗亲畹湫偷囊环N應(yīng)用模式。

2.4 按照NAT端口映射方式分類

在一對(duì)多模型中,按照端口轉(zhuǎn)換的工作方式不同,又可以進(jìn)行更進(jìn)一步的劃分。為描述方便,以下將IP和端口標(biāo)記為(nAddr:nPort),其中n代表主機(jī)或NAT網(wǎng)關(guān)的不同角色。

 

圖3 按照端口轉(zhuǎn)換映射方式分類

全錐形NAT

其特點(diǎn)為:一旦內(nèi)部主機(jī)端口對(duì)(iAddr:iPort)被NAT網(wǎng)關(guān)映射到(eAddr:ePort),所有后續(xù)的(iAddr:iPort)報(bào)文都會(huì)被轉(zhuǎn)換為(eAddr:ePort);任何一個(gè)外部主機(jī)發(fā)送到(eAddr:ePort)的報(bào)文將會(huì)被轉(zhuǎn)換后發(fā)到(iAddr:iPort)。

限制錐形NAT

其特點(diǎn)為:一旦內(nèi)部主機(jī)端口對(duì)(iAddr:iPort)被映射到(eAddr:ePort),所有后續(xù)的(iAddr:iPort)報(bào)文都會(huì)被轉(zhuǎn)換為(eAddr:ePort);只有 (iAddr:iPort)向特定的外部主機(jī)hAddr發(fā)送過(guò)數(shù)據(jù),主機(jī)hAddr從任意端口發(fā)送到(eAddr:ePort)的報(bào)文將會(huì)被轉(zhuǎn)發(fā)到(iAddr:iPort)。

端口限制錐形NAT

其特點(diǎn)為:一旦內(nèi)部主機(jī)端口對(duì)(iAddr:iPort)被映射到(eAddr:ePort),所有后續(xù)的(iAddr:iPort)報(bào)文都會(huì)被轉(zhuǎn)換為(eAddr:ePort);只有(iAddr:iPort)向特定的外部主機(jī)端口對(duì)(hAddr:hPort)發(fā)送過(guò)數(shù)據(jù),由 (hAddr:hPort)發(fā)送到(eAddr:ePort)的報(bào)文將會(huì)被轉(zhuǎn)發(fā)到(iAddr:iPort)。

對(duì)稱型NAT

其特點(diǎn)為:NAT網(wǎng)關(guān)會(huì)把內(nèi)部主機(jī)“地址端口對(duì)”和外部主機(jī)“地址端口對(duì)”完全相同的報(bào)文看作一個(gè)連接,在網(wǎng)關(guān)上創(chuàng)建一個(gè)公網(wǎng)“地址端口對(duì)”映射進(jìn)行轉(zhuǎn)換,只有收到報(bào)文的外部主機(jī)從對(duì)應(yīng)的端口對(duì)發(fā)送回應(yīng)的報(bào)文,才能被轉(zhuǎn)換。即使內(nèi)部主機(jī)使用之前用過(guò)的地址端口對(duì)去連接不同外部主機(jī)(或端口)時(shí),NAT網(wǎng)關(guān)也會(huì)建立新的映射關(guān)系。

事實(shí)上,這些術(shù)語(yǔ)的引入是很多混淆的起源。現(xiàn)實(shí)中的很多NAT設(shè)備是將這些轉(zhuǎn)換方式混合在一起工作的,而不單單使用一種,所以這些術(shù)語(yǔ)只適合描述一種工作方式,而不是一個(gè)設(shè)備。比如,很多NAT設(shè)備對(duì)內(nèi)部發(fā)出的連接使用對(duì)稱型NAT方式,而同時(shí)支持靜態(tài)的端口映射,后者可以被看作是全錐型NAT方式。而有些情況下,NAT設(shè)備的一個(gè)公網(wǎng)地址和端口可以同時(shí)映射到內(nèi)部幾個(gè)服務(wù)器上以實(shí)現(xiàn)負(fù)載分擔(dān),比如一個(gè)對(duì)外提供WEB服務(wù)器的站點(diǎn)可能是有成百上千個(gè)服務(wù)器在提供HTTP服務(wù),但是對(duì)外卻表現(xiàn)為一個(gè)或少數(shù)幾個(gè)IP地址。

3. NAT的限制與解決方案

3.1 IP端到端服務(wù)模型

IP協(xié)議的一個(gè)重要貢獻(xiàn)是把世界變得平等。在理論上,具有IP地址的每個(gè)站點(diǎn)在協(xié)議層面有相當(dāng)?shù)墨@取服務(wù)和提供服務(wù)的能力,不同的IP地址之間沒(méi)有差異。人們熟知的服務(wù)器和客戶機(jī)實(shí)際是在應(yīng)用協(xié)議層上的角色區(qū)分,而在網(wǎng)絡(luò)層和傳輸層沒(méi)有差異。一個(gè)具有IP地址的主機(jī)既可以是客戶機(jī),也可以是服務(wù)器,大部分情況下,既是客戶機(jī),也是服務(wù)器。端到端對(duì)等看起來(lái)是很平常的事情,而意義并不尋常。但在以往的技術(shù)中,很多協(xié)議體系下的網(wǎng)絡(luò)限定了終端的能力。正是IP的這個(gè)開(kāi)放性,使得TCP/IP協(xié)議族可以提供豐富的功能,為應(yīng)用實(shí)現(xiàn)提供了廣闊平臺(tái)。因?yàn)樗械腎P主機(jī)都可以服務(wù)器的形式出現(xiàn),所以通訊設(shè)計(jì)可以更加靈活。使用UNIX/LINUX的系統(tǒng)充分利用了這個(gè)特性,使得任何一個(gè)主機(jī)都可以建立自己的HTTP、SMTP、POP3、DNS、DHCP等服務(wù)。與此同時(shí),很多應(yīng)用也是把客戶端和服務(wù)器的角色組合起來(lái)完成功能。例如在VoIP應(yīng)用中,用戶端向注冊(cè)服務(wù)器登錄自己的IP地址和端口信息過(guò)程中,主機(jī)是客戶端;而在呼叫到達(dá)時(shí),呼叫處理服務(wù)器向用戶端發(fā)送呼叫請(qǐng)求時(shí),用戶端實(shí)際工作在服務(wù)器模式下。在語(yǔ)音媒體流信道建立過(guò)程后,通訊雙向發(fā)送語(yǔ)音數(shù)據(jù),發(fā)送端是客戶模式,接收端是服務(wù)器模式。而在P2P的應(yīng)用中,一個(gè)用戶的主機(jī)既為下載的客戶,同時(shí)也向其他客戶提供數(shù)據(jù),是一種C/S混合的模型。上層應(yīng)用之所以能這樣設(shè)計(jì),是因?yàn)镮P協(xié)議棧定義了這樣的能力。試想一下,如果IP提供的能力不對(duì)等,那么每個(gè)通信會(huì)話都只能是單方向發(fā)起的,這會(huì)極大限制通信的能力。細(xì)心的讀者會(huì)發(fā)現(xiàn),前面介紹NAT的一個(gè)特性正是這樣一種限制。沒(méi)錯(cuò),NAT的弊端正在于此——破壞了IP端到端通信的能力。

3.2 NAT的弊端

NAT在解決IPv4地址短缺問(wèn)題上,并非沒(méi)有副作用,其實(shí)存在很多問(wèn)題。

首先,NAT使IP會(huì)話的保持時(shí)效變短。因?yàn)橐粋€(gè)會(huì)話建立后會(huì)在NAT設(shè)備上建立一個(gè)關(guān)聯(lián)表,在會(huì)話靜默的這段時(shí)間,NAT網(wǎng)關(guān)會(huì)進(jìn)行老化操作。這是任何一個(gè)NAT網(wǎng)關(guān)必須做的事情,因?yàn)镮P和端口資源有限,通信的需求龐大,所以必須在會(huì)話結(jié)束后回收資源。通常TCP會(huì)話通過(guò)協(xié)商的方式主動(dòng)關(guān)閉連接,NAT網(wǎng)關(guān)可以跟蹤這些報(bào)文,但總是存在例外的情況,要依賴自己的定時(shí)器去回收資源。而基于UDP的通信協(xié)議很難確定何時(shí)通信結(jié)束,所以NAT網(wǎng)關(guān)主要依賴超時(shí)機(jī)制回收外部端口。通過(guò)定時(shí)器老化回收會(huì)帶來(lái)一個(gè)問(wèn)題,如果應(yīng)用需要維持連接的時(shí)間大于NAT網(wǎng)關(guān)的設(shè)置,通信就會(huì)意外中斷。因?yàn)榫W(wǎng)關(guān)回收相關(guān)轉(zhuǎn)換表資源以后,新的數(shù)據(jù)到達(dá)時(shí)就找不到相關(guān)的轉(zhuǎn)換信息,必須建立新的連接。當(dāng)這個(gè)新數(shù)據(jù)是由公網(wǎng)側(cè)向私網(wǎng)側(cè)發(fā)送時(shí),就會(huì)發(fā)生無(wú)法觸發(fā)新連接建立,也不能通知到私網(wǎng)側(cè)的主機(jī)去重建連接的情況。這時(shí)候通信就會(huì)中斷,不能自動(dòng)恢復(fù)。即使新數(shù)據(jù)是從私網(wǎng)側(cè)發(fā)向公網(wǎng)側(cè),因?yàn)橹亟ǖ臅?huì)話表往往使用不同于之前的公網(wǎng)IP和端口地址,公網(wǎng)側(cè)主機(jī)也無(wú)法對(duì)應(yīng)到之前的通信上,導(dǎo)致用戶可感知的連接中斷。NAT網(wǎng)關(guān)要把回收空閑連接的時(shí)間設(shè)置到不發(fā)生持續(xù)的資源流失,又維持大部分連接不被意外中斷,是一件比較有難度的事情。在NAT已經(jīng)普及化的時(shí)代,很多應(yīng)用協(xié)議的設(shè)計(jì)者已經(jīng)考慮到了這種情況,所以一般會(huì)設(shè)置一個(gè)連接保活的機(jī)制,即在一段時(shí)間沒(méi)有數(shù)據(jù)需要發(fā)送時(shí),主動(dòng)發(fā)送一個(gè)NAT能感知到而又沒(méi)有實(shí)際數(shù)據(jù)的保活消息,這么做的主要目的就是重置NAT的會(huì)話定時(shí)器。

其次,NAT在實(shí)現(xiàn)上將多個(gè)內(nèi)部主機(jī)發(fā)出的連接復(fù)用到一個(gè)IP上,這就使依賴IP進(jìn)行主機(jī)跟蹤的機(jī)制都失效了。如網(wǎng)絡(luò)管理中需要的基于網(wǎng)絡(luò)流量分析的應(yīng)用無(wú)法跟蹤到終端用戶與流量的具體行為的關(guān)系。基于用戶行為的日志分析也變得困難,因?yàn)橐粋€(gè)IP被很多用戶共享,如果存在惡意的用戶行為,很難定位到發(fā)起連接的那個(gè)主機(jī)。即便有一些機(jī)制提供了在NAT網(wǎng)關(guān)上進(jìn)行連接跟蹤的方法,但是把這種變換關(guān)系接續(xù)起來(lái)也困難重重。基于IP的用戶授權(quán)不再可靠,因?yàn)閾碛幸粋€(gè)IP的不等于一個(gè)用戶或主機(jī)。一個(gè)服務(wù)器也不能簡(jiǎn)單把同一IP的訪問(wèn)視作同一主機(jī)發(fā)起的,不能進(jìn)行關(guān)聯(lián)。有些服務(wù)器設(shè)置有連接限制,同一時(shí)刻只接納來(lái)自一個(gè)IP的有限訪問(wèn)(有時(shí)是僅一個(gè)訪問(wèn)),這會(huì)造成不同用戶之間的服務(wù)搶占和排隊(duì)。有時(shí)服務(wù)器端這樣做是出于DOS防護(hù)的考慮,因?yàn)橐粋€(gè)用戶正常情況下不應(yīng)該建立大量的連接請(qǐng)求,過(guò)度使用服務(wù)資源被理解為有高風(fēng)險(xiǎn)的行為。但是這在NAT存在時(shí)不能簡(jiǎn)單按照連接數(shù)判斷。總之,因?yàn)镹AT隱蔽了通信的一端,把簡(jiǎn)單的事情復(fù)雜化了。

我們來(lái)深入理解NAT一下對(duì)IP端到端模型的破壞力。NAT通過(guò)修改IP首部的信息變換通信的地址。但是在這個(gè)轉(zhuǎn)換過(guò)程中只能基于一個(gè)會(huì)話單位。當(dāng)一個(gè)應(yīng)用需要保持多個(gè)雙向連接時(shí),麻煩就很大。NAT不能理解多個(gè)會(huì)話之間的關(guān)聯(lián)性,無(wú)法保證轉(zhuǎn)換符合應(yīng)用需要的規(guī)則。當(dāng)NAT網(wǎng)關(guān)擁有多個(gè)公有IP地址時(shí),一組關(guān)聯(lián)會(huì)話可能被分配到不同的公網(wǎng)地址,這通常是服務(wù)器端無(wú)法接受的。更為嚴(yán)重的是,當(dāng)公網(wǎng)側(cè)的主機(jī)要主動(dòng)向私網(wǎng)側(cè)發(fā)送數(shù)據(jù)時(shí),NAT網(wǎng)關(guān)沒(méi)有轉(zhuǎn)換這個(gè)連接需要的關(guān)聯(lián)表,這個(gè)數(shù)據(jù)包無(wú)法到達(dá)私網(wǎng)側(cè)的主機(jī)。這些反方向發(fā)送數(shù)據(jù)的連接總有應(yīng)用協(xié)議的約定或在初始建立的會(huì)話中進(jìn)行過(guò)協(xié)商。但是因?yàn)镹AT工作在網(wǎng)絡(luò)層和傳輸層,無(wú)法理解應(yīng)用層協(xié)議的行為,對(duì)這些信息是無(wú)知的。NAT希望自己對(duì)通信雙方是透明的,但是在這些情況下這是一種奢望。

圖4 NAT對(duì)端到端通信模型的破壞

 

此外,NAT工作機(jī)制依賴于修改IP包頭的信息,這會(huì)妨礙一些安全協(xié)議的工作。因?yàn)镹AT篡改了IP地址、傳輸層端口號(hào)和校驗(yàn)和,這會(huì)導(dǎo)致認(rèn)證協(xié)議徹底不能工作,因?yàn)檎J(rèn)證目的就是要保證這些信息在傳輸過(guò)程中沒(méi)有變化。對(duì)于一些隧道協(xié)議,NAT的存在也導(dǎo)致了額外的問(wèn)題,因?yàn)樗淼绤f(xié)議通常用外層地址標(biāo)識(shí)隧道實(shí)體,穿過(guò)NAT的隧道會(huì)有IP復(fù)用關(guān)系,在另一端需要小心處理。ICMP是一種網(wǎng)絡(luò)控制協(xié)議,它的工作原理也是在兩個(gè)主機(jī)之間傳遞差錯(cuò)和控制消息,因?yàn)镮P的對(duì)應(yīng)關(guān)系被重新映射,ICMP也要進(jìn)行復(fù)用和解復(fù)用處理,很多情況下因?yàn)镮CMP報(bào)文載荷無(wú)法提供足夠的信息,解復(fù)用會(huì)失敗。IP分片機(jī)制是在信息源端或網(wǎng)絡(luò)路徑上,需要發(fā)送的IP報(bào)文尺寸大于路徑實(shí)際能承載的尺寸上限時(shí),IP協(xié)議層會(huì)將一個(gè)報(bào)文分成多個(gè)片斷發(fā)送,然后在接收端重組這些片斷恢復(fù)原始報(bào)文。IP這樣的分片機(jī)制會(huì)導(dǎo)致傳輸層的信息只包括在前面那個(gè)分片中,NAT難以識(shí)別后續(xù)分片與關(guān)聯(lián)表的對(duì)應(yīng)關(guān)系,因此需要特殊處理。

3.3 NAT穿越技術(shù)

前面解釋了NAT的弊端,為了解決IP端到端應(yīng)用在NAT環(huán)境下遇到的問(wèn)題,網(wǎng)絡(luò)協(xié)議的設(shè)計(jì)者們創(chuàng)造了各種武器來(lái)進(jìn)行應(yīng)對(duì)。但遺憾的是,這里每一種方法都有瑕疵,還需要在內(nèi)部主機(jī)、應(yīng)用程序或者NAT網(wǎng)關(guān)上增加額外的處理。

應(yīng)用層網(wǎng)關(guān)

應(yīng)用層網(wǎng)關(guān)(ALG)是解決NAT對(duì)應(yīng)用層協(xié)議無(wú)感知的一個(gè)最常用方法,已經(jīng)被NAT設(shè)備廠商廣泛采用,成為NAT設(shè)備的一個(gè)必需功能。因?yàn)镹AT不感知應(yīng)用協(xié)議,所以有必要額外為每個(gè)應(yīng)用協(xié)議定制協(xié)議分析功能,這樣NAT網(wǎng)關(guān)就能理解并支持特定的協(xié)議。ALG與NAT形成互動(dòng)關(guān)系,在一個(gè)NAT網(wǎng)關(guān)檢測(cè)到新的連接請(qǐng)求時(shí),需要判斷是否為已知的應(yīng)用類型,這通常是基于連接的傳輸層端口信息來(lái)識(shí)別的。在識(shí)別為已知應(yīng)用時(shí),再調(diào)用相應(yīng)功能對(duì)報(bào)文的深層內(nèi)容進(jìn)行檢查,當(dāng)發(fā)現(xiàn)任何形式表達(dá)的IP地址和端口時(shí),將會(huì)把這些信息同步轉(zhuǎn)換,并且為這個(gè)新連接創(chuàng)建一個(gè)附加的轉(zhuǎn)換表項(xiàng)。這樣,當(dāng)報(bào)文到達(dá)公網(wǎng)側(cè)的目的主機(jī)時(shí),應(yīng)用層協(xié)議中攜帶的信息就是NAT網(wǎng)關(guān)提供的地址和端口。一旦公網(wǎng)側(cè)主機(jī)開(kāi)始發(fā)送數(shù)據(jù)或建立連接到此端口,NAT網(wǎng)關(guān)就可以根據(jù)關(guān)聯(lián)表信息進(jìn)行轉(zhuǎn)換,再把數(shù)據(jù)轉(zhuǎn)發(fā)到私網(wǎng)側(cè)的主機(jī)。很多應(yīng)用層協(xié)議實(shí)現(xiàn)不限于一個(gè)初始連接(通常為信令或控制通道)加一個(gè)數(shù)據(jù)連接,可能是一個(gè)初始連接對(duì)應(yīng)很多后續(xù)的新連接。比較特別的協(xié)議,在一次協(xié)商中會(huì)產(chǎn)生一組相關(guān)連接,比如RTP/RTCP協(xié)議規(guī)定,一個(gè)RTP通道建立后占用連續(xù)的兩個(gè)端口,一個(gè)服務(wù)于數(shù)據(jù),另一個(gè)服務(wù)于控制消息。此時(shí),就需要ALG分配連續(xù)的端口為應(yīng)用服務(wù)。ALG能成功解決大部分協(xié)議的NAT穿越需求,但是這個(gè)方法也有很大的限制。因?yàn)閼?yīng)用協(xié)議的數(shù)量非常多而且在不斷發(fā)展變化之中,添加到設(shè)備中的ALG功能都是為特定協(xié)議的特定規(guī)范版本而開(kāi)發(fā)的,協(xié)議的創(chuàng)新和演進(jìn)要求NAT設(shè)備制造商必須跟蹤這些協(xié)議的最近標(biāo)準(zhǔn),同時(shí)兼容舊標(biāo)準(zhǔn)。盡管有如Linux這種開(kāi)放平臺(tái)允許動(dòng)態(tài)加載新的ALG特性,但是管理成本仍然很高,網(wǎng)絡(luò)維護(hù)人員也不能隨時(shí)了解用戶都需要什么應(yīng)用。因此為每個(gè)應(yīng)用協(xié)議開(kāi)發(fā)ALG代碼并跟蹤新標(biāo)準(zhǔn)是不可行的,ALG只能解決用戶最常用的需求。此外,出于安全性需要,有些應(yīng)用類型報(bào)文從源端發(fā)出就已經(jīng)加密,這種報(bào)文在網(wǎng)絡(luò)中間無(wú)法進(jìn)行分析,所以ALG無(wú)能為力。

探針技術(shù)STUN和TURN

所謂探針技術(shù),是通過(guò)在所有參與通信的實(shí)體上安裝探測(cè)插件,以檢測(cè)網(wǎng)絡(luò)中是否存在NAT網(wǎng)關(guān),并對(duì)不同NAT模型實(shí)施不同穿越方法的一種技術(shù)。STUN服務(wù)器被部署在公網(wǎng)上,用于接收來(lái)自通信實(shí)體的探測(cè)請(qǐng)求,服務(wù)器會(huì)記錄收到請(qǐng)求的報(bào)文地址和端口,并填寫(xiě)到回送的響應(yīng)報(bào)文中。客戶端根據(jù)接收到的響應(yīng)消息中記錄的地址和端口與本地選擇的地址和端口進(jìn)行比較,就能識(shí)別出是否存在NAT網(wǎng)關(guān)。如果存在NAT網(wǎng)關(guān),客戶端會(huì)使用之前的地址和端口向服務(wù)器的另外一個(gè)IP發(fā)起請(qǐng)求,重復(fù)前面的探測(cè)。然后再比較兩次響應(yīng)返回的結(jié)果判斷出NAT工作的模式。由前述的一對(duì)多轉(zhuǎn)換模型得知,除對(duì)稱型NAT以外的模型,NAT網(wǎng)關(guān)對(duì)內(nèi)部主機(jī)地址端口的映射都是相對(duì)固定的,所以比較容易實(shí)現(xiàn)NAT穿越。而對(duì)稱型NAT為每個(gè)連接提供一個(gè)映射,使得轉(zhuǎn)換后的公網(wǎng)地址和端口對(duì)不可預(yù)測(cè)。此時(shí)TURN可以與STUN綁定提供穿越NAT的服務(wù),即在公網(wǎng)服務(wù)器上提供一個(gè)“地址端口對(duì)”,所有此“地址端口對(duì)”接收到的數(shù)據(jù)會(huì)經(jīng)由探測(cè)建立的連接轉(zhuǎn)發(fā)到內(nèi)網(wǎng)主機(jī)上。TURN分配的這個(gè)映射“地址端口對(duì)”會(huì)通過(guò)STUN響應(yīng)發(fā)給內(nèi)部主機(jī),后者將此信息放入建立連接的信令中通知通信的對(duì)端。這種探針技術(shù)是一種通用方法,不用在NAT設(shè)備上為每種應(yīng)用協(xié)議開(kāi)發(fā)功能,相對(duì)于ALG方式有一定普遍性。但是TURN中繼服務(wù)會(huì)成為通信瓶頸。而且在客戶端中增加探針功能要求每個(gè)應(yīng)用都要增加代碼才能支持。

中間件技術(shù)

這也是一種通過(guò)開(kāi)發(fā)通用方法解決NAT穿越問(wèn)題的努力。與前者不同之處是,NAT網(wǎng)關(guān)是這一解決方案的參與者。與ALG的不同在于,客戶端會(huì)參與網(wǎng)關(guān)公網(wǎng)映射信息的維護(hù),此時(shí)NAT網(wǎng)關(guān)只要理解客戶端的請(qǐng)求并按照要求去分配轉(zhuǎn)換表,不需要自己去分析客戶端的應(yīng)用層數(shù)據(jù)。其中UPnP就是這樣一種方法。UPnP中文全稱為通用即插即用,是一個(gè)通用的網(wǎng)絡(luò)終端與網(wǎng)關(guān)的通信協(xié)議,具備信息發(fā)布和管理控制的能力。其中,網(wǎng)關(guān)映射請(qǐng)求可以為客戶動(dòng)態(tài)添加映射表項(xiàng)。此時(shí),NAT不再需要理解應(yīng)用層攜帶的信息,只轉(zhuǎn)換IP地址和端口信息。而客戶端通過(guò)控制消息或信令發(fā)到公網(wǎng)側(cè)的信息中,直接攜帶公網(wǎng)映射的IP地址和端口,接收端可以按照此信息建立數(shù)據(jù)連接。NAT網(wǎng)關(guān)在收到數(shù)據(jù)或連接請(qǐng)求時(shí),按照UPnP建立的表項(xiàng)只轉(zhuǎn)換地址和端口信息,不關(guān)心內(nèi)容,再將數(shù)據(jù)轉(zhuǎn)發(fā)到內(nèi)網(wǎng)。這種方案需要網(wǎng)關(guān)、內(nèi)部主機(jī)和應(yīng)用程序都支持UPnP技術(shù),且組網(wǎng)允許內(nèi)部主機(jī)和NAT網(wǎng)關(guān)之間可以直接交換UPnP信令才能實(shí)施。

中繼代理技術(shù)

準(zhǔn)確說(shuō)它不是NAT穿越技術(shù),而是NAT旁路技術(shù)。簡(jiǎn)單說(shuō),就是在NAT網(wǎng)關(guān)所在的位置旁邊放置一個(gè)應(yīng)用服務(wù)器,這個(gè)服務(wù)器在內(nèi)部網(wǎng)絡(luò)和外部公網(wǎng)分別有自己的網(wǎng)絡(luò)連接。客戶端特定的應(yīng)用產(chǎn)生網(wǎng)絡(luò)請(qǐng)求時(shí),將定向發(fā)送到應(yīng)用代理服務(wù)器。應(yīng)用代理服務(wù)器根據(jù)代理協(xié)議解析客戶端的請(qǐng)求,再?gòu)姆?wù)器的公網(wǎng)側(cè)發(fā)起一個(gè)新的請(qǐng)求,把客戶端請(qǐng)求的內(nèi)容中繼到外部網(wǎng)絡(luò)上,返回的相應(yīng)反方向中繼。這項(xiàng)技術(shù)和ALG有很大的相似性,它要求為每個(gè)應(yīng)用類型部署中繼代理業(yè)務(wù),中間服務(wù)器要理解這些請(qǐng)求。

特定協(xié)議的自穿越技術(shù)

在所有方法中最復(fù)雜也最可靠的就是自己解決自己的問(wèn)題。比如IKE和IPsec技術(shù),在設(shè)計(jì)時(shí)就考慮了到如何穿越NAT的問(wèn)題。因?yàn)檫@個(gè)協(xié)議是一個(gè)自加密的協(xié)議并且具有報(bào)文防修改的鑒別能力,其他通用方法愛(ài)莫能助。因?yàn)閷?shí)際應(yīng)用的NAT網(wǎng)關(guān)基本都是NAPT方式,所有通過(guò)傳輸層協(xié)議承載的報(bào)文可以順利通過(guò)NAT。IKE和IPsec采用的方案就是用UDP在報(bào)文外面再加一層封裝,而內(nèi)部的報(bào)文就不再受到影響。IKE中還專門(mén)增加了NAT網(wǎng)關(guān)是否存在的檢查能力以及繞開(kāi)NAT網(wǎng)關(guān)檢測(cè)IKE協(xié)議的方法。

4. NAT的應(yīng)用和實(shí)現(xiàn)

4.1 NAT的應(yīng)用

NAT在當(dāng)代Internet中被廣泛采用,小至家庭網(wǎng)關(guān),大到企業(yè)廣域網(wǎng)出口甚至運(yùn)營(yíng)商業(yè)務(wù)網(wǎng)絡(luò)出口。其實(shí)NAT在用戶身邊隨處可見(jiàn),一般家庭寬帶接入的ADSL Modem和SOHO路由器都內(nèi)置了NAT功能,WindowsXP支持網(wǎng)絡(luò)連接共享,一個(gè)用戶連接到公網(wǎng)可能會(huì)經(jīng)過(guò)多層NAT而對(duì)此一無(wú)所知。很多企業(yè)也為節(jié)約IP費(fèi)用采用NAT接入Internet,但是相比家庭用戶有更復(fù)雜的需求。

NAT多實(shí)例應(yīng)用

在虛擬專用網(wǎng)絡(luò)中,多實(shí)例路由意味著一個(gè)物理拓?fù)渖铣休d多個(gè)邏輯拓?fù)洌W(wǎng)絡(luò)終端被分配到相互隔離的邏輯拓?fù)渲校舜酥g沒(méi)有路由的通路。但在訪問(wèn)Internet或者一些關(guān)鍵服務(wù)器資源時(shí),被隔離的網(wǎng)絡(luò)之間又存在共享資源的需求。NAT的多實(shí)例實(shí)現(xiàn)就是跨越這種邏輯拓?fù)涞姆椒ǎ岩粋€(gè)空間的網(wǎng)絡(luò)地址映射到另一個(gè)空間。

NAT的高可靠性組網(wǎng)

提高網(wǎng)絡(luò)可靠性是一個(gè)廣泛的需求,NAT作為私網(wǎng)到公網(wǎng)的關(guān)鍵路徑自然也需要高可靠性。當(dāng)一個(gè)設(shè)備提供多個(gè)公網(wǎng)接口時(shí),在多接口上部署NAT可以提供更高帶寬和多ISP就近訪問(wèn)的能力。但是,當(dāng)部署多個(gè)出口時(shí),訪問(wèn)的流量可能會(huì)從不匹配的接口返回,這就要求NAT方案有良好的路由規(guī)劃和部署合適的策略保證這種流量能夠正確處理。在多個(gè)物理設(shè)備承擔(dān)NAT功能時(shí),不同設(shè)備之間的信息備份和流量分擔(dān)也是一個(gè)組網(wǎng)難題。

同時(shí)轉(zhuǎn)換源和目的地址的應(yīng)用

前面我們介紹的所有NAT應(yīng)用中,由內(nèi)網(wǎng)向外網(wǎng)訪問(wèn)過(guò)程中,都是將源地址進(jìn)行轉(zhuǎn)換而目的地址保持不變,報(bào)文反方向進(jìn)入時(shí)則處理目的地址。但有一些特殊應(yīng)用需要在由內(nèi)向外的IP通路上,替換目的IP地址。通常,這種應(yīng)用會(huì)同時(shí)替換源地址和目的地址,在經(jīng)過(guò)NAT網(wǎng)關(guān)以后完成兩次地址轉(zhuǎn)換。當(dāng)兩個(gè)均規(guī)劃使用私屬I(mǎi)P地址范圍的網(wǎng)絡(luò)進(jìn)行合并時(shí),終端用戶都不想調(diào)整自己的IP地址方案,又希望開(kāi)放一些網(wǎng)絡(luò)資源給彼此訪問(wèn)。這時(shí)就可以通過(guò)NAT的兩次地址轉(zhuǎn)換來(lái)解決路由和地址規(guī)劃無(wú)法解決的問(wèn)題。

 

圖5 同時(shí)轉(zhuǎn)換源和目的地址的應(yīng)用

4.2 NAT的設(shè)備實(shí)現(xiàn)

NAT作為一個(gè)IP層業(yè)務(wù)特性,在產(chǎn)品實(shí)現(xiàn)中與防火墻、會(huì)話管理等特性有緊密聯(lián)系,這是因?yàn)镹AT判斷一個(gè)進(jìn)入設(shè)備的報(bào)文是否需要NAT處理,判斷報(bào)文是否為一個(gè)新的連接,都需要通過(guò)匹配訪問(wèn)控制列表規(guī)則和查詢會(huì)話關(guān)聯(lián)表進(jìn)行判斷。為了滿足不同應(yīng)用場(chǎng)景的NAT需求, NAT的管理界面可提供用戶多種配置策略。按照NAT的具體工作方式,又可以做如下分類。

靜態(tài)一對(duì)一地址映射

這種工作方式下,NAT把一個(gè)私網(wǎng)地址和一個(gè)公網(wǎng)地址做靜態(tài)關(guān)聯(lián),在從內(nèi)而外的方向,將源IP匹配的私網(wǎng)IP替換為公網(wǎng)IP,反方向則將目的IP匹配公網(wǎng)IP的報(bào)文替換為私網(wǎng)IP。網(wǎng)絡(luò)層以上的部分不進(jìn)行替換處理,只修正校驗(yàn)和。

靜態(tài)多對(duì)多地址映射

這種方式與上一種類似,只是把一段私網(wǎng)地址映射到一段公網(wǎng)地址。工作機(jī)制與前述的方式?jīng)]有差別,只是簡(jiǎn)化配置工作量。

動(dòng)態(tài)端口映射

這是最基本的工作方式,即前面多次介紹的將一段內(nèi)網(wǎng)地址動(dòng)態(tài)翻譯為一個(gè)或多個(gè)公網(wǎng)IP,同時(shí)對(duì)傳輸層端口或其他上層協(xié)議信息進(jìn)行轉(zhuǎn)換,以實(shí)現(xiàn)IP復(fù)用。對(duì)由內(nèi)而外的報(bào)文,替換源地址和端口,反向報(bào)文替換目的地址和端口。僅以連接公網(wǎng)的接口IP作為NAT轉(zhuǎn)換的公網(wǎng)地址時(shí),這種配置最簡(jiǎn)化,又被稱為EasyIP。當(dāng)以一段公網(wǎng)IP地址作為NAT轉(zhuǎn)換地址時(shí),需要配置一個(gè)地址池,NAT會(huì)自動(dòng)在地址池中選擇使用公網(wǎng)IP。

動(dòng)態(tài)地址映射(no-pat)

這是介于靜態(tài)多對(duì)多地址映射和動(dòng)態(tài)端口映射方式之間的一種工作機(jī)制。當(dāng)有一個(gè)私網(wǎng)向公網(wǎng)側(cè)訪問(wèn)到達(dá)NAT網(wǎng)關(guān)時(shí),NAT網(wǎng)關(guān)會(huì)檢查這個(gè)私網(wǎng)IP是否已經(jīng)有關(guān)聯(lián)的公網(wǎng)IP映射。如果已經(jīng)存在,則按照轉(zhuǎn)換表直接替換IP,不修改上層協(xié)議。如果不存在關(guān)聯(lián)表項(xiàng),則在空閑的公網(wǎng)IP池中占用一個(gè)IP,并寫(xiě)入關(guān)聯(lián)表中,以后按照這個(gè)關(guān)聯(lián)關(guān)系進(jìn)行地址轉(zhuǎn)換。當(dāng)這個(gè)私網(wǎng)主機(jī)發(fā)起的所有對(duì)外訪問(wèn)均關(guān)閉或超時(shí)后,回收公網(wǎng)IP。這種方式可以理解為一組內(nèi)網(wǎng)主機(jī)搶占式地共享一個(gè)公網(wǎng)IP地址池。當(dāng)公網(wǎng)IP地址池用完以后,新連接將無(wú)法建立。

靜態(tài)端口映射

通過(guò)靜態(tài)配置,把一個(gè)固定的私網(wǎng)IP地址和端口關(guān)聯(lián)到一個(gè)公網(wǎng)地址和端口上。這種方式等同于前面介紹過(guò)的全錐模式,但是不需要內(nèi)網(wǎng)主機(jī)首先發(fā)出報(bào)文。這種方式適用于在NAT網(wǎng)關(guān)上把一個(gè)知名服務(wù)(如HTTP)映射到一個(gè)內(nèi)部主機(jī)上,也稱為port forwarding。

應(yīng)用層網(wǎng)關(guān)(ALG)

在所有NAT產(chǎn)品實(shí)現(xiàn)中,ALG是一個(gè)必需的功能組件。但在不同實(shí)現(xiàn)中,有些產(chǎn)品可以動(dòng)態(tài)加載不同的ALG模塊,有些產(chǎn)品可以提供ALG開(kāi)關(guān)控制,有些則不提供任何用戶接口。ALG解析上層應(yīng)用協(xié)議的內(nèi)容,并且根據(jù)需要修改IP和端口相關(guān)信息,創(chuàng)建和維護(hù)附加的關(guān)聯(lián)表項(xiàng)。

NAT轉(zhuǎn)換關(guān)聯(lián)表

無(wú)論哪一種NAT工作方式,都要用到地址轉(zhuǎn)換關(guān)聯(lián)表,在不同產(chǎn)品的實(shí)現(xiàn)中,這個(gè)關(guān)聯(lián)表的存儲(chǔ)結(jié)構(gòu)和在IP轉(zhuǎn)發(fā)中調(diào)用的方式有很大不同。關(guān)聯(lián)表中會(huì)記錄源IP、目的IP、連接協(xié)議類型、傳輸層源端口、目的端口,以及轉(zhuǎn)換后的源IP、源端口,目的IP、目的端口信息,這里的源和目的都是對(duì)應(yīng)于從內(nèi)網(wǎng)到外網(wǎng)的訪問(wèn)方向。依據(jù)NAT具體工作方式,這些信息可能全部填充,也可能部分填充。例如只按照IP做靜態(tài)映射的方式,就不需要填入任何端口相關(guān)信息;對(duì)于靜態(tài)端口映射,則只填入源相關(guān)的內(nèi)容,而目的端的信息為空。

5. 后IPv4時(shí)代的NAT

NAT是為延緩IPv4地址耗盡而推出的技術(shù)。毫無(wú)疑問(wèn),它已經(jīng)出色完成了自己的歷史使命,IPv4比預(yù)期走得更遠(yuǎn)。作為繼任者的IPv6吸取了IPv4的教訓(xùn),被賦予充足地址空間的同時(shí)在各個(gè)方面做了優(yōu)化——安全、高效、簡(jiǎn)潔。但是IPv6無(wú)法平滑地取代IPv4,導(dǎo)致IP升級(jí)步伐緩慢。盡管網(wǎng)絡(luò)協(xié)議的分層設(shè)計(jì)很清晰,大量應(yīng)用層協(xié)議和互聯(lián)網(wǎng)軟件中仍內(nèi)嵌了IPv4地址的處理,要Internet全網(wǎng)升級(jí)到IPv6,必須先完成應(yīng)用的改造。因?yàn)镹AT和它的穿越技術(shù)結(jié)合能夠滿足大部分用戶的需求,所以IPv6時(shí)代被不斷推遲。

隨著IPv4地址的瀕臨耗盡,再經(jīng)濟(jì)的模式也無(wú)以為繼,IPv4必須退出歷史舞臺(tái)。人們自然會(huì)認(rèn)為,NAT作為IPv4的超級(jí)補(bǔ)丁技術(shù)使命已經(jīng)完結(jié)。實(shí)際情況是,IPv4向IPv6過(guò)渡的階段,NAT仍然是一項(xiàng)必不可少的技術(shù)手段。因?yàn)镮nternet無(wú)法在一日之內(nèi)完成全網(wǎng)升級(jí),必然是局部升級(jí),逐漸替換。在兩套協(xié)議并存的時(shí)期,用戶和服務(wù)資源分布在不同網(wǎng)絡(luò)之間,跨網(wǎng)訪問(wèn)的需求必須得到滿足。這正是NAT所擅長(zhǎng)的領(lǐng)域,地址替換,因此NAT-PT應(yīng)運(yùn)而生。由于IPv4和IPv6之間的差異,NAT要做的事比以往更復(fù)雜,有更多的限制和細(xì)節(jié)。

此外,IETF也在制定純IPv6網(wǎng)絡(luò)使用的NAT規(guī)范。雖然人們還看不到這種應(yīng)用的強(qiáng)烈需求,但是NAT仍有其獨(dú)特的作用,比如隱藏內(nèi)部網(wǎng)絡(luò)的地址,實(shí)現(xiàn)重疊地址網(wǎng)絡(luò)的合并等。

毫不夸張地說(shuō),正是有了NAT,以IPv4為基礎(chǔ)的Internet才能容納數(shù)十億的用戶終端,成就今日之輝煌。IPv4已至日暮西山,IPv6的黎明尚未來(lái)臨,Internet比任何時(shí)刻都更依賴NAT這項(xiàng)過(guò)渡技術(shù)。NAT的歷史再次證明,翻天覆地的劃時(shí)代進(jìn)步不一定有市場(chǎng),抱殘守缺的修修補(bǔ)補(bǔ)未必不會(huì)成功。在世代更替之時(shí)讓我們走近NAT,領(lǐng)略IP領(lǐng)域更多細(xì)微但不高深的知識(shí),理解NAT就是理解變換萬(wàn)千的應(yīng)用世界。

責(zé)任編輯:武曉燕 來(lái)源: 博客園
相關(guān)推薦

2019-04-30 08:15:31

2010-08-20 13:29:33

OFDM

2012-01-12 14:37:34

jQuery

2012-12-10 09:46:21

P2P云存儲(chǔ)Symform

2010-01-07 09:53:09

Winform多線程編

2009-02-24 09:43:00

IP電話原理

2020-11-26 13:54:03

容器LinuxDocker

2011-11-29 12:17:00

2015-12-01 15:33:21

P2P端口映射工具dog-tunnel狗洞

2019-11-28 10:45:28

ZooKeeper源碼分布式

2016-08-18 00:04:09

網(wǎng)絡(luò)爬蟲(chóng)抓取系統(tǒng)服務(wù)器

2013-04-07 14:09:55

Android應(yīng)用基本

2020-03-21 14:57:14

手機(jī)定位智能手機(jī)APP

2010-07-13 14:41:14

2024-08-06 14:03:35

2010-03-22 15:27:40

云計(jì)算

2020-03-05 20:30:15

Syncthing文件同步工具開(kāi)源

2016-08-17 23:53:29

網(wǎng)絡(luò)爬蟲(chóng)抓取系統(tǒng)

2021-02-08 21:40:04

SockmapBPF存儲(chǔ)

2022-07-19 16:59:04

流媒體傳輸IPC物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久国产精品免费免费搜索 | 人人干天天干 | 亚洲不卡视频 | 久久免费精品视频 | 青青草av网站 | 亚洲在线一区二区 | 日韩一区二区av | 九九热精品视频 | 欧美在线 | 特黄毛片视频 | 亚洲最大av | 久久精品久久精品 | 久久在线看 | 亚洲人在线 | 欧美日韩高清免费 | 亚洲精品视频免费观看 | 欧美精选一区二区 | 2019天天干天天操 | 97狠狠干| 亚洲精品1区 | 日韩三级精品 | 岛国av免费在线观看 | 91在线视频免费观看 | 麻豆视频在线免费观看 | 国产精品mv在线观看 | 欧美在线一区二区三区 | 欧美freesex黑人又粗又大 | 黄网站在线播放 | 黄色香蕉视频在线观看 | 日韩图区| 欧美jizzhd精品欧美巨大免费 | 欧美视频在线播放 | 最近免费日本视频在线 | 国产激情亚洲 | 国产午夜精品视频 | 亚洲国产成人久久综合一区,久久久国产99 | 欧美精品久久久 | 国产精品一区一区三区 | 亚洲一区精品在线 | 久久精品日产第一区二区三区 | 欧美三区在线观看 |