NAT類型與驗證方法

概念

內部Tuple:(源)內網IP+PORT(例如:192.168.1.5:50007)

外部Tuple:(源)公網IP+PORT

目標Tuple:(目標)公網IP+PORT

 

NAT類型介紹

Symmetric和Cone兩種,其中Cone又分爲Full Cone、Restricted Cone、Port Restricted Cone三種類型。基本不同是NAT將內部Tuple與外部Tuple的轉換和映射關係的不同。Cone NAT與目標Tuple無關,Symmetric NAT將目標Tuple作爲建立轉換關係之前的重要參考項,與目標Tuple嚴格一一映射

Full Cone:

內部Tuple X經過NAT轉換至外部Tuple Y,X-Y的建立轉換關係,任意外部節點且無限制Tuple Z都可以將Tuple Y作爲目標Tuple,向我們的內部Tuple X發送UDP報文。

Restricted Cone:

與Full Cone不同的是:多了一個限制,限制是什麼,出於安全考慮,NAT設備只轉發已知的外部Tuple的IP報文,只有當內部Tuple X曾經發送過UDP報文給目標Tuple Z,纔可以與Tuple X發送報文。

Port Restricted Cone NAT:

在Restricted Cone上的基礎上,出於更加安全的考慮,NAT設備只轉發已知的外部Tuple的IP+PORT(過濾條件更爲苛刻)報文

Symmetric

通過嚴格的NAT方式,與目標Tuple建立嚴格的一一映射關係,確保安全性。

所以,從安全角度考慮:Symmetric > Port Restricted Cone NAT > Restricted Cone > Full Cone。相反,如果我們做P2P,打通點對點的通信方式的簡單程度,與上面排序就相反,最友好的NAT類型就是Full Cone,任意節點且無限制。

 

測試與驗證方法

方法1:藉助第三方STUN列表

Python:https://github.com/laike9m/PyPunchP2P

需要藉助外部STUN服務器完成,如下可作爲STUN列表,進行嘗試建立連接。

stun.xten.com 3478
stun.voipbuster.com 3478
stun.voxgratia.org 3478
stun.sipgate.net 10000
stun.ekiga.net 3478
stun.ideasip.com 3478
stun.schlund.de 3478
stun.voiparound.com 3478
stun.voipbuster.com 3478
stun.voipstunt.com 3478
numb.viagenie.ca 3478
stun.counterpath.com 3478
stun.1und1.de 3478
stun.gmx.net 3478
stun.callwithus.com 3478
stun.counterpath.net 3478
stun.internetcalls.com 3478
stun.voip.aebc.com 3478
numb.viagenie.ca 3478

方法2:測試工具

NAT類型測試工具:http://www.pc6.com/softview/SoftView_92208.html

 

方法3:部署stun服務器

Server:https://github.com/gortc/stund

Client:https://github.com/ccding/go-stun

注:Server端有雙地址和公網IP的要求限制。

 

NAT類型判別流程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章