邱耀 群,金光,江先亮,蘇成龍
(1.寧波大學信息科學與工程學院,浙江 寧波 315211;2.浙江大學計算機科學與技術學院,浙江 杭州 310027)
對稱型NAT穿越技術的研究*
邱耀 群1,金光1,江先亮2,蘇成龍1
(1.寧波大學信息科學與工程學院,浙江 寧波 315211;2.浙江大學計算機科學與技術學院,浙江 杭州 310027)
根據對稱型NAT的映射特點,提出了一種改進后的穿越對稱型NAT方案,并在具有對稱型NAT的應用場景的相關實驗測試中取得了較好的實驗結果,達到了預期的目標。新方案具有STUN方式無需更改NAT設備、協議相對簡單等優點,能很好地滿足企業既能節約IP地址又具有較高安全性的NAT需求。
NAT穿越 端口預測 STUN協議 對稱型NAT
現如今,網絡正在迅速發展,IPv4地址已經被耗盡,而IPv6技術尚未完全成熟與普及。在IPv4到IPv6的過渡階段,NAT(Network Address Translators)技術[1-2]有效解決了IP地址短缺的問題,被廣泛地應用于企業內部網絡中。因NAT技術具有可隱藏內部網絡結構的特點,所以可以有效保護內部網絡,避免來自網絡外部的攻擊,保障了使用內部網絡的企業網或校園網的安全。
常用的穿越NAT的方法主要有STUN(Simple Traversal of UDP Through Network Address Translator)[3]、ALGs(Application Layer Gateways)、中間盒(Middlebox Communications)、TURN(Traversal Using Relay NAT)[4]、ICE(Interactive Connectivity Establishment)[5]等技術,但這些技術都存在著一些問題。如STUN協議比其他協議都簡單,但無法工作于對稱型NAT;ALGs需要修改現有的NAT設備;中間盒通過第三方設備來建立通信,要求對現有NAT設備進行擴展;TURN通過中繼轉發的方式來穿越NAT設備,會存在嚴重延時和丟包現象;ICE結合了STUN與TURN這2種協議,但同樣存在TURN中延時與丟包的現象,而且服務器工程量大。本文結合對稱型NAT存在的不同場景給出相應的基于STUN的穿越方案,此方案無需對現有NAT設備做修改而且協議簡單,其和TURN、ICE技術相比減輕了服務器負擔、解決了延時丟包等問題。
2.1 NAT技術原理
NAT是一個互聯網工程任 務組IETF(Internet Engineering Task Force)標準。NAT技術原理如圖1所示,其將只能限定在內網中使用的IP地址群(A類10.0.0.0-10.255.255.255;B類172.16.0.0-172.16.255.255;C類192.168.0.0-192.168.255.255)轉化成能夠在公網中使用的IP地址。具體過程為當私有網絡中的主機與外部網絡進行通信且發送的UDP數據報經過NAT時,NAT設備會根據源地址、源端口、目標地址、目標端口這個四元組來給私有主機分配一個端口。同時,將此端口與私有主機地址對應起來放入映射表中,然后用NAT自身的公網IP和分配的端口來替換UDP報文中的源IP和源端口。當目標主機返回數據時,NAT設備可查詢之前所對應的映射表,將報文發送到內網的客戶端主機。根據上面的描述,可將內網中的IPv4地址充分復用,以此來緩解IPv4地址短缺的現象[6]。

