对称型NAT穿越技术的研究*
2015-12-20邱耀金光江先亮苏成龙
邱耀 群,金光,江先亮,苏成龙
(1.宁波大学信息科学与工程学院,浙江 宁波 315211;2.浙江大学计算机科学与技术学院,浙江 杭州 310027)
对称型NAT穿越技术的研究*
邱耀 群1,金光1,江先亮2,苏成龙1
(1.宁波大学信息科学与工程学院,浙江 宁波 315211;2.浙江大学计算机科学与技术学院,浙江 杭州 310027)
根据对称型NAT的映射特点,提出了一种改进后的穿越对称型NAT方案,并在具有对称型NAT的应用场景的相关实验测试中取得了较好的实验结果,达到了预期的目标。新方案具有STUN方式无需更改NAT设备、协议相对简单等优点,能很好地满足企业既能节约IP地址又具有较高安全性的NAT需求。
NAT穿越 端口预测 STUN协议 对称型NAT
1 引言
现如今,网络正在迅速发展,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 NAT技术
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 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 实验验证
具体实验中的网络拓扑结构如图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 实验测试结果
上述结果较好地验证了本文所提改进方案的可行性。
5 结论
本文基于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