欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

NAT穿透技術、穿透原理和方法詳解

admin
2021年2月2日 12:19 本文熱度 3307

1、NAT分類


 

1.1 基礎型NAT

       僅將內網主機的私有IP地址轉換成公網的IP地址,并不將TCP/UDP端口信息進行轉換,分為靜態NAT和動態NAT。

 

1.2 NAPT

       NAPT不但會改變經過這個NAT設備的IP數據報的IP地址,還會改變IP數據報的TCP/UDP端口。

1.2.1錐型NAT

  1. 完全錐型(Full Cone NAT):在不同內網的主機A和B各自連接到服務器C,服務器收到A和B的連接后知道了他們的公網地址和NAT分配給他們的端口號,然后把這些NAT地址和端口號交叉告訴B和A。A和B給服務器所打開的“孔”可以給任何主機使用。如一私網主機地址是192.168.1.100:30000發至公網的所有請求都映射成一個公網地址172.1.20.100:20000,192.168.1.100:30000可以接收任何主機發給172.1.20.100:20000的數據報文。
  2. 受限制錐型(Restricted cone):主機A和B同樣需要各自連接服務器C,同時把A和B的地址告訴B和A,但一般情況下它們只能與服務器通信。要想直接通信需要發送消息給服務器C,如主機A發送一個UDP消息到主機B的公網地址上,與此同時,A又通過服務器C中轉發送一個邀請信息給主機B,請求主機B也給主機A發送一個UDP消息到主機A的公網地址上。這時主機A向主機B的公網IP發送的信息導致NAT A打開一個處于主機A的和主機B之間的會話,與此同時,NAT B也打開了一個處于主機B和主機A的會話。一旦這個新的UDP會話各自向對方打開了,主機A和主機B之間才可以直接通信。
  3. 端口受限錐型(Port-restricted):與受限制錐型類似,與之不同的是還要指定端口號。

1.2.2對稱NAT(Symmetric)

       對不同的外網IP地址都會分配不同的端口號。

1.2.3 兩者區別

       對稱NAT是一個請求對應一個端口,非對稱NAT是多個請求對應一個端口(象錐形,所以叫Cone NAT)。

1.3 安全系數

       對稱型 > 端口受限錐型 > 受限錐型 > 全錐型

 

2、網絡打洞

2.1 打洞條件

  1. 中間服務器保存信息、并能發出建立UDP隧道的命令
  2. 網關均要求為Cone NAT類型。Symmetric NAT不適合。
  3. 完全圓錐型網關可以無需建立udp隧道,但這種情況非常少,要求雙方均為這種類型網關的更少。
  1. 假如X1網關為Symmetric NAT, Y1為Address Restricted Cone NAT 或Full Cone NAT型網關,各自建立隧道后,A1可通過X1發送數據報給Y1到B1(因為Y1最多只進行IP級別的甄別),但B2發送給X1的將會被丟棄(因為發送來的數據報中端口與X1上存在會話的端口不一致,雖然IP地址一致),所以同樣沒有什么意義。
  2. 假如雙方均為Symmetric NAT的情形,新開了端口,對方可以在不知道的情況下嘗試猜解,也可以達到目的,但這種情形成功率很低,且帶來額外的系統開支,不是個好的解決辦法。pwnat工具據說可以實現。
  3. 不同網關型設置的差異在于,對內會采用替換IP的方式、使用不同端口不同會話的方式,使用相同端口不同會話的方式;對外會采用什么都不限制、限制IP地址、限制IP地址及端口。
  4. 這里還沒有考慮同一內網不同用戶同時訪問同一服務器的情形,如果此時網關采用AddressRestricted Cone NAT 或Full Cone NAT型,有可能導致不同用戶客戶端可收到別人的數據包,這顯然是不合適的。

2.2 打洞流程

不同的網絡拓撲NAT打洞的方法和流程有所區別。

2.2.1 同一個NAT設備下


  1. clinet A與Server S建立UDP連接,公共NAT(155.99.25.11)給client A分配一個公網端口62000;
  2. client B與Server S建立UDP連接,公共NAT(155.99.25.11)給client A分配一個公網端口62005;
  3. client A通過Server S發送一個消息要求連接client B,S給A回應B的公網和私網地址,并轉發A的公網和私網地址給B;
  4. A和B根據獲取的地址試圖直接發送UDP數據報文;是否成功取決于NAT設備是否支持hairpin translation(端口回流)。——打開端口回流相當于與client A的數據經過NAT設備轉發后才到達client B,即從外網NAT接口繞了一圈再訪問到同一個子網里的client B。(優點是可以防止內部攻擊)

2.2.2 不同NAT設備下


  1. A使用4321端口與S連接,NAT給回話在NAT分配外網62000端口(155.99.25.11:62000)與S連接;同理B以相同的方式與S連接,分配的外網地址端口是138.76.29.7:31000。
  2. A往S注冊消息包里包含里A的私有地址10.0.0.1:4321,此時S保存了A的地址;S給A臨時分配了一個用于公網的地址(155.99.25.11:62000),同時用于觀察外網數據包。
  3. 同理B往S注冊的消息包里也包含里B的地址,NAT同樣給B臨時分類了一個外網地址(138.76.29.7:31000)。
  4. Client A根據以上已知信息通過打洞的方式與B連接UDP通信:
  1. Client A發送請求消息,尋求連接B;
  2. S給A回應B的外網和內網地址,通給給B發送A的外網和內網地址;
  3. A和B開始利用這些地址嘗試直接發送UDP報文給彼此,不幸的是,此時A和B都無法接收對應的消息。因為A和B都是在不同的私有網絡中,A和B之前都是與S通信回話,并沒有與對方建立回話;即A沒有為B打開一個洞,B也沒有為A打開一個洞。這個過程的第一個報文需要會被拒絕同時打開對應的“洞”,隨后才可以直接通信,具體如下:
  1. A給B公網地址(10.0.0.1:4321 to 138.76.29.7:31000)發送的第一個報文,實際上是在A的NAT私有網絡上“打洞”來為新識別的地址(10.0.0.1:4321 138.76.29.7:31000) 建立UDP會話,并經主網地址(155.99.25.11:62000 138.76.29.7:31000)來傳送。
  2. 如果A發送到B的公網地址的消息在B發送到A的第一個消息越過B自己的NAT之前到達B的NAT,那么B的NAT可能會將A的入站消息解釋為非請求的傳入通信量并丟棄它。
  3. 同理,B給A公網地址方法的第一個消息也會在B的NAT上“打洞”來為地址(10.1.1.3:4321, 155.99.25.11:62000)建立回話。
  4. 隨后可以正常P2P通信。