圖1 NAT技術原理
2.2 NAT分類及其特點
STUN協議是IETF提出的一種用UDP來穿越NAT的標準協議。根據STUN協議可以將NAT分為完全錐型(Full Cone NAT)、受限錐型(Restricted Cone)、端口限制型(Port Restricted Cone)和對稱型(Symmetric)這4種。
(1)完全錐型NAT:當NAT中內網主機A向外網主機B發送數據時,內網中的IP地址和端口號都將被映射成同一個外網IP地址和端口號。而且外網中的任何一個主機(包括主機B)都可通過這個映射的外網IP地址和端口號向內網主機發送數據,建立通信。
(2)受限錐型NAT:當NAT中內網主機A向外網主機B發送數據時,內網中的IP和端口號也將會被映射成同一個外網IP和端口號。先前已經同主機A進行過數據通信的主機B(可以用任何端口)才可以與主機A進行通信,其他的外網主機都不能與A通信。
(3)端口受限型NAT:當NAT中的內網主機A向外網主機B發送數據時,內網中的IP和端口號會被映射成同一個外網IP和端口號。先前已經同主機A進行過數據通信的主機B(只能使用先前建立通信的端口)才可以與主機A進行通信,其他外網以及主機B的其他任何端口都不能和主機A進行通信。
(4)對稱型NAT:相比于所有的錐型NAT,對稱型更加的靈活。對稱型NAT的分配是由源地址、源端口、目標地址、目標端口這一個四元組來決定的。當四元組中的任何一項變化時,其映射關系都會改變。
3.1 錐型NAT的穿越
錐型NAT與對稱型NAT不同,其映射與目標地址和端口無關,即源地址相同,映射也就相同。可使用較成熟的Hole Punching(打洞)技術[7-8]來實現穿越。NAT穿越技術流程如圖2所示。
步驟1:客戶端A、B分別向服務器S發送數據請求,進行注冊,這是一個創建實例和初始化的過程。該過程中,客戶端會獲得穿透服務器S返回的初始化信息,包括協議版本、回話名稱、該客戶端的內網地址和端口、NAT映射地址和端口等。
步驟2:當客戶端注冊完成之后,服務器S的數據庫中會保存每個客戶端相應的地址和端口記錄。當客戶端A要與客戶端B進行通信時,會請求服務器S,希望獲取客戶端B的IP地址和端口(包括內網IP地址和端口、NAT映射地址和端口等)。同時,客戶B也會向服務器S發送請求,希望獲取A的IP地址和端口等信息。
步驟3:服務器S返回客戶端信息,客戶端A獲得了客戶端B的信息后,會從這些信息里面提取出部分信息。提取的信息主要是客戶端B的內網IP地址和端口、NAT映射地址和端口等,客戶端A會將這些數據存儲起來,等待NAT穿透協商的時候使用,而客戶端B也會采取同樣的操作。
步驟4:客戶端B收到信息之后,將客戶端A的映射IP地址與端口作為目標地址,并向此目標地址發送Hole Punching UDP數據報。該數據報使NAT B可以接收之后來自于客戶端A的數據報,使其能進入到NAT B的內部網絡,形象地稱B向A打了一個“洞”。同樣的,客戶端A也向B打一個“洞”。之后雙方互相發送穿透信息,進行穿透連接測試,這個過程實現的是STUN協議,會根據對方客戶端的候選地址,逐個發送穿透信息,等待連接成功。如果連接成功,將會返回成功通道的IP地址和端口號,然后A、B雙方可以利用該通道進行數據傳輸;如果連接失敗,說明客戶端連接的NAT設備中存在對稱型NAT。

圖2 NAT穿越技術流程圖
3.2 穿越對稱型NAT
STUN協議無法工作于對稱型NAT[9],其原因是:對稱型NAT的映射分配規則是由源地址、源端口、目標地址、目標端口這個四元組來唯一確定的。當四元組中的任何一項改變時,其映射的端口都會相應改變。而根據這種特性,文獻[10]提出了一種方案,實現了一方為對稱型NAT,而另一方為Cone NAT的穿越問題,但并不能穿越雙方都為對稱型NAT的場景[10]。本文提出了一種適用于雙方客戶端都在對稱型NAT場景的穿越方案。
對稱型NAT的映射分配規則分為以下3種,可以按照NAT設備中分配規則的常見程度來排序:
規則1:增量型,即在上一次映射的端口號上加一個特定的數值;
規則2:小范圍隨機型,即在上一次映射的端口號附近小范圍隨機變動的一個數值V;
規則3:完全隨機型,即在端口號1024至65535中隨機生成。
本文采用以下方法來實現穿越雙方都為對稱型NAT的場景,具體如圖3所示:

圖3 穿越雙對稱型NAT流程圖
步驟1:客戶端A和客戶端B分別向穿越服務器S的2個端口(SPort1、SPort2)發送數據,從而建立連接。而NAT A和NAT B分別為客戶端A、B分配的外部地址為Addressi以及2次NAT映射端口號為Pifirst,Pisecond(這里i=1、2,1代表客戶端A,2代表客戶端B)。在建立連接之后,服務器S記錄下相應的信息。
步驟2:客戶端A請求服務器S,希望與客戶端B進行通信,并希望獲取B的IP地址和端口號。服務器S計算出NAT B端口分配間距為并預測NAT B為B分配的下一次端口號為將 Address2和發送給A。同樣,服務器計算出NAT A端口間距為并預測NAT A為A分配的下一次端口號為=ΔP1,將Address1和發送給B。
步驟3:客戶端A獲取到信息之后,將Address2和端口P2next作為目的地址發送Hole Punching UDP數據報。同樣,B將Address1和端口P1next作為目標地址發送Hole Punching數據報。如果雙方能夠建立通信,說明雙方的對稱型NAT分配方式都為規則1;如果雙方不能建立連接,則說明分配方式為規則2或者規則3。
步驟4:對規則2進行猜測,由于目標端口很可能落在上一次映射端口(PL)的附近。猜測規則為在上一次的映射端口號PL的附近小范圍內,所以將PL增加或者減少V(1<V<50),即預測端口為Pnext=PL+V。A、B分別將所預測的端口作為目標端口并向目標端口發送UDP數據報。如果該過程中能建立通信,則連接成功;如不能建立通信,則繼續步驟5。
步驟5:將步驟4中V的范圍逐步增大,直至猜測成功,雙方能建立通信為止。從統計學角度出發并結合ΔP的特性來進行分析,對一定范圍內的端口進行預測的時候,假設i次猜測中,1次成功的概率為P1,i次猜測中i次都失敗的概率為P2。設N=65535-1024,且預測的端口每一次都不一樣,所以i次猜測中i次都失敗的概率P2的計算公式為:

可以計算出i次猜測至少成功1次的概率為P1=1-P2,當i≥439的時候,至少猜中1次的概率為95%。此結論證實了預測的可行性。
具體實驗中的網絡拓撲結構如圖4所示。采用Linux(Ubuntu8.0.4)平臺構建一個公網服務器,并分配一個公網IPv4地址(123.152.83.160)和2個端口。同時在該服務器上安裝了MySQL數據庫,建立了clientInfo、reflectIP等表,分別用來記錄注冊信息和映射IP等信息。并用NAT設備A、B分別將2個公網IP(61.153.148.160和123.152.82.10)建成內網環境。2個客戶端A、B采用Windows平臺,客戶端A的內網IP為192.168.1.100,位于NAT A的內網環境中;客戶端B的內網IP為10.22.71.35,位于NAT B的內網環境中。

圖4 實驗網絡拓撲圖
在實驗過程中,選擇增量型、小范圍隨機型與完全隨機型這3種分配方式的對稱型NAT來進行測試,即為NAT設備A和B分別替換不同分配方式的對稱型NAT。進行多次實驗之后,統計結果如表1所示:

表1 實驗測試結果
上述結果較好地驗證了本文所提改進方案的可行性。
本文基于STUN協議,采用端口猜測來解決UDP穿越對稱型NAT的問題。在雙方都在對稱型NAT場景中的情況下,3個應用場景的實驗結果表明:對于雙方都在增量型或者小范圍隨機型映射規則的對稱型NAT下,能較好地穿越成功;但是對雙方都在完全隨機型映射規則的對稱型NAT下,會存在一些穿越不成功的情況,還有待進一步的研究。
[1] Srisuresh P, Holdrege M. RFC2663 IP Network Address Tanslator (NAT) Terminology and Considerations[S]. 1999.
[2] 曹申會. NAT穿越技術研究與實現[D]. 南京: 南京郵電大學, 2013.
[3] Rosenberg J, Weinberger J, Huitema, et al. STUN Simple Traversal of User Datagram Protocol (UDP)Through Network Address Translators (NATs) [S]. 2003.
[4] Rosenberg J, Mahy R, Huitema C. Traversal using relay NAT (TURN) [R]. 2005.
[5] 劉磊. 基于ICE方式的SIP穿越NAT技術的研究[D].天津: 天津大學, 2007.
[6] 朱光,張云華,盧娟. 基于ICE的VOIP穿越NAT方案的研究[J]. 計算機應用與軟件, 2011,28(10): 222-224.
[7] 龍湘君,邵棟,榮國平. 基于TUN/TAP與UDP打洞技術的虛擬局域網[J]. 計算機應用與軟件, 2011(7): 224-226.
[8] 王止戈,彭宇峰,張蘇靈,等. 一種基于預測的Symmetric NAT穿越解決方案[J]. 計算機工程, 2005,31(11): 122-123.
[9] 孫衛喜,席少龍. P2P中NAT穿越問題的研究[J]. 計算機技術與發展, 2014,24(2): 242-245.
[10] 王勇,崔修濤,呂釗,等. 基于探測對Symmetric NAT與端口受限NAT的穿透方案[J]. 計算機應用, 2006,26(4): 922-925.★
Research on Symmetric NAT Traversal Technique
QIU Yao-qun1, JIN Guang1, JIANG Xian-liang2, SU Cheng-long1
(1. Faculty of Electrical Engineering and Computer Science, Ningbo University, Ningbo 315211, China; 2. College of Computer Science and Technology, Zhejiang University, Hangzhou 310027, China)
According to the feature of the symmetric NAT, an improved symmetric NAT traversal approach was proposed in this paper. In the application scene with symmetric NAT, good results were gotten in related experiments and tests and the expected goal was achieved. The proposed approach has the advantages of STUN protocol, such as simple protocol and no modifi cation of existing equipment. It well meets the demands of enterprises on both saving IP address and enhancing security of NAT.
NAT traversal port forecast STUN protocol symmetric NAT
10.3969/j.issn.1006-1010.2015.07.012
TP393
A
1006-1010(2015)07-0057-04
邱耀群,金光,江先亮,等. 對稱型NAT穿越技術的研究[J]. 移動通信, 2015,39(7): 57-60.
浙江省自然科學基金(LY12F02013);浙江省寧波市移動網絡應用技術創新團隊(2011B81002);浙江省科技廳公益技術應用研究項目(2014C31059);寧波大學研究生重點課程建設項目(ZDKC2013003)
2014-12-04
責任編輯:劉妙 liumiao@mbcom.cn