基于UDP 的防火墙穿透技术的应用研究

时间:2022-06-08 02:10:58

基于UDP 的防火墙穿透技术的应用研究

摘要:该文主要研究防火墙的穿透技术,通过使用寻址服务器和中转服务器来对各种NAT的类型进行穿透研究,并利用UDP打通的通道建立数学模型,分析如何检测防火墙及NAT类型,通信过程如何建立,此过程中中转服务器充当的作用。

关键词:防火墙穿透;NAT;网络通信;P2P;客户端/服务器模式

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)10-2226-03

Abstract: This paper studies the firewall penetrating technology, sets up a mathematical model using the UDP channel. Besides, it discusses how to detect the type of firewall and NAT, how to create the communication process, and the role of transit server in the communicate process.

Key words: Firewall penetrating;NAT;Network communication;P2P;Client /Server mode

在安全问题越发敏感的今天,越来越多的用户开始注意到信息安全的重要性,除了安装相应的杀毒软件,防火墙则是作为保护网络安全的第一屏障。一般的防火墙会依照特定的规则,允许或是限制传输的数据通过。当然,该文不考虑企业级别的防火墙,因为通过一些禁用协议、端口,甚至基于应用层的控制,会使我们的穿透无从谈起,此处,我们只讨论它的NAT特性。在我们研究的问题中,需要实现在P2P环境的,不同网段的用户自由通信,而且这种通讯往往需要外网用户请求内网建立连接,然而,防火墙通常会认为此连接是不受信的,通信在此就会被阻断,该文研究的穿透就此而来。

1 UDP 穿透防火墙简介

1.1 使用UDP 穿透防火墙的原因

防火墙在内外网之间建立了一道屏障,用于保护内网的用户免受外部用户的攻击,防火墙的安全策略之一,就是阻止外部不受信的用户访问内部网络,尤其是对TCP的连接敏感,往往会被阻断,并且TCP三次握手的建立是不对称的,所以使用TCP穿透防火墙很困难,想要成功,往往决定与NAT对各种TCP包的序列的响应,该文选用UDP来进行穿透。在P2P通信的过程中,外网用户通常需要发起通信,如何使用UDP报文来实现真正意义上的P2P通信就显得更加有必要。

1.2 使用UDP 穿透防火墙的技术简介

STUN(Session Traversal Utilities for NAT,NAT会话传输应用程序)是一种以client/server模式设计的协议,它允许位于NAT(或多层NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT以及由NAT为本地使用的端口所绑定公网端口。这些信息被用来在两个同时处于NAT设备之后的PC之间建立UDP通信,而且不需要改造现有NAT。该协议由RFC 5389定义[1]。

通信中,一旦终端得知公网端的UDP端口,通信就可以开始了。如果NAT是完全圆锥型的,那么双方中的任何一方都可以发起通信;如果NAT是IP限制圆锥型或端口限制圆锥型,双方必须一起开始传输。该文中的边界设备会提供一个STUN服务器,Laptop端自带此类的客户端。客户端会向STUN服务器发送请求,接受到请求之后,服务器会向STUN客户端报告NAT路由器的公网IP地址以及NAT为允许流量传回内网的端口,可以认为打通了一个临时的UDP通道[2],图1是STUN的工作流程。

优点:

1) STUN服务器的部署位置灵活,且不需要对现有网络进行改造,易实现;

2) 协议简单,在多层NAT的网络环境下也可以使用

限制:

1) 不能检测对称型ANT;

2) 不能处理同一NAT下的检测

在该文中,采用STUN技术和中转服务器来弥补单一STUN技术的不足,实现穿透。

2 UDP穿透防火墙的建模

2.1 数学模型的建立

2.1.1 “STUN+中转服务器”模型

该文中所采用的NAT穿透方案,是将STUN技术和中转服务器联合实现的。为了分析得比较清楚,我们把防火墙和NAT逻辑分离,用等效模型来分析穿透的特征,由于是搭建的实验环境,可以认为通信成功建立的概率是100%,将穿透模型细分,则可以描述为以下的六类:

1) 通信双方均无防火墙且非严格NAT;

2) 一方无防火墙且非严格NAT,另一方有防火墙且非严格NAT;

3) 一方无防火墙且非严格NAT,另一方有防火墙且严格NAT;

4) 双方都有防火墙且非严格NAT;

5) 一方有防火墙且非严格NAT,另一方有防火墙且严格NAT;

6) 双方都有防火墙且非严格NAT;

终端与STUN服务器之间通讯维护:终端定期向服务器发送在keepalive,服务器收到后返回相应的keepalive,从而保证通信以及UPD hole的及时、有效。在服务器端,STUN本身有一个老化时间来可以通过keepalive来判断对方的失效与否,如果超过3倍时间的keepalive,则认为对端连接失效,从而保证了的连接效率[3]。

2.1.2 模型的穿透机制

穿透的机制分为两种:

第一,借助一个通讯双方都信任的转发者,该转发者必须有一定的协议机制来协商,传输转发数据,然而,为了方便起见,我们认为的转发者为:无防火墙,无NAT的公网中间节点来实现,这就是寻址服务器。

第二,对于第一种情况不能解决的问题,还需要再借助一个第三方―中转服务器,透过中转服务器的作用,我们能实现对于各种情况的的防火墙穿透。

2.1.3 P2P技术与寻集中式中转服务并存的方案

要想在存在防火墙的环境下,要实现Laptop1 和Laptop 2之间的P2P通信,它们之间必须彼此信任或者说能使它们变得相互信任。直接信任是很难实现,通常使部分终端之间变得相互信任,最终不能互相信任的结点需要通过中转服务器中转。提供寻址服务的结点必须被两个终端信任,简单而直接的办法就是在公网中部署,因为公网的IP是可以直接访问的,只要不设立相应的防火墙,那么所有知道该服务器域名以及IP的终端都可以访问它。寻址服务器的工作模式为:

注册:Laptop 1、Laptop 1在初始化阶段,并各自在寻址服务器上注册,注册的过程中,边界路由会透过NAT,将信息发送到寻址服务器,并在防火墙上登记,在寻址服务器反馈回来的信息则会被防火墙认定为可信的,一次注册或者说登录的过程就结束了。寻址服务器会将公网上的UDP地址,建立一张包含“终端ID―终端UDP地址―终端端口”的映射表[4]。

数据的发送:当Laptop 1 发送数据到Laptop 2时,Laptop 1的数据将由UDP报文来封装,其中包含Laptop 2的ID,数据报会发送到寻址服务器,寻址服务器取出数据报中的目的地的ID,然后在映射表中获取Laptop 2的地址,然后将数据报直接转发到相应的地址,数据报最终到达了Laptop 2。这种通过寻址服务器转发数据的方法叫做“集中式中转服务”。

保持:为了保证穿透的UDP hole有效,每隔几秒钟终端需向寻址服务器 发送keepalive报文。

2.2 中转服务器

2.2.1 中转服务器的工作原理

1) 中转服务器的使用条件:双方均有防火墙,有一方是严格NAT或者双方都是严格NAT。

2) 成为中转服务器的选择条件:受信任的(无防护墙);还不是已经成为中转服务器。

2.2.2 中转服务器的工作模型

以Laptop 1和Laptop 2通信为例,Laptop 1发起会话:

1) Laptop 1根据寻址服务器返回的寻址应答报文,向中转服务器发起请求,将这个请求报文以及本次通信的所有数据包发给中转服务器;

2) Laptop 2收到通知后,如果发现本次通话需要用中转服务器,则向中转服务器发送UDP的防火墙打通包。

3) 中转服务器收到需要转发的请求时,可根据请求中的双方IP地址、ID,建立一个镜像通道,并且将数据报文转发给Laptop 2。同时,将中转服务器置为busy;

4) 在之后的工作中,中转服务器收到其他需要转发的数据包时,会先和已建立的镜像通道匹配,如果匹配成功,则转发到另一端;匹配不成功则不作处理;

5) Laptop 2收到请求,如果发现使用了中转服务器,则给它返回应答报文,将这个请求报文以及本次通信的所有数据包发给中转服务器,等待中转服务器转发[14]。

如果镜像通道建立以后,收到“通话结束”的包或在老化时间内没有收到匹配成功的数据包,则关闭该镜像通道,同时将中转服务器置为idle。

2.3 有中转服务器介入的终端之间的UDP会话的建立及撤消

2.3.1注册信息和UDP通道的维持

健全的网络中,用户、中转服务器会先和寻址服务器建立UDP连接,之后,就需要和有通信需求的外网用户建立UDP会话时, UDP会话则分几种情况,通常称一次会话建立的过程叫做一次呼叫,涉及到主叫、被叫、寻址服务器、可能涉及中转服务器,成功通信的前提是主叫、被叫及中转服务器均已在寻址服务器上注册。中转服务器的注册和UDP通道的维持,同样使用“集中式中转服务”,但是超时时间可能不同,中转服务器本身也具备自己的状态。

2.3.2数据请求流程

3 结论

基于UDP的防火墙穿透技术的是现代P2P应用下的重要技术之一,它对语音,视屏数据的处理有着重要的意义,但是现实网络存在的一些因素往往给P2P用户的直接通信带来了问题,比如防火墙,又比如NAT。要想正真实现通信,穿透技术就很有研究的价值了。其实现在有不少的基于TCP的防火墙穿透技术的出现,但是使用UDP的优势使得二者并存。穿透技术中有一个重要的角色,那就是中转服务器,通过研究需要使用第三方直接中转的情况是:通讯双方,一方有防火墙且非严格NAT,另一方有防火墙且严格NAT和双方都有防火墙且非严格NAT。其他情况只需要借助寻址服务器皆可以通信,完全直通的情况只有完全圆锥型NAT且无防火墙的情况。对于通信双方均在一个NAT下的情况,也是可以通信的,只是寻址服务器直接会反馈一个私网的地址,终端直接在私网内通信。关于第三方的取代问题,中转服务器可以使用公网的服务器(当然,只要公网服务器的功能够强大而且也允许我们这么做),但是通常是使用一个通信的终端来实现的,因为大量的音频和视频数据往往会给公网服务器带来巨大的负担,这个通信的终端来转发这些大量的数据,有利于提高网络的性能,节约宝贵的公网资源。

参考文献:

[1] F2F team.防火墙穿透原理[R]. F2F team,2006.

[2] RFC 2993. Architectural Implications of NAT[S]. IETF. November 2000.

[3] 高扬,肖继民. NAT的穿越技术研究[J].江苏通信技术,2005(5).

上一篇:高效的网络运维管理设计 下一篇:翻转的“视界”惠普Pavilion X360 VS 联想Yoga...