国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
NAT穿透技術原理淺談 >>網(wǎng)絡協(xié)議 >>云安網(wǎng)

NAT穿透技術原理淺談

發(fā)布時間:2010-12-31 12:34文章來源:網(wǎng)絡文章作者:wildlee 點擊次數(shù): 577 次
摘要:NAT穿透技術原理淺談 原創(chuàng):wildlee 今天我們來看看NAT方面的技術,提起NAT技術,我們大家可能并不陌生,就真實的存在我們身邊,只不過我們很少關注它.NAT是一種網(wǎng)絡地址翻譯技術,將內(nèi)部私有IP地址改變成可以在公網(wǎng)上使用的:公網(wǎng)IP.其出現(xiàn)背景就是因為我們...

NAT穿透技術原理淺談  原創(chuàng):wildlee

今天我們來看看NAT方面的技術,提起NAT技術,我們大家可能并不陌生,就真實的存在我們身邊,只不過我們很少關注它.NAT是一種網(wǎng)絡地址翻譯技術,將內(nèi)部私有IP地址改變成可以在公網(wǎng)上使用的:公網(wǎng)IP.其出現(xiàn)背景就是因為我們國家公網(wǎng)IP地址太少了不夠用,才使NAT技術興起.這里我就不具體和大家細說NAT是怎么轉換IP地址了,技術原理不太難.NAT技術的使用從技術角度講是有利也有弊的.我們可以同時讓多個計算機同時聯(lián)網(wǎng),同時也隱藏了內(nèi)部地址,NAT對來自外部的數(shù)據(jù)查看其NAT映射記錄,對沒有相應記錄的數(shù)據(jù)包進行拒絕,無非提高了網(wǎng)絡的安全性.從另一個方面來看,NAT設備對數(shù)據(jù)包進行編輯修改操作,降低了發(fā)送數(shù)據(jù)的數(shù)率.由于技術的復雜性,排錯也變的困難了,我們在內(nèi)部對外發(fā)布一個服務器,還得考慮這個端口映射問題等.這也到罷了,網(wǎng)絡盛行的今天,各種應用不斷,其協(xié)議應用也各有不同,有的根本無法通過NAT.這是最為頭疼的事.目前為了解決這些問題,已多現(xiàn)多種穿透技術.一會我們細談.

 

NAT三種實現(xiàn)方式

靜態(tài)地址轉換:一個公網(wǎng)IP對應一個內(nèi)部IP,一對一轉換

動態(tài)地址轉換:N個公網(wǎng)IP對應M個內(nèi)部Ip,不固定的一對一IP轉換關系.同一時間,有M-N個主機無法聯(lián)網(wǎng).

端口多路復用:對外只有一個公網(wǎng)IP,通過端口來區(qū)別不同內(nèi)部IP主機的數(shù)據(jù).

 

IP轉換策略

對于靜態(tài)與動態(tài)地址轉換;其數(shù)據(jù)包出站的時候,進行源地址轉換.我們稱之為SNAT[SOURCE ADDRESS].其內(nèi)部源IP變公網(wǎng)源IP.數(shù)據(jù)包入站的時候,進行目標地址轉換DNAT[DESTINATION ADDRESS],其外部公網(wǎng)宿IP變內(nèi)部宿IP.靜態(tài)與動態(tài)不進行端口轉換.而端口多路復用技術.不但要轉換其IP地址,還要進行其傳輸層的端口轉換.通過這唯一的端口號來區(qū)別不同的內(nèi)部數(shù)據(jù)[在通信過程中會建立一張內(nèi)部到外部映射表].我們稱之NATP[NAT PORT]技術.在我們家用網(wǎng)絡中,大部分用的是端口多路復用技術.在端口多路復用技術中,對數(shù)據(jù)的處理還分這么兩類:錐形NAT與對稱型NAT.錐形NAT又分完全錐形NAT[FULL CONE]|受限錐形NAT[RESTRICTED CONE]|端口受限錐形NAT[PORT RESTRICTED CONE].

 

全完錐形NAT:將來自內(nèi)部同一個IP地址同一個端口號的主機監(jiān)聽/請求,映射到公網(wǎng)IP某個端口的監(jiān)聽.任意外部IP地址與端口對其自己公網(wǎng)的IP這個映射后的端口訪問,都將重新定位到內(nèi)部這個主機.個人認為在內(nèi)部發(fā)布服務器到外網(wǎng),此技術原理完全否合該技術原理,當然某些P2P中也可能利用該技術.該技術中,基于C/S架構的應用可以在任何一端發(fā)起連接.

 

受限錐形NAT:與完全NAT不同的是,在公網(wǎng)映射端口后,并不允許所有IP進行對于該端口的訪問,要想通信必需內(nèi)部主機對某個外部IP主機發(fā)起過連接,然后這個外部IP主機就可以與該內(nèi)部主機通信了.但端口不做限制.如出站源IP為A端口為B,對于外部IP回復,宿IP為A宿端口可以是任意.NAPT設備都將成功轉發(fā)到內(nèi)部主機.NAPT設備根據(jù)映射記錄做出判斷.該技術中只能內(nèi)部主機先發(fā)起連接通信才可成功.

 