2.2.3 多層NAT下


說明:NAT C 是一個大型的工業NAT設備,由ISP(Internet Service Provider,互聯網服務提供商)部署,用于將許多客戶多路復用到幾個公共IP地址上。

Client A和client B無法通道NAT A和NAT A進行P2P通信,因為它們屬于NAT C的局域網地址,因此client A和client B只能通道NAT C的hairpin translation進行P2P通信,如果NAT C不支持hairpin translation,則它們很難進行P2P通信。

每個客戶機像前面方式一樣啟動到服務器S的連接,引起NAT A和B各自創建一個單獨的公共/私有轉化——session A-S(18.181.0.31:1234 10.0.0.1:4321)和session B-S(18.181.0.31:1234 10.1.1.3:4321),并引起NAT C為每個會話建立一個公共/私有翻譯——session A-S(18.181.0.31:1234 10.0.1.1:45000)和session B-S(18.181.0.31:1234 10.0.1.2:5500)。

  1. 首先client A給client B的公網地址(155.99.25.11:62005)發送消息;
  2. NAT A翻譯原數據報文從10.0.0.1:4321帶10.0.0.1:45000;
  3. 數據報現在到達NAT C,它識別出數據報的目標地址是NAT C自己翻譯的公共地址之一;
  4. 如果NAT C是好的,那么其能翻譯出數據報文的源地址和目標地址(155.99.25.11:62000和10.0.1.2:55000),同時通過“回環”返回數據包到私有網絡;
  5. NAT B 翻譯數據報文得到NAT B私網地址,最終到達client B。
  6. Client B給client A發送數據報文與上述步驟類似。

2.3 打洞組合

       不同的NAT組合打洞的方式也有所不同,有點可以打洞,有的則不能打洞,如兩個都是對稱型設備則無法實現打洞。不同組合打洞結果如下:

Peer A

Peer B

是否可以打洞

全錐型

全錐型

全錐型

受限錐型

全錐型

端口受限錐型

全錐型

對稱型

受限錐型

受限錐型

受限錐型

端口受限錐型

受限錐型

對稱型

端口受限錐型

端口受限錐型

端口受限錐型

對稱型

對稱型

對稱型

 

3、關聯技術

  1. ALG:即應用程序級網關技術:傳統的NAT技術只對IP層和傳輸層頭部進行轉換處理,但是一些應用層協議,在協議數據報文中包含了地址信息。為了使得這些應用也能透明地完成NAT轉換,NAT使用一種稱作ALG的技術,它能對這些應用程序在通信時所包含的地址信息也進行相應的NAT轉換。主要類似與在網關上專門開辟一個通道,用于建立內網與外網的連接,也就是說,這是一種定制的網關。更多只適用于使用他們的應用群體內部之間。
  2. UpnP:它是讓網關設備在進行工作時尋找一個全球共享的可路由IP來作為通道,這樣避免端口造成的影響。要求設備支持且開啟upnp功能,但大部分時候,這些功能處于安全考慮,是被關閉的。即時開啟,實際應用效果還沒經過測試。
  3. STUN(Simple Traversalof UDP Through Network):這種方式即是類似于我們上面舉例中服務器C的處理方式。也是目前普遍采用的方式。但具體實現要比我們描述的復雜許多,光是做網關Nat類型判斷就由許多工作,RFC3489中詳細描述了。
  4. TURN(Traveral Using Relay NAT):該方式是將所有的數據交換都經由服務器來完成,這樣NAT將沒有障礙,但服務器的負載、丟包、延遲性就是很大的問題。目前很多游戲均采用該方式避開NAT的問題。這種方式不叫p2p。
  5. ICE(Interactive Connectivity Establishment):是對上述各種技術的綜合,但明顯帶來了復雜性。

4、其他

3.1 對稱NAT設備常用場景

1)使用第三方寬帶公司提供的寬帶,這類寬帶給用戶分配的是局域網IP,連接公網的NAT是運營商的,這類運營商一般采用對稱NAT。

2)移動互聯網,如3G、4G終端設備;

3)大公司路由器一般采用對稱NAT;

 

3.2影響“打洞”的因素

  1. 許多對稱nat以一種相當可預測的方式為連續的會話分配端口號,而有時分配到的端口剛好被別的應用使用了。
  2. Client有可能分到多個公網地址,例如:在NAT將公網地址155.99.25.11:62000分配給client A與S的會話之后,NAT可能會將另一個公網地址(如155.99.25.11:62001)分配給A試圖發起與B的P2P會話。在這種情況下,依據提供的連接打洞過程將失敗,因為后續來自B的傳入消息到達NAT A的錯誤端口號。
  3. 其他。

該文章在 2021/2/2 12:19:24 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved