1. 程式人生 > >NAT穿越技術

NAT穿越技術

*NAT作用:1)解決IP地址不足問題2)避免網路外部攻擊,隱藏並保護內部的計算機。 *私有地址有哪些地址塊?

RFC 1918 為私有網路預留出了三個IP地址塊,如下:

A 類:10.0.0.010.255.255.255

B 類:172.16.0.0172.31.255.255

C 類:192.168.0.0192.168.255.255

2 NAT型別分類:

*完全錐形NATFull Cone NAT *特點:私網地址{X,y}對外網的對映地址對都為{Ab}(繫結),所有處於外網的如WPS都可以通過{Ab}訪問私網中的{X,y} *地址限制圓錐形NATAddressRestricted 
NAT

*特點:私網地址{X,y}對外網的對映地址對為{Ab}(繫結),只有外網P的包才可以通過{Ab}訪問私網中的{X,y}。這裡解釋下,埠受限的道理一樣。只要私網地址對位{X,y},則在對外連線時的對映地址對不會改變,即為{A,b}。也就是說如果P沒連線{X,y}了,則其他的連線{X,y}時的對映地址仍為{A,b}

*埠限制圓錐形NATPortRestricted Cone NAT


*特點:私網地址{X,y}對外網的對映地址對為{Ab}(繫結),只有外{P,q}包才可以通過{Ab}訪問私網中的{X,y}

*對稱NATSysmetric NAT

*特點:私網地址
{X,y}對外網的對映地址對為{Ab},並繫結為{X,y}|{A,b}ßà{P,q}NAT只接收來自{P,q}的包,並轉給{X,y}.當客戶端請求一個不同的公網地址和埠,就會新分配一個埠號{C,d}。這就是對稱型比上面複雜的問題,也就是說無論是私網地址對還是公網地址對,只要一方改變,則對映地址一定也改變。

3 SIP:

SIP(Session Initiation Protocol):稱為會話初始協議。SIP協議位於IP網路的應用層,在各個傳輸層(UDPTCPTLS等)之上

*SIP幾個功能實體:

使用者代理:將接受到的請求或響應訊息進行代理,發SIP網路中。分為客戶端代理(UAC

)和服務端代理(UAS

代理伺服器:負責轉發SIP資訊,新增用於路由的資訊。

重定向伺服器:接受SIP請求,把請求中的源地址對映成零個或多個地址,返回給給客戶機,從而使主叫可以通過新的被叫地址直接聯絡被叫。

註冊伺服器:接受使用者代理的請求,完成使用者的註冊資訊,只充當UAS功能。

SIP無法穿越SIP資訊的原因:

INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/TCP 192.168.0.101:53166;
Max-Forwards: 70
From: <sip:[email protected]>;tag=maw4ERN5HCs.-zt-vyOxss.Knrnj7Gv9
To: <sip:[email protected]>
Contact: <sip:[email protected]58.60.1.112:27045;transport=TCP;ob>;+sip.ice
Call-ID: 3m-y5mKxc8ligLANWcTS1MOKah6loyHH
CSeq: 9482 INVITE
User-Agent: CSipSimple_endeavoru-15/r2272
Content-Type: application/sdp
Content-Length: 714

v=0
o=- 3592783354 3592783354 IN IP4 58.60.1.112
s=pjmedia
c=IN IP4 58.60.1.112 
t=0 0
m=audio 40551 RTP/AVP 99 0 8 101
c=IN IP4 58.60.1.112
a=rtcp:40552 IN IP4 58.60.1.112

*①中(紅色部分)公網響應私網的請求資訊傳送200OK訊息時,目的地址192.0.101.1是私網地址,而私網地址無法在公網上路由
*中(紅色部分)各個層次的分工不一樣,NAT/FW處於IP層和TCP/UDP層,負責對地址和埠號的相應轉換,而SIP協議處於應用層,其通過報文的互動來協商雙方使用的IP地址和埠號。而這就是NAT/FW無法對應用層報文內部的資訊進行處理從而造成SIP信令定址不成或者無法建立連線的原因 *中(紅色部分)仍然是路由問題,SDP指定的c引數為私網IP地址,在傳送RTP資料包時,指定的地址無法在公網上路由

4.STUN:

為了解決SIP無法在NAT穿越的問題,提出了STUN協議。

*RFC3489RFC5389的區別:

RFC3489中,STUN全稱為:"SimpleTraversal of UDP through NAT“  RFC5389中,STUN全稱為:"SessionTraversal Utilities for NAT“ 

RFC3489下的STUN稱為“經典的STUN”,不適合作為一個NAT穿越解決方案,因為對穿透失敗情況沒有做出補救措施

RFC5389可以支援TCP上的連線。可以擴充套件到TURN

*RFC3489下的埠型別檢測:

在RFC3489的協議文件中提出MAPPED_ADDRESS欄位,該欄位返回私網地址穿越NAT連線公網地址時的對映地址對。也就是說從這個MAPPED_ADDRESS欄位可以判斷出某個客戶端其處於什麼環境中。下面對上圖的檢測情況進行說明:

1.進行TEST I,在TEST I 中,客戶端傳送一個STUN繫結請求到一個服務端,沒有設定任何標記。如果有個response響應,客戶端檢查MAPPED-ADDRESS屬性,如果地址和埠和傳送請求的本地的IP和埠一樣,則客戶端知道其處於非NAT內。進行test II。在test II 中,客戶端傳送一個含有“change IP”和“change port”的繫結請求,這意味著伺服器用一個IP和埠接收,用另一個IP和埠傳送響應資訊。

2.如果客戶端接收到response,客戶端知道它可以直接連線網路(或者至少是處於具有完全圓錐形NAT的防火牆後面,但不做地址轉換)。如果沒有響應,則客戶端知道其處於一個對稱的UDP防火牆中。

3.在test I測試中,如果IP和埠沒有匹配響應中的MAPPED-ADDRESS屬性,則客戶端知道其處於NAT後。則也進行test II(用兩個不同的地址,一個接收,一個返回資訊)。如果接受到一個響應了,說明是全圓錐形NAT(因為任意外網的IP地址可以和NAT內部的私網地址通訊)。如果沒有接受到響應,又重新進行test I 測試,這裡test I 連線的伺服器的地址和埠和第一次使用test I的地址和埠不一樣,如此時伺服器返回的對映地址對和第一次test I返回的對映地址對一樣,則表明其處於限制NAT型別環境中(看NAT型別分類),否則表明處於對稱NAT

4.在第三步中,若返回的IP相同,則進行test III, 在test III中客戶端傳送一個“change port”埠,伺服器接收到之後,用相同的IP,但埠不同作為響應,若客戶端接收到了,說明不受埠改變影響,即為限制錐形NAT,否則為埠受限。

*STUN進行UDP打洞過程

從STUN協議文件中,我們知道,STUN適合非對稱NAT型別,若要進行對稱NAT,還需要進行一些策略。

*過程:

(1):ASTUN伺服器傳送連線B請求(這裡A和B都已經向STUN伺服器註冊了)

(2):STUN伺服器向AB傳送對方的對映地址

(3):BA的對外地址作為目的地址傳送一個Hole Punching UDP包。並使得B中的NAT網路開了一個洞,允許後續請求進入該洞

(4):AB的外部地址為探測地址傳送一個探測資料報,同樣,該資料報也在A中的NAT網路中建立了一個對映

(5):由於第3步的洞開了,第4步的連線能進入了,所以B受到A的探測資料報之後發回給A一個ACK

5.一個系統模型:

上面的角色說明如下:SIP+STUN使用者代理為本地客戶端(UAC),SIP伺服器用於獲取對映地址,SIP伺服器用於資料路由等

用工程中的抓包情況說明VOIP是在NAT順利進行的。

首先使用者註冊:

這裡SIP註冊伺服器為220.231.193.226。 SIP客戶端為192.168.0.101。即處於內網中。則註冊之後,SIP伺服器獲取到客戶端的資訊,方便客戶端之間連線時SIP伺服器通過查詢SIP註冊伺服器之後進行目的端連線。可檢視上圖的via欄位中地址和contact欄位的地址

其次:STUN繫結對映地址:


客戶端連線STUN伺服器,地址為192.168.0.100,伺服器返回響應資訊,在XOR-MAPPED-ADDRESS屬性中獲取對映地址對(58.60.1.123:63166)。這個地址對用於後續的操作(如客戶端進行呼叫請教時修改其SDP報文欄位的C和M引數)

接著,SIP呼叫請求:

從上面一步分析指導,客戶端傳送INVITE請求時,會把原本私網地址和埠號修改為對映地址對,程式設計公網能路由的地址對。圖中加深部分即為修改的情況。

6.TURN:

相關推薦

NAT 穿越技術(一)

最近5G-ICN的專案需要考慮NAT穿越的問題,對這方面的技術細節不是很瞭解,故找到相關的內容,以便進行理解,方便知識回顧。 什麼是穿越NAT 在上圖中,ICG閘道器後面有兩臺主機分別是有線主機192.168.1.2和無線主機192.168.1.3

NAT穿越技術

*NAT作用:1)解決IP地址不足問題 , 2)避免網路外部攻擊,隱藏並保護內部的計算機。 *私有地址有哪些地址塊? RFC 1918 為私有網路預留出了三個IP地址塊,如下: A 類:10.0.0.0~10.255.255.255 B 類:172.16.0.0~172.31.255.255 C 類:192