端口受限錐形NAT:該技術與受限錐形NAT相比更為嚴格.除具有受限錐形NAT特性.對于回復主機的源端口也有要求.哪我用端口B訪問你,對于外部主機的回復信宿端口也只能是B.否折通信失?。摷夹g中只能內(nèi)部主機先發(fā)起連接通信才可成功.

 

對稱型NAT:內(nèi)部主機用同一IP與同一端口與外部多IP通信.NAPT設備為每個會話轉換了不同的源端口.不在轉換成相同的源端口.對于回復的數(shù)據(jù)包,只有信宿IP地址與端口完全吻合才可進入.當然源IP也是要檢測的,不可能隨意外部IP都能進入的.

 

NAT穿透技術

為何會出現(xiàn)NAT穿透技術?我們知道在NAPT技術應用中,要想實現(xiàn)通信,端口是必需的.IP地址修改是必需的.現(xiàn)在是殘酷的.FTP應用協(xié)議分控制端口與數(shù)據(jù)端口,悲劇的是數(shù)據(jù)端口不是固定的,協(xié)商成功后告知對方數(shù)據(jù)端口內(nèi)容是承載于應用層之中.NAT設備無法對其進行分析,做出相應的映射,從而導致通信失敗.VPN協(xié)議中的PPTP協(xié)議,在數(shù)據(jù)連接中協(xié)議部分根本沒有端口這一概念.要NAT如何做出決策?ipsec安全協(xié)議本身就是保證數(shù)據(jù)的安全并認證通信源而發(fā)明,對其網(wǎng)絡層進行IP效驗,對傳輸入層進行加密,對數(shù)據(jù)進行加密.對于NAT來說讓其通信這更是無稽之談.當然無法穿過NAT的還有很多,如語音VOIP中的H.323與SIP協(xié)議.為了能讓這些協(xié)議成功應用,出現(xiàn)了五花八門的穿透NAT技術.其技術有UPNP技術.ALG[應用層網(wǎng)關識別技術]SBC[會話邊界控制]ICE[交互式連接建立]MIDCOM[中間盒技術]TURN[中繼NAT穿越]STUN技術.TCP/UDP hole punching[TCP/UDP打洞技術]NAT-T技術…總之很多,原理各不相同,我也沒有時間一個一個學習和分析.在此說幾個應用比較多點的例子.

 

ALG技術:傳統(tǒng)的NAT技術只能檢測網(wǎng)絡層與傳輸層地址,你FTP不是在應用層傳送端口地址嗎?所以ALG技術就是一種應用層地址識別技術,根據(jù)不同的協(xié)議進行檢測,然后將發(fā)現(xiàn)的地址時行修改并通知NAT做相應的映射記錄,從而實現(xiàn)成功通信.對于該技術,對于互聯(lián)網(wǎng)每一種新的協(xié)議支持都要更新其設備要不無法識別.擴展性差.對于個別協(xié)議該技術無法解決問題,如IPSEC協(xié)議.

 

STUN技術:通過STUN協(xié)議與第三方服務器建立連接,推測出客戶端的NAT類型.進而通信.RFC3489/STUN協(xié)議過程[摘自cr0_3百度空間].STUN協(xié)議定義了三類測試過程來檢測NAT類型,如下所述:

Test1:STUN Client通過端口{IP-c1:Port-c1}向STUN Server{IP-s1:Port-s1}發(fā)送一個Binding Request(沒有設置任何屬性)。STUN Server收到該請求后,通過端口{IP-s1:Port-s1}把它所看到的STUN Client的IP和端口{IP-m1,Port-m1}作為Binding Response的內(nèi)容回送給STUN Client。

Test1#2:STUN Client通過端口{IP-c1:Port-c1}向STUN Server{IP-s2:Port-s2}發(fā)送一個Binding Request(沒有設置任何屬性)。STUN Server收到該請求后,通過端口{IP-s2:Port-s2}把它所看到的STUN Client的IP和端口{IP-m1#2,Port-m1#2}作為Binding Response的內(nèi)容回送給STUN Client。

Test2:STUN Client通過端口{IP-c1:Port-c1}向STUN Server{IP-s1:Port-s1}發(fā)送一個Binding Request(設置了Change IP和Change Port屬性)。STUN Server收到該請求后,通過端口{IP-s2:Port-s2}把它所看到的STUN Client的IP和端口{IP-m2,Port-m2}作為Binding Response的內(nèi)容回送給STUN Client。

Test3:STUN Client通過端口{IP-c1:Port-c1}向STUN Server{IP-s1:Port-s1}發(fā)送一個Binding Request(設置了Change Port屬性)。STUN Server收到該請求后,通過端口{IP-s1:Port-s2}把它所看到的STUN Client的IP和端口{IP-m3,Port-m3}作為Binding Response的內(nèi)容回送給STUN Client。


NAT類型檢測過程如下

