nat穿越源碼
㈠ NAT穿透什麼意思
內網穿透即NAT穿透,網路連接時術語,計算機是區域網內時,外網與內網的計算機節點需要連接通信,有時就會出現不支持內網穿透。
就是說映射埠,能讓外網的電腦找到處於內網的電腦,提高下載速度。
不管是內網穿透還是其他類型的網路穿透,都是網路穿透的統一方法來研究和解決。在網路詞條
NAT穿越,nat穿透中有關於網路穿透的詳細信息。
NAT,即NAT Traversal,可譯為網路地址轉換或網路地址翻譯。
㈡ 關於nat-t穿越ipsec的問題
1.你說的這不是nat-t的特性,nat-t是在IKE協商時檢測兩個設備中間是否有NAT,如果有NAT就啟用nat-t技術。
2.為什麼要啟用nat-t?因為IPSEC協商後esp封裝是一個特殊與TCP和UDP並列的協議,和ICMP一樣,ESP是沒有埠號的,而NAT是需要進行埠號轉換的,如果開啟nat-t,兩個設備對esp數據包進行udp封裝,埠4500。
3.這個功能默認開啟的,不需要干預。
4.你本身的問題是在配置vpn的設備上的nat對IPSEC vpn的影響嗎?設備上默認策略是先處理NAT,再匹配感興趣流,所以如果在vpn設備上配置了NAT,會導致無法匹配感興趣流,也就導致內網無法訪問對端了,這種情況只要注意下用擴展訪問列表做nat,並把感興趣流的流量排除掉就OK了
㈢ 詳解P2P技術中的NAT穿透原理(轉載)
課程地址:零聲學院 WebRTC入門與提高 https://ke.qq.com/course/435382?tuin=137bb271
技術支持QQ群:782508536
最近介入測試P2P的相關邏輯,因此對NAT穿透原理做了一定程度的了解(當然也沒有很深入)。本篇文章也是綜合和參考了些網路上和文獻里的一些資料(文中沒有對引用處進行標記,請見諒)。寫本文的目的就是,用自己的語言描述了這個過程,同時也在描述過程中加入了一些自己的理解,形成一篇文章作為要點的記錄。對於這一塊的知識,自己也有很多盲點,還請各路大神多多指教。
NAT(Network Address Translation,網路地址轉換),也叫做網路掩蔽或者IP掩蔽。NAT是一種網路地址翻譯技術,主要是將內部的私有IP地址(private IP)轉換成可以在公網使用的公網IP(public IP)。
時光回到上個世紀80年代,當時的人們在設計網路地址的時候,覺得再怎麼樣也不會有超過32bits位長即2的32次冪台終端設備連入互聯網,再加上增加ip的長度(即使是從4位元組增到6位元組)對當時設備的計算、存儲、傳輸成本也是相當巨大的。後來逐漸發現IP地址不夠用了,然後就NAT就誕生了!(雖然ipv6也是解決辦法,但始終普及不開來,而且未來到底ipv6夠不夠用仍是未知)。
因此,NAT技術能夠興起的原因還是因為在我們國家公網IP地址太少了,不夠用,所以才會採取這種地址轉換的策略。可見,NAT的本質就是讓一群機器公用同一個IP,這樣就暫時解決了IP短缺的問題。
優勢其實上面已經剛剛討論過了,根據定義,比較容易看出,NAT可以同時讓多個計算機同時聯網,並隱藏其內網IP,因此也增加了內網的網路安全性;此外,NAT對來自外部的數據查看其NAT映射記錄,對沒有相應記錄的數據包進行拒絕,提高了網路安全性。
那麼,NAT與此同時也帶來一些弊端:首先是,NAT設備會對數據包進行編輯修改,這樣就降低了發送數據的效率;此外,各種協議的應用各有不同,有的協議是無法通過NAT的(不能通過NAT的協議還是蠻多的),這就需要通過穿透技術來解決。我們後面會重點討論穿透技術。
簡單的背景了解過後,下面介紹下NAT實現的主要方式,以及NAT都有哪些類型。
1)靜態NAT:也就是靜態地址轉換。是指一個公網IP對應一個私有IP,是一對一的轉換,同時注意,這里只進行了IP轉換,而沒有進行埠的轉換。舉個栗子:
2)NAPT:埠多路復用技術。與靜態NAT的差別是,NAPT不但要轉換IP地址,還要進行傳輸層的埠轉換。具體的表現形式就是,對外只有一個公網IP,通過埠來區別不同私有IP主機的數據。再舉個栗子。
通過上面NAT實現方式的介紹,我們其實不難看出,現實環境中NAPT的應用顯然是更廣泛的。因此下面就重點介紹下NAPT的主要類型有哪些。
對於NAPT我們主要分為兩大類:錐型NAT和對稱型NAT。其中錐型NAT又分:完全錐型,受限錐型和埠受限錐型。概括的說:對稱型NAT是一個請求對應一個埠;錐型NAT(非對稱NAT)是多個請求(外部發向內部)對應一個埠,只要源IP埠不變,無論發往的目的IP是否相同,在NAT上都映射為同一個埠,形象的看起來就像錐子一樣。下面分別介紹這四種類型及其差異。
1)完全錐型NAT(Full Cone NAT,後面簡稱FC)
特點:IP和埠都不受限。
表現形式:將來自內部同一個IP地址同一個埠號(IP_IN_A : PORT_IN_A)的主機監聽/請求,映射到公網IP某個埠(IP_OUT_B : PORT_OUT_B)的監聽。任意外部IP地址與埠對其自己公網的IP這個映射後的埠訪問(IP_OUT_B : PORT_OUT_B),都將重新定位到內部這個主機(IP_IN_A : PORT_IN_A)。該技術中,基於C/S架構的應用可以在任何一端發起連接。是不是很繞啊。再簡單一點的說,就是,只要客戶端,由內到外建立一個映射(NatIP:NatPort -> A:P1)之後,其他IP的主機B或埠A:P2都可以使用這個洞給客戶端發送數據。見下圖()。
2)受限錐型NAT(Restricted Cone NAT)
特點:IP受限,埠不受限。
表現形式:與完全錐形NAT不同的是,在公網映射埠後,並不允許所有IP進行對於該埠的訪問,要想通信必需內部主機對某個外部IP主機發起過連接,然後這個外部IP主機就可以與該內部主機通信了,但埠不做限制。舉個栗子。當客戶端由內到外建立映射(NatIP:NatPort –> A:P1),A機器可以使用他的其他埠(P2)主動連接客戶端,但B機器則不被允許。因為IP受限啦,但是埠隨便。見下圖(綠色是允許通信,紅色是禁止通信)。
3)埠受限型NAT(Port Restricted Cone NAT)
特點:IP和埠都受限。
表現形式:該技術與受限錐形NAT相比更為嚴格。除具有受限錐形NAT特性,對於回復主機的埠也有要求。也就是說:只有當內部主機曾經發送過報文給外部主機(假設其IP地址為A且埠為P1)之後,外部主機才能以公網IP:PORT中的信息作為目標地址和目標埠,向內部主機發送UDP報文,同時,其請求報文的IP必須是A,埠必須為P1(使用IP地址為A,埠為P2,或者IP地址為B,埠為P1都將通信失敗)。例子見下圖。這一要求進一步強化了對外部報文請求來源的限制,從而較Restrictd Cone更具安全性。
4)對稱型NAT(Symmetric NAT)
特點:對每個外部主機或埠的會話都會映射為不同的埠(洞)。
表現形式:只有來自同一內部IP:PORT、且針對同一目標IP:PORT的請求才被NAT轉換至同一個公網(外部)IP:PORT,否則的話,NAT將為之分配一個新的外部(公網)IP:PORT。並且,只有曾經收到過內部主機請求的外部主機才能向內部主機發送數據包。內部主機用同一IP與同一埠與外部多IP通信。客戶端想和伺服器A(IP_A:PORT_A)建立連接,是通過NAT映射為NatIP:NatPortA來進行的。而客戶端和伺服器B(IP_B:PORT_B)建立連接,是通過NAT映射為NatIP:NatPortB來進行的。即同一個客戶端和不同的目標IP:PORT通信,經過NAT映射後的公網IP:PORT是不同的。此時,如果B想要和客戶端通信,也只能通過NatIP:NatPortB(也就是紫色的洞洞)來進行,而不能通過NatIP:NatPortA(也就是黃色的洞洞)。
以上,就是NAPT的四種NAT類型。可以看出由類型1)至類型4),NAT的限制是越來越大的。
根據上面的介紹,我們可以了解到,在實際的網路情況中,各個設備所處的網路環境是不同的。那麼,如果這些設備想要進行通信,首先判斷出設備所處的網路類型就是非常重要的一步。舉個例子來說:對於視頻會議和VoIP軟體,對位於不同NAT內部的主機通信需要靠伺服器來轉發完成,這樣就會增加伺服器的負擔。為了解決這種問題,要盡量使位於不同NAT內部的主機建立直接通信,其中,最重要的一點就是要判斷出NAT的類型,然後才能根據NAT的類型,設計出直接通信方案。不然的話,兩個都在NAT的終端怎麼通信呢?我們不知道對方的內網IP,即使把消息發到對方的網關,然後呢?網關怎麼知道這條消息給誰,而且誰允許網關這么做了?
為了解決這個問題,也就是處於內網的主機之間能夠穿越它們之間的NAT建立直接通信,已經提出了許多方法,STUN(Session Traversal Utilities for NAT,NAT會話穿越應用程序)技術就是其中比較重要的一種解決方法,並得到了廣泛的應用。在這個部分,我們將重點介紹下STUN技術的原理。(PS:除此之外,還有UPNP技術,ALG應用層網關識別技術,SBC會話邊界控制,ICE互動式連接建立,TURN中繼NAT穿越技術等等,本文不一一做介紹。)
STUN是一種網路協議,它允許位於NAT(或多重NAT)後的客戶端找出自己的公網地址,查出自己位於哪種類型的NAT之後以及NAT為某一個本地埠所綁定的Internet端埠。這些信息被用來在兩個同時處於NAT路由器之後的主機之間建立UDP通信。該協議由RFC 5389定義。STUN由三部分組成:STUN客戶端、STUN伺服器端、NAT路由器。STUN服務端部署在一台有著兩個公網IP的伺服器上。大概的結構參考下圖。STUN客戶端通過向伺服器端發送不同的消息類型,根據伺服器端不同的響應來做出相應的判斷,一旦客戶端得知了Internet端的UDP埠,通信就可以開始了。
STUN協議定義了三類測試過程來檢測NAT類型。
Test1: STUN Client通過埠{IP-C1:Port-C1}向STUN Server{IP-S1:Port-S1}發送一個Binding Request(沒有設置任何屬性)。STUN Server收到該請求後,通過埠{IP-S1:Port-S1}把它所看到的STUN Client的IP和埠{IP-M1,Port-M1}作為Binding Response的內容回送給STUN Client。 Test1#2:STUN Client通過埠{IP-C1:Port-C1}向STUN Server{IP-S2:Port-S2}發送一個Binding Request(沒有設置任何屬性)。STUN Server收到該請求後,通過埠{IP-S2:Port-S2}把它所看到的STUN Client的IP和埠{IP-M1#2,Port-M1#2}作為Binding Response的內容回送給STUN Client。
Test2: STUN Client通過埠{IP-C1:Port-C1}向STUN Server{IP-S1:Port-S1}發送一個Binding Request(設置了Change IP和Change Port屬性)。STUN Server收到該請求後,通過埠{IP-S2:Port-S2}把它所看到的STUN Client的IP和埠{IP-M2,Port-M2}作為Binding Response的內容回送給STUN Client。
Test3: STUN Client通過埠{IP-C1:Port-C1}向STUN Server{IP-S1:Port-S1}發送一個Binding Request(設置了Change Port屬性)。STUN Server收到該請求後,通過埠{IP-S1:Port-S2}把它所看到的STUN Client的IP和埠{IP-M3,Port-M3}作為Binding Response的內容回送給STUN Client。
STUN協議的輸出是: 1)公網IP和Port 2)防火牆是否設置 3)客戶端是否在NAT之後,及所處的NAT的類型
因此我們進而整理出,通過STUN協議,我們可以檢測的類型一共有以下七種:
A:公開的互聯網IP。主機擁有公網IP,並且沒有防火牆,可自由與外部通信 B:完全錐形NAT。 C:受限制錐形NAT。 D:埠受限制形NAT。 E:對稱型UDP防火牆。主機出口處沒有NAT設備,但有防火牆,且防火牆規則如下:從主機UDP埠A發出的數據包保持源地址,但只有從之前該主機發出包的目的IP/PORT發出到該主機埠A的包才能通過防火牆。 F:對稱型NAT G:防火牆限制UDP通信。
輸入和輸出准備好後,附上一張維基網路的流程圖,就可以描述STUN協議的判斷過程了。
STEP1:檢測客戶端是否有能力進行UDP通信以及客戶端是否位於NAT後 -- Test1 客戶端建立UDP socket,然後用這個socket向伺服器的(IP-1,Port-1)發送數據包要求伺服器返回客戶端的IP和Port,客戶端發送請求後立即開始接受數據包。重復幾次。 a)如果每次都超時收不到伺服器的響應,則說明客戶端無法進行UDP通信,可能是:G防火牆阻止UDP通信 b)如果能收到回應,則把伺服器返回的客戶端的(IP:PORT)同(Local IP: Local Port)比較: 如果完全相同則客戶端不在NAT後,這樣的客戶端是:A具有公網IP可以直接監聽UDP埠接收數據進行通信或者E。 否則客戶端在NAT後要做進一步的NAT類型檢測(繼續)。
STEP2:檢測客戶端防火牆類型 -- Test2 STUN客戶端向STUN伺服器發送請求,要求伺服器從其他IP和PORT向客戶端回復包: a)收不到伺服器從其他IP地址的回復,認為包前被前置防火牆阻斷,網路類型為E b)收到則認為客戶端處在一個開放的網路上,網路類型為A
STEP3:檢測客戶端NAT是否是FULL CONE NAT -- Test2 客戶端建立UDP socket然後用這個socket向伺服器的(IP-1,Port-1)發送數據包要求伺服器用另一對(IP-2,Port-2)響應客戶端的請求往回發一個數據包,客戶端發送請求後立即開始接受數據包。 重復這個過程若干次。 a)如果每次都超時,無法接受到伺服器的回應,則說明客戶端的NAT不是一個Full Cone NAT,具體類型有待下一步檢測(繼續)。 b)如果能夠接受到伺服器從(IP-2,Port-2)返回的應答UDP包,則說明客戶端是一個Full Cone NAT,這樣的客戶端能夠進行UDP-P2P通信。
STEP4:檢測客戶端NAT是否是SYMMETRIC NAT -- Test1#2 客戶端建立UDP socket然後用這個socket向伺服器的(IP-1,Port-1)發送數據包要求伺服器返回客戶端的IP和Port, 客戶端發送請求後立即開始接受數據包。 重復這個過程直到收到回應(一定能夠收到,因為第一步保證了這個客戶端可以進行UDP通信)。 用同樣的方法用一個socket向伺服器的(IP-2,Port-2)發送數據包要求伺服器返回客戶端的IP和Port。 比較上面兩個過程從伺服器返回的客戶端(IP,Port),如果兩個過程返回的(IP,Port)有一對不同則說明客戶端為Symmetric NAT,這樣的客戶端無法進行UDP-P2P通信(檢測停止)因為對稱型NAT,每次連接埠都不一樣,所以無法知道對稱NAT的客戶端,下一次會用什麼埠。否則是Restricted Cone NAT,是否為Port Restricted Cone NAT有待檢測(繼續)。
STEP5:檢測客戶端NAT是Restricted Cone 還是 Port Restricted Cone -- Test3 客戶端建立UDP socket然後用這個socket向伺服器的(IP-1,Port-1)發送數據包要求伺服器用IP-1和一個不同於Port-1的埠發送一個UDP 數據包響應客戶端, 客戶端發送請求後立即開始接受數據包。重復這個過程若干次。如果每次都超時,無法接受到伺服器的回應,則說明客戶端是一個Port Restricted Cone NAT,如果能夠收到伺服器的響應則說明客戶端是一個Restricted Cone NAT。以上兩種NAT都可以進行UDP-P2P通信。
通過以上過程,至此,就可以分析和判斷出客戶端是否處於NAT之後,以及NAT的類型及其公網IP,以及判斷客戶端是否具備P2P通信的能力了。當然這是自己個人筆記的第一篇,後面,再作一篇筆記《NAT穿透原理淺析(二)》分析下不同NAT類型的穿透打洞策略。
㈣ 什麼是NAT穿越
不知道你說的是不是計算機的NAT穿越技術?
NAT分類
• Full Cone NAT(完全圓錐型)
• Address Restricted Cone NAT(地址限制圓錐型 )
• Port Restricted Cone NAT(埠限制圓錐型)
• Symmetric NAT(對稱型)
圖片在這里:http://hi..com/oceaning/blog/item/b42544f41198886cddc474e9.html
----------------------------------------------------------------------
IP的防火牆/NAT穿越技術
對IP地址資源需求的迅速增加超出了最初預期和設計的32比特(IPv4地址長度)。很多專家學者,尤其是IP標准領域的主導性國際組織IETF一直把IPv6看作是一種長期的IP地址短缺的解決方案,把網路地址翻譯(NAT)看作是一種中短期的地址短缺解決方案。NAT的大量使用,使得在協議設計中將IP地址作為通信標志符的VoIP協議無法正常工作。目前已經出現了多種典型的穿越技術,有些還在發展中。比較典型的有:
·應用網關(ALG:Application Level Gateway):是最早出現的NAT穿越解決方案,在傳統的NAT上進行協議擴展,使之具備感知SIP、H.323、H.324和MGCP等VoIP呼叫控制協議的能力,從而完成呼叫控制協議的解析和地址翻譯功能。
·代理技術:是為緩解ALG方式所帶來的現有NAT升級困難而出現的,它也是目前中國國內比較看好的一種NAT穿越解決方案,已經得到ITU-T的支持。
·隧道/VPN機制:邏輯上由隧道客戶端和隧道伺服器兩部分構成,隧道客戶端和隧道伺服器通過隧道協議建立一條隧道,實現信令和媒體流透明穿越NAT。
·MIDCOM技術:是為了解決ALG和代理技術所共有的可擴展性不強而出現的一種NAT穿越解決方案,採用可信的第三方(MIDCOM Agent)對Middlebox(NAT)進行控制,由MIDCOM Agent控制Middlebox打開和關閉媒體埠。
·單邊自我綁定地址(UNISAF: Unilateral Self-Address Fixing):RFC3424定義的UNSAF技術,可以讓位於NAT後的一個客戶設法發現位於NAT公網一側的該客戶的地址,然後讓應用使用新學習到的地址而不是它自真正的IP地址。這樣做需要在NAT公網一側增加一個UNSAF伺服器,並且修改客戶端,以便讓UNSAF伺服器知道如何使用該 UNSAF伺服器,而真正的應用伺服器並不改變,典型的UNSAF技術包括STUN,TURN等。
·伺服器做NAT導航(SINN:Server Involvement in NAT Navigation):修改伺服器,改變對應用的真正處理,這種改變可能會違反應用標准本身的規定。但在某些應用協議中,SINN技術允許不改變客戶端或NAT就可以實現NAT的穿越。這種技術能否使用完全取決於應用層協議,通常會對客戶端的行國有一個假設。典型應用就是SIP中的會話控制器(SBC)。
·協議擴展:是針對各個信令協議的特點,在信令消息中增加新的消息參數,或者對原有的呼叫流程進行改進,使之可以工作在NAT環境中。該方案的優點是無需對現有NAT設備進行改動,缺點是現有的終端和軟交換設備、網守和SIP伺服器等控制設備需要同時進行擴展。因此協議擴展時應重點考慮協議的向下兼容問題,以保證與示擴展的終端的完整互通性。
·IPv6:如果一種穿越技術需要修改全部的相關部分,那就是IPv6了。
㈤ NAT穿越的方法
普通NAT是通過修改UDP或TCP報文頭部地址信息實現地址的轉換,但對於VOIP應用,在TCP/UDP凈載中也需帶地址信息,ALG方式是指在私網中的VOIP終端在凈載中填寫的是其私網地址,此地址信息在通過NAT時被修改為NAT上對外的地址。
語音和視頻協議(H323、SIP、MGCP/H248)的識別和對NAT/Firewall的控制,同時每增加一種新的應用都將需要對 NAT/Firewall進行升級。
在安全要求上還需要作一些折衷,因為ALG 不能識別加密後的報文內容,所以必須保證報文採用明文傳送,這使得報文在公網中傳送時有很大的安全隱患。
NAT/ALG是支持VOIP NAT穿透的一種最簡單的方式,但由於網路實際情況是已部署了大量的不支持此種特性的NAT/FW設備,因此,實際應用中,很難採用這種方式。 與NAT/ALG不同的是,MIDCOM的基本框架是採用可信的第三方(MIDCOM Agent)對Middlebox (NAT/FW)進行控制,VOIP協議的識別不由Middlebox完成,而是由外部的MIDCOM Agent完成,因此VOIP使用的協議對Middlebox是透明的 .
由於識別應用協議的功能從Middlebox移到外部的MIDCOM Agent上,根據MIDCOM 的構,在不需要更改Middlebox基本特性的基礎上,通過對MIDCOM Agent的升級就可以支持更多的新業務,這是相對NAT/ALG方式的一個很大的優勢。
在VOIP實際應用中,Middlebox功能可駐留在NAT/Firewall,通過軟交換設備(即MIDCOMAgent)對IP語音和視頻協議(H323、SIP、MGCP/H248)的識別和對NAT/Firewall的控制,來完成VOIP應用穿越 NAT/Firewall .在安全性上,MIDCOM方式可支持控制報文的加密,可支持媒體流的加密,因此安全性比較高。
如果在軟交換設備上實現對SIP/H323/MGCP/H248協議的識別,就只需在軟交換和NAT/FW設備上增加MIDCOM協議即可,而且以後新的應用業務識別隨著軟交換的支持而支持,此方案是一種比較有前途的解決方案,但要求現有的NAT/FW設備需升級支持MIDCOM協議,從這一點上來說,對已大量部署的NAT/FW設備來說,也是很困難的,同NAT/ALG方式有相同的問題。 解決穿透NAT問題的另一思路是,私網中的VOIP終端通過某種機制預先得到出口NAT上的對外地址,然後在凈載中所填寫的地址信息直接填寫出口NAT上的對外地址,而不是私網內終端的私有IP地址,這樣凈載中的內容在經過NAT時就無需被修改了,只需按普通NAT流程轉換報文頭的IP地址即可,凈載中的 IP地址信息和報文頭地址信息是一致的。STUN協議就是基於此思路來解決應用層地址的轉換問題。
STUN的全稱是Simple Traversal of UDP Through Network Address Translators,即UDP對NAT的簡單穿越方式。 應用程序(即STUN CLIENT)向NAT外的STUN SERVER通過UDP發送請求STUN 消息,STUN SERVER收到請求消息,產生響應消息,響應消息中攜帶請求消息的源埠,即STUN CLIENT在NAT上對應的外部埠。然後響應消息通過NAT發送給STUN CLIENT,STUN CLIENT通過響應消息體中的內容得知其NAT上的外部地址,並將其填入以後呼叫協議的UDP負載中,告知對端,本端的RTP接收地址和埠號為NAT 外部的地址和埠號。由於通過STUN協議已在NAT上預先建立媒體流的NAT映射表項,故媒體流可順利穿越NAT.
STUN協議最大的優點是無需現有NAT/FW設備做任何改動。由於實際應用中,已有大量的NAT/FW,並且這些NAT/FW並不支持VoIP的應用,如果用MIDCOM或NAT/ALG方式來解決此問題,需要替換現有的NAT/FW,這是不太容易的。而採用STUN方式無需改動NAT/FW,這是其最大優勢,同時STUN方式可在多個NAT串聯的網路環境中使用,但MIDCOM方式則無法實現對多級NAT的有效控制。
STUN的局限性在於需要VOIP終端支持STUN CLIENT的功能,同時STUN並不適合支持TCP連接的穿越,因此不支持H323.另外STUN方式不支持對防火牆的穿越,不支持對稱NAT (Symmetric NAT)類型(在安全性要求較高的企業網中,出口NAT通常是這種類型)穿越。 TURN方式解決NAT問題的思路與STUN相似,也是私網中的VOIP終端通過某種機制預先得公網上的服務地址(STUN方式得到的地址為出口NAT上外部地址,TURN方式得到地址為TURN Server上的公網地址),然後在報文凈載中所要求的地址信息就直接填寫該公網地址。[Page]
TURN的全稱為Traversal Using Relay NAT,即通過Relay方式穿越NAT.TURN應用模型通過分配TURN Server的地址和埠作為私網中VOIP終端對外的接受地址和埠,即私網終端發出的報文都要經過TURN Server進行Relay轉發,這種方式除了具有STUN方式的優點外,還解決了STUN應用無法穿透對稱NAT(SymmetricNAT)以及類似的Firewall設備的缺陷,同時TURN支持基於TCP的應用,如H323協議。此外TURN Server控制分配地址和埠,能分配RTP/RTCP地址對(RTCP埠號為RTP埠號加1)作為私網終端用戶的接受地址,避免了STUN方式中出口NAT對RTP/RTCP地址埠號的任意分配,使得客戶端無法收到對端發來的RTCP報文(對端發RTCP報文時,目的埠號預設按RTP埠號加 1發送)。
TURN的局限性在於需要VOIP終端支持TURN Client,這一點同STUN一樣對網路終端有要求。此外,所有報文都必須經過TURN Server轉發,增大了包的延遲和丟包的可能性。 應該說ICE是目前在NAT穿透中最常用的方式。ICE(互動式連接建立)- Interactive Connectivity Establishment 是一種綜合性的NAT穿越的技術。互動式連接建立是由IETF的MMUSIC工作組開發出來的一種framework,可整合各種NAT 穿透技術,如STUN、TURN(Traversal Using Relay NAT)、RSIP(Realm Specific IP,特定域IP)等。該framework可以讓SIP的客戶端利用各種NAT穿透方式打穿遠程的防火牆。
㈥ 電信 如何實現NAT穿越
無線貓設置基本步驟:在輸網址的欄里輸入:192.168.1.1 進入電信無線貓設置界面,用帳號密碼,用戶名:telecomadmin,密碼:nE7jA%5m(注:密碼比較復雜建議復制粘貼上去)
進入後界面...
打開網路--寬頻設置.....
在連接名稱里找到你當地VPI/VCI連接....(銀川是8_35,下圖是以深圳.廣州為例)
選擇你當地VPI/VCI連接後..點刪除連接..(注意刪除你當地VPI/VCI那連接以後用電腦撥號是撥不上的..刪除這個連接是為下面設置路由打下基礎的)
刪除連接以後.新建立個連接...
承載業務INTERNET(啟用)
模式ROUTE(PPPOE)
使用NAT
輸入你上網的帳號密碼
確定
管理---設備管理---設備重啟(路由設置完成...)
以下開始配置DHCP服務,可限定IP,以控制上網電腦台數。
6
無線網路設置,至此設置基本完成。如果你不用無線,此處可禁用..
㈦ C# TCP 打洞/穿透NAT
這個很簡單啊...沒有外網IP沒關系.如果你是通過路由上網.在路由上做個埠印射,你的機器就能當外網IP伺服器用了.
打洞通常是UDP協議.TCP協議的打洞還真沒試過.
補充:你是沒伺服器,還是沒伺服器端代碼~~
㈧ 誰能給我一個能夠穿透內網的vb遠程式控制制源碼。或者說說思路也行!
nat穿透
㈨ CISCO路由器建立穿越NAT的VPN幾種解決方法
3種方法:
1.ipsec-over-udp cisco udp任何 6×isa esp---udp特定埠 group-policy
2.nat-t rfc udp4500 6×isa esp---udp4500 nat-tran
3.ipsec-over-tcp 只有特定埠tcp的流量 isa ipsec-over-tcp
例如下:
ip nat inside source static esp 1.1.1.1 interface FastEthernet0/0
靜態方式將esp封裝中的IP地址NAT轉換出去 為 f0/0 埠的ip
ip nat inside source static udp 1.1.1.1 4500 interface FastEthernet0/0 4500
NAT會影響ipsec協商包括ESP 和AH
所以用UPD500號埠重新封裝IPSEC數據,讓NAT放行500號埠數據
ip nat inside source static udp 1.1.1.1 500 interface FastEthernet0/0 500
是nat遍歷,你可以理解為用於在ipsecVPN設備之間發現NAT伺服器用的
㈩ C#UDP穿越NAT,UDP打洞,UDP Hole Punching源代碼,該怎麼處理
首先要有一個沒有nat的公網伺服器,
每個用戶使用一個埠與伺服器通訊 ,伺服器在收到用戶連入請求後把用戶的標識符跟用戶的埠號匹配保存起來
當另一個用戶請求該用戶時把該用戶對應的埠號返回 然後用戶之間互相用指定埠號聯系 就是打洞了
伺服器要維系連接要定時發心跳包