NAT穿透技術

nat 只要兩側NAT都屬於Cone NAT(含Full Cone、Restricted Cone和Port Restricted Cone三者),即可雙向通信。一側NAT屬於Symmetric NAT,另一側NAT屬於Full Cone或Restricted Cone,也可雙向通信。參考網址:http:/

NAT 原理與NAT穿越

轉自:https://blog.csdn.net/whoamiyang/article/details/51992208?utm_source=blogxgwz6 最近在看負載均衡方面的東西中很多都提到了NAT穿越,特意在此總結一下: 先做一個約定: 內網A中有:A1(192.168.30.11

NAT閘道器和NAT穿越原理

轉自:https://blog.csdn.net/chance_yin/article/details/37913963 一、原理圖 1、背景資訊:  (1)我們模擬的情形是位於網路A下的內網主機UserA 想要和位於網路B下的內網主機UserB進行點對點通訊,剛開始的

ICE協議下NAT穿越的實現

前言: 之前寫了篇關於WebRTC的文章:iOS下音視訊通訊-基於WebRTC ,由於它是基於點對點連線的,自然而然需要NAT穿越的技術,否則訊息將無法傳遞。 在WebRTC使用了ICE協議框架,裡面提到了STUN和TURN兩個協議,而NAT穿越實現就是由這兩個協議共同協調完成的。 正文

NAT-T技術原理簡單分析及應用實驗解析

1.首先我們就IPSEC VPN的部署場景來做簡要分析: 場景1:如圖所示,企業的總部與分支機構分別架設了VPN裝置,分支機構的需求是同步企業內部的業務資料(屬企業內部的機密資訊),那麼就必須確保資料在公網上是安全包密傳遞的。這種情況下我們可以直接用IPSEC

NAT穿透技術詳解(udp打洞精髓附程式碼)

以前自己寫的程式碼都只是在本地進行c/s通訊,今天想寫一個可以跨越外網的c/s通訊,這裡我就用udp實現一個點對點的不同外網的通訊。用到的技術就是nat穿透技術,這裡最直接使用的就是udp打洞技術。文中如有表述不清楚,歡迎提問。如果你需要nat穿透技術的詳解點這裡:nat穿透

DDNS的NAT穿越問題

關於本文更詳細的內容,歡迎關注我的個人網站《程式設計師網》 首先介紹一下問題的背景: (1)本人想要幾個伺服器做測試,所以打算在家裡搭幾個伺服器。(當然,可以選擇vps之類,但這不符合極(diao)客(si)的性格) (2)然後,我需要把伺服器連到

NAT穿越-TCP打洞

TCP打洞 在處於NAT之後的兩臺主機之間建立p2p TCP連線比建立相應的UDP要稍微複雜,但在協議層次,TCP打洞非常類似與UDP打洞。然而TCP協議本身比較複雜,因此支援的NAT比較少。然而,在NAT支援TCP打洞的情況下,TCP打洞像UPD打洞那樣快並且可靠。穿透

IPSec NAT 穿越概述

由於歷史的原因,部署帶 Internet 協議安全的第二層隧道協議(L2TP/IPSec)的問題之一在於無法定位網路地址轉換(NAT)之後的 IPSec 對話方。 Internet 服務提供商和小型辦公/家庭辦公(SOHO)網路通常使用 NAT 來共享單個公共 IP 地址。

從機器狗淺析磁碟還原穿越技術(第一代到目前的第三代)

從機器狗淺析磁碟還原穿越技術 本文首先感謝女王提供的無數資料和code ,非常感謝。 磁碟保護驅動工作在檔案過濾系統之下,磁碟過濾驅動(disk.sys)之上 將上層對於磁碟的訪問定位到自己的處理過程 如圖所示 最新版本的狙劍提供了檢視功能,我的系統安裝了nod32 因此有一

關於NAT穿越的那些事兒

1.為啥需要NAT穿越 將一臺閘道器裝置設為內部網路和外部網路的分界線,在這臺網關裝置上一般會設定NAT和防火牆功能。實現內外連線的方式,一般是內部主機發起連線,和外部伺服器或者主機進行連線,如果是部署在公網上的伺服器當然沒有問題,但是如果涉及到同樣部署在NA

IPSec V.P.N與NAT穿越(基於思科設備)

操作 思科 完整性 計算 來看 傳輸 服務 這一 pro IPSec V.P.N與NAT穿越(基於思科設備)   IPSec是基於網絡層的,不能穿越通常的NAT、防火墻,這篇文章就是要討論,在需要NAT網絡的環境中,如果使用IPsec ××× 隧道技術。IPsec 協議

網路穿透與音視訊技術(4)——NAT對映檢測和常見網路穿越方法論(NAT檢測實踐1)

2.2、檢測過程實戰——伺服器端 要進行NAT對映檢測,按照上文提到的檢測方式,我們就需要一個服務端檢測程式。並將服務端檢測程式部署到具有兩個外網IP的硬體環境下。 2.2.1、檢測要求 服務端程式至少需要做到以下功能: 檢測客戶端和當前伺服器端之間是否至

網路穿透與音視訊技術(3)——NAT對映檢測和常見網路穿越方法論(NAT檢測)

1、什麼是網路穿透 1.1、伺服器高負載狀態下的通訊問題 想想一下這種情況,多個處於不同內部網路的終端同時進行大檔案傳輸工作。我們最直接的思維模式能夠想到的就是這些終端首先將檔案傳輸到某各都能訪問到的伺服器上,再由伺服器進行中轉傳輸。是的,這個方式最簡單直接,

第5章 IP地址和子網劃分(2)_IP地址分類和NAT技術

sts 端口 主機數 int 2.3 主機ip 主機 和源 找到 3. IP地址的分類 (1)五類IP地址 (2)數軸表示法 4. 保留地址 (1)網段的地址:主機ID全0。如192.168.100.0/24,其中的192.168.10.0指的是網段。 (2)廣播地

NAT技術與代理服務器

換ip tun address wid tar 資料 ip) target 進出 一、NAT技術介紹 1.概念 NAT英文全稱是“Network Address Translation”,中文意思是“網絡地址轉換”,它是一個IETF(Internet Engineering

華為NAT技術

華為nat技術實驗環境:實驗1:靜態NAT。一般給服務器使用。AR2模擬運營商網絡。AR1默認路由到AR2.[AR1]display nat static 可以查看NAT映射關系[AR1]ip route-static 0.0.0.0 0.0.0.0 12.0.0.2AR2作為公網路由,不會添加私網路由所以只

SIP穿越NAT SIP穿越防火墻-SBC

和源 消息 alt spl sim 連接建立 穿透 creat nec FireWall&NAT FireWall是一種被動網絡安全防衛技術,位於網絡的邊界。在兩個網絡之間運行訪問控制策略。防止外部網絡對內部信息資源的非法訪問,也能夠阻止特定