1. 進行Test1。如果STUN Client不能夠收到STUN Server的應答(重復多次確認),那么說明該STUN Client是UDP Blocked類型(也有可能是STUN Server不可到達,這里不考慮這種情形);否則,STUN Client把返回的{IP-m1,Port-m1}和本地的{IP-c1:Port-c1}進行比較(只需要比較IP即可),如果相同,說明本機直接連接于公網(wǎng),否則本機位于NAT之后,但還需要進一步判斷具體類型。

1.1. 如果本機直接連接于公網(wǎng),進行Test2。如果STUN Client不能夠收到STUN Server的應答(重復多次確認),那么說明該STUN Client是Symmetric Firewall類型;否則,該STUN Client是Open Internet類型。

1.2. 如果本機位于NAT之后,進行Test2。如果STUN Client能夠收到STUN Server的應答,那么說明該STUN Client是Full Cone NAT;否則,需要進一步進行測試。

1.2.1. 進行Test1#2。STUN Client比較IP-m1和IP-m1#2是否相同,如果不相同,那么說明該STUN Client是Symmetric NAT類型;否則,需要進一步進行測試。

1.2.1.1 進行Test3。如果STUN Client能夠收到STUN Server的應答,那么說明該STUN Client是Restricted Cone NAT類型;否則,該STUN Client是Port Restricted Cone NAT類型。

 

該技術大部分是針對P2P應用環(huán)境中.

NAT-T技術:其思想就是在ESP隧道模式下,在外IP包頭與ESP報頭中間加入8個字節(jié)的UDP報關,使其NAT成功映射.

IPSec提供了端到端的IP通信的安全性,但在NAT環(huán)境下對IPSec的支持有限,AH協(xié)議是肯定不能進行NAT的了,這和AH設計的理念是相違背的;ESP協(xié)議在NAT環(huán)境下最多只能有一個VPN主機能建立VPN通道,無法實現(xiàn)多臺機器同時在NAT環(huán)境下進行ESP通信。

 

NAT穿越(NAT Traversal,NAT-T)就是為解決這個問題而提出的,RFC3947,3948中定義,在RFC4306中也加入了NAT-T的說明,但并沒廢除RFC3947,3948,只是不區(qū)分階段1和階段2。該方法將ESP協(xié)議包封裝到UDP包中(在原ESP協(xié)議的IP包頭外添加新的IP頭和UDP頭),使之可以在NAT環(huán)境下使用的一種方法,這樣在NAT的內(nèi)部網(wǎng)中可以有多個IPSec主機建立VPN通道進行通信。

 

 AH封裝:AH封裝的校驗從IP頭開始,如果NAT將IP的頭部改動,AH的校驗就會失敗,因此我們得出結論,AH是無法與NAT共存的。ESP封裝的傳輸模式:對于NAT來說,ESP封裝比AH的優(yōu)勢在于,無論是加密還是完整性的校驗,IP頭部都沒有被包括進去。但是還是有新的問題,對于ESP的傳輸模式,NAT 無法更新上層校驗和。TCP 和 UDP 報頭包含一個校驗和,它整合了源和目標 IP 地址和端口號的值。當 NAT 改變了某個包的 IP 地址和(或)端口號時,它通常要更新 TCP 或 UDP 校驗和。當 TCP 或 UDP 校驗和使用了 ESP 來加密時,它就無法更新這個校驗和。由于地址或端口已經(jīng)被 NAT 更改,目的地的校驗和檢驗就會失敗。雖然 UDP 校驗和是可選的,但是 TCP 校驗和卻是必需的。

 

  ESP封裝的隧道模式:從ESP隧道模式的封裝中,我們可以發(fā)現(xiàn),ESP隧道模式將整個原始的IP包整個進行了加密,且在ESP的頭部外面新加了一層IP頭部,所以NAT如果只改變最前面的IP地址對后面受到保護的部分是不會有影響的。因此,IPsec只有采用ESP的隧道模式來封裝數(shù)據(jù)時才能與NAT共存。ESP的傳輸模式,因為TCP部分被加密,NAT無法對TCP校驗和進行修改,不兼容。ESP的隧道模式,由于NAT改動外部的IP而不能改動被加密的原始IP,使得只有這種情況下才能與NAT共存。

至于UDP打洞穿透技術請參看:http://www.wildlee.org/2010_02_152.html

其它技術就不說了,看不過來了東西太多了.文中有兩個細節(jié)部分感覺寫的非常好,我就沒有自己在去寫拿來用了.也不知道原作者是誰對不住了.

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
WebRTC服務器理論鋪墊(四):STUN協(xié)議和STUN Header
穿越NAT的迷霧:深入理解NAT和NAT穿透,STUN、TURN、ICE的關系
iptables下udp穿越實用篇----iptables與natcheck
FreeSWITCH關于穿越NAT的那點事兒
P2P網(wǎng)絡“自由”穿越NAT的“秘密” - 技術文檔 - IXPUB技術社區(qū)
對比Cone NAT 和 Symmetric NAT,說明STUN為何不適用于對稱型NAT的穿透
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服