动态打开网络地址转换和防火墙端口的方法

文档序号:7617402阅读:135来源:国知局
专利名称:动态打开网络地址转换和防火墙端口的方法
技术领域
本发明涉及数据通信技术,特别涉及数据信息穿越网络地址转换/防火墙的技术。
背景技术
近几十年来,人类社会信息化程度飞速提高,以网间互联协议(InternetProtocol,简称“IP”)技术为核心的互联网呈爆炸式的发展,目前整个世界接入互联网的终端达到数十亿之多,远远超出了互联网出现初期最乐观的估计。随着互联网的飞速发展,呈现在互联网面前的有两个问题急需解决,IP地址资源匮乏和网络安全问题。
对于IP地址资源匮乏问题,互联网初期设计的网间互联协议第4版(Internet Protocol version 4,简称“IPv4”)协议,它所能够提供的用于相互识别的IP地址已经接近枯竭。而过渡到网间互联协议第6版(InternetProtocol version 6,简称“IPv6”)还需要漫长的时间。为了暂时在IPv4体系内继续支撑互联网的发展,应对之道是采用网络地址转换(NetworkAddress Translation,简称“NAT”)技术,熟悉本领域的技术人员都知道,企业一般在内部网络出口处部署NAT设备,出口处的网络设备上,企业可以使用全球任何用户都可以访问到的公用IP地址,而内部网络中的各种设备却是采用只能被自身网络中的用户识别的私有IP地址,NAT设备的作用就是对内外部地址进行转换,相当于起到一个IP地址翻译的作用。
而对于日益严峻的网络安全问题,大多数企业都在内部网络出口处部署防火墙(Firewall,简称“FW”),熟悉本领域的技术人员都知道,FW正如其名称一样所起的作用一样,通过内部网络与外部互联网的隔离,防范黑客等非法外部用户访问内部网络,提高应对外部不安全因素的能力。
NAT及FW可以在一个物理设备中实现,只是逻辑上体现为两个功能。如图1所示,此种架构的网络由终端10、终端12分别代表被网络地址转换/防火墙11与网络地址转换/防火墙13隔开的内部网络用户,而终端14、终端15代表外部接入互联网络的用户,服务器16一般是为各种终端用户提供服务的设备。以上这些设备都通过网间互联协议网络17,即IP网络相连。特别需要说明的是,FW技术经历了包过滤、应用代理网关、再到状态检测三个阶段,本发明中所描述的FW特指状态FW,也就是基于状态的报文过滤的FW。
由图1可知,NAT/FW把网络分成内部和外部,网络内部优先级高于网络外部优先级。一般FW配置的策略是允许内部用户主动访问外部,不允许外部用户主动访问内部。即终端10可以主动访问终端14,终端14回来的报文可以穿透FW。但是终端15不能主动访问内部用户,即终端15不能主动访问终端10,发起的报文请求会被网络地址转换/防火墙11拦截掉。而由于NAT与FW类似,也可以通过设定地址转换规则达到限制终端访问的目的,即终端10可以访问终端14,但是终端15不能主动访问终端10,因为终端15到终端10的连接在NAT设备上没有表项,NAT设备无法将报文传给终端10。
NAT/FW这种允许内部访问外部,而外部用户不能主动访问内部的特性虽然可以解决前述的两个互联网技术问题,但是又引入了新的问题,对某些应用有影响。以H.323语音协议为例,熟悉本领域的技术人员都知道,此协议是国际互联网电话技术的标准协议,在此协议的协商过程中,终端10将侦听1个传输控制协议(Transfer Control Protocol,简称“TCP”)端口,需要外部网络主动访问进来。在有NAT/FW的情况下,外部报文无法进入内部网络,将造成协商失败。为了解决这些新出现的问题,提供更好的解决方案显然势在必行。
如图2所示,现有的穿越解决方案由终端20、网络地址转换/防火墙21、穿越客户端(Traverse Client,简称“TC”)22、穿越服务器(Traverse Server,简称“TS”)23、终端24、服务器25和网间互联协议网络26组成,与原有的最基本的NAT/FW方案相比,通过在NAT/FW网络内部增加一个穿越客户端22,在网络外部增加一个穿越服务器23,二者以某种方式进行交互。熟悉本领域的技术人员都知道,二者互交互可以通过FW一般不能关闭的端口来进行,因为这些端口关闭了用户就不能进行基本的互联网访问,二者正好也可以利用这种机制保持交互状态。一般情况下,穿越服务器23可以作为一个逻辑功能结合在其他网络设备中进行部署,常见的是集成在代理(Proxy)设备中。通常穿越客户端22作为一个软件以一种后台进程的方式运行在PC机上。
以外部终端24需要访问内部终端20的具体过程为例,穿越服务器23和穿越客户端22一直保持交互状态,当外部终端24想要访问内部终端20时,需要在网络地址转换/防火墙21打开一个新端口才可以建立连接,但是由于NAT/FW的安全机制,外部终端24提出的建立新端口的请求会被拒绝。所以外部终端24只能通过穿越服务器23向穿越客户端22传送有关信息,希望穿越客户端22由内部网络发起,并且模拟终端20发送源端口为A的报文来打开网络地址转换/防火墙21上的端口,NAT/FW的安全机制中是可以允许内部网络终端用户发起这样的请求并接受的。
穿越客户端22打开网络地址转换/防火墙21端口A的方式,更详细的描述如下穿越客户端22通过模拟终端20发送源端口为A的报文来打开网络地址转换/防火墙21上的端口。由于此报文来自网络内部,因此网络地址转换/防火墙21会形成相应的连接表项。
同时,由于穿越客户端22、穿越服务器23是一直保持交互的,穿越客户端22将已经打开网络地址转换/防火墙21端口A的消息告知穿越服务器23。穿越服务器23知道在网络地址转换/防火墙21上打开特定的端口为端口A后,就把此消息最终返回到外部终端24上。
外部终端24就可以利用这个端口,发出报文,NAT/FW由于其上已有相应的连接表项,这样的报文可以不被NAT/FW拦截,顺利到达内部网络终端20,外部网络的终端24实现了主动访问内部网络终端20的目的。
在实际应用中,上述方案存在以下问题在处理TCP之类面向连接的协议时,通过模拟另外的终端发送报文来打开NAT/FW的端口时,模拟报文无法通过状态严格检测的FW,也无法通过序列号严格检测的FW。
造成这种情况的主要原因在于,当FW设置为严格检测三次握手状态时,TC对TCP报文的不能完全意义上的模拟,导致FW上的连接表项不能完全建立。熟悉本领域的技术人员都知道,因特网上传输的数据都必须遵循TCP/IP协议,根据TCP协议,每个可靠连接的建立需要经过客户端同步请求(SYN)、服务器应答(SYN+ACK)、客户端再应答(ACK)三个阶段,最常用到的网页浏览、文件下载、收发邮件等都要经过这三个阶段。这反映出数据包并不是独立的,而是前后之间有着密切的状态联系,基于这种状态变化,引出了状态检测技术。状态检测FW摒弃了包过滤FW仅考查数据包的IP地址等几个参数,而不关心数据包连接状态变化的缺点,在FW的核心部分建立状态连接表,并将进出网络的数据当成一个个的会话,利用状态表跟踪每一个会话状态。状态监测对每一个包的检查不仅根据规则表,更考虑了数据包是否符合会话所处的状态,因此提供了完整的对传输层的控制能力。目前任何一款高性能的FW,都会采用状态检测技术,在此状态下,TC模拟终端发出的报文创建连接表项将存在严重的问题。
而当如果防火墙支持序列号检测时,TC模拟终端发出的报文与后续终端真正发出的报文的序列号将存在很大差异,对于TCP协议来说,前后报文的序列号只允许在一定的范围内。而序列号本身是一个4字节的数,最大为4294967295。由于目前终端很多都采用随机的初始TCP序列号,基本上不存在模拟正确的可能,也会导致在建立连接表项时出错。

发明内容
有鉴于此,本发明的主要目的在于提供一种动态打开网络地址转换和防火墙端口的方法,使得不需要修改终端就可以穿越进行严格状态或序列号检测的NAT/FW设备。
为实现上述目的,本发明提供了一种动态打开网络地址转换和防火墙端口的方法,包含以下步骤A穿越客户端收到来自穿越服务器的穿越通道请求时,获取所述网络地址转换和防火墙所支持协议的类型;B所述穿越客户端判断所述网络地址转换和防火墙是否支持通过协商打开通道的协议,如果是则使用该协议根据所述穿越通道请求中的信息与所述网络地址转换和防火墙交互,打开供内网终端穿越的端口;C所述穿越客户端将所打开的端口信息通知所述穿越服务器。
其中,所述通过协商打开通道的协议包括通用即插即用协议和中间盒通信协议。
所述步骤B还进一步包含以下子步骤当所述穿越客户端判定所述网络地址转换和防火墙不支持通过协商打开通道的协议时,通过模拟内网终端向该网络地址转换和防火墙发送报文的方式打开供该终端穿越的端口。
所述穿越客户端从配置信息中获取所述网络地址转换和防火墙所支持协议的类型。
所述步骤B中,所述穿越客户端和所述网络地址转换和防火墙交互的步骤包含以下子步骤所述穿越客户端与所述网络地址转换和防火墙建立连接;所述穿越客户端把需要创建的穿越信息通知所述网络地址转换和防火墙;所述网络地址转换和防火墙响应所述通知,根据自身的资源情况判断是否可以打开相应的通道,如果是则根据所述穿越信息创建穿越通道,并向所述穿越客户端返馈创建成功信息,否则向所述穿越客户端反馈创建失败信息;所述穿越客户端收到所述网络地址转换和防火墙反馈的信息后关闭与所述网络地址转换和防火墙的连接。
所述穿越客户端与所述网络地址转换和防火墙建立连接的步骤中还包含身份认证的子步骤。
所述身份认证可以采用密码认证协议或挑战/握手身份验证协议。
所述穿越通道请求中的信息包含源网间互联协议地址、目的网间互联协议地址、源端口、目的端口和协议类型,其中,所述源网间互联协议地址是要进行穿越的所述内网终端的地址。
所述网络地址转换和防火墙进行严格的状态检测或序列号检测。
通过比较可以发现,本发明的技术方案与现有技术的主要区别在于,穿越客户端收到来自穿越服务器的穿越通道请求时,判断NAT/FW是否支持UPnP、MIDCOM等可以通过协商打开通道的协议,如果是则由穿越客户端代替内网终端与NAT/FW交互,打开供内网终端穿越的端口。如果NAT/FW不支持UPnP、MIDCOM等协议,则由穿越客户端通过模拟终端报文的方式进行通道穿越。
这种技术方案上的区别,带来了较为明显的有益效果,即不需要修改终端就可以穿越进行严格状态或序列号检测的NAT/FW设备。
因为是由穿越客户端代替内网终端和NAT/FW交互以打开供穿越的端口,所以和通过终端直接和NAT/FW交互的方式相比,终端本身不需要任何修改,保护了终端所有人原先的投资。
因为穿越客户端是通过UPnP、MIDCOM协议请求NAT/FW打开供内网终端穿越的端口,所以和通过模拟终端报文进行通道穿越的现有技术相比可以穿越进行严格状态或序列号检测的NAT/FW设备。


图1是现有技术中网络地址转换/防火墙在网络中的设置示意图;图2是现有技术中增加了穿越客户端和穿越服务器的网络架构示意图;图3是根据本发明的一个实施例由穿越客户端发起创建穿越通道的网络架构示意图;图4是根据本发明的一个实施例的穿越流程示意图;图5是根据本发明的一个实施例的协商端口具体流程示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
针对现有技术的问题,本发明充分利用了部分FW的一个特性,即在实现状态检测的同时还实现了一些允许交互创建表项的协议,比如通用即插即用协议(Universal Plug and Play,简称“UPnP”)、中间匣(MiddleboxCommunication,简称“MIDCOM”)协议等等。熟悉本领域的技术人员都知道,UPnP协议是1999年10月由英特尔和微软提出的一种基于TCP/IP协议和针对设备彼此间通信的因特网协议,目的是为了希望未来所有联入因特网中的设备能够不受网关阻碍地相互通信。UPnP实际上是扩展了传统单机的设备和计算机系统的概念,在零配置的前提下提供了连网设备之间的发现、接口声明和其他信息的交换等互动操作功能。支持UPnP协议的NAT/FW的主要特性是可以提供NAT的穿越或者处于严格状态检测的FW穿越,这使NAT/FW设备能在需要穿越时自动地打开相关端口。而MIDCOM协议是互联网工程任务组(Internet Engineering Task Force,简称“IETF”)提出的,用来解决一些复杂的应用,比如H.323或者其它应用穿越NAT/FW的问题。MIDCOM协议体系中,NAT或者FW之类的设备称为Middlebox,这些设备完成包过滤之类的功能。MIDCOM协议体系还在网络中增加了代理(Agent),Agent和Middlebox之间使用MIDCOM协议通信,两者之间配合完成NAT或者FW的穿透。
通过这些协议,需要穿越的设备(例如终端10、12)可以请求NAT/FW动态的创建相应的表项,以实现动态的穿越。
本发明的基本原理是由穿越客户端(TC)代替用户终端与支持UPnP/MIDCOM的NAT/FW协商创建实现动态穿越的表项,用所创建的表项实现用户终端的动态穿越。
本发明中的系统架构如图3所示,由代表内部网络用户的终端30、网络地址转换/防火墙31、穿越客户端32、穿越服务器33、代表外部网络访问者的终端34、服务器35和网间互联协议网络36组成。整个架构与现有技术中的基本一致,但是现有技术中其TC发出的模拟报文实际上也对终端20的模拟,从本质上来说还是由终端20与终端24来完成交互创建表项的协商,而本发明则是由穿越客户端32与网络地址转换/防火墙31进行交互,创建的穿越通道,因此可以不用修改现有的不支持UPnP等协议的终端。
下面结合图4和图5,详细描述本发明的具体实施情况。
如图4所示,本发明与现有技术类似,TC和TS在建立穿越通道之前都是一直保持交互状态。在本发明的穿越流程开始时,首先,在步骤410,TC收到TS的穿越NAT/FW的请求。TC从这种请求的报文中,取出相应的需要穿越的信息,包括源/目的IP地址,源/目的端口,协议类型等。此时这里的源地址为内部网络中某个终端的IP地址。
接下来,步骤420,TC取出对应的NAT/FW设备类型,是包过滤、应用代理网关,还是状态检测NAT/FW设备;TC可以通过配置等机制判断出NAT/FW设备的类型。
然后,在步骤430中,TC对获得的NAT/FW设备的类型进行判断,如果NAT/FW虽然设置成严格的状态检测,但又支持动态创建穿越通道的协议,即支持UPnP或者MIDCOM等穿越协议,则转到步骤440;否则转到步骤431。
在步骤431中,由于前面的步骤430判断NAT/FW不支持动态创建穿越通道的类似协议,所以在本步骤中,TC还是通过现有技术中的模拟终端报文的方式进行通道穿越,这就与前面所述的现有技术方案完全一致,但是通过模拟终端发送报文可能会失败。
而当前面的步骤430判断NAT/FW支持动态创建穿越通道的类似协议,则在接下来的步骤440中,TC通过UPnP、MIDCOM等协议与NAT/FW进行协商,取得相应的端口信息,并使NAT/FW打开相应端口。
最后,在步骤450中,TC将取得的端口信息告知TS,穿越通道建立。通道建立后,与TS相联系的外部终端就可以自由地主动访问内部网络中那个终端,实现了对NAT/FW的穿越。
在图4所述流程中,沿着步骤430、步骤440和步骤450的穿越过程,是本发明的创新之处,特别是对上述流程中的步骤440协商端口机制部分需要作进一步的描述。
下面结合图5对这种机制的流程进行详细的描述,但是需要指出的是,这里所描述的机制独立于目前的已有协议,比如UPnP、MIDCOM等,而且是一种新的逻辑上的端口协商机制。
在图5中,首先,步骤510中的TC需要与NAT/FW设备建立一个连接,此连接可以是一个TCP或者用户数据报协议(User Datagram Protocol,简称“UDP”)连接。在连接过程中将涉及TC与NAT/FW之间的身份识别与认证,当然也可能没有身份认证,TC与NAT/FW之间的身份认证可以采用类似点到点协议(POINT TO POINT PROTOCOL,简称“PPP”)的密码身份验证协议(Password Authentication Protocol,简称“PAP”)或挑战/握手身份验证协议(Challenge/Handshake Authentication Protocol,简称“CHAP”)等方式。需要说明的是,PAP和CHAP都是专门用来传送用户登录认证信息的协议,这些信息一般包含用户名和口令等。二者的不同在于PAP提供了一定的安全保障,但用户登录信息在网上无加密传递,易被人窃取。CHAP则把一随机初始值与用户原始登录信息经哈希(Hash)算法翻译后形成新的登录信息,进行加密传递。这里具体的识别与认证的流程不是本发明的重点,这里不做详细描述。
接下来,在步骤520中,TC把需要穿越的信息通过已建立的连接通知NAT/FW设备。包括协议类型、源IP地址/端口、目的IP地址/端口。熟悉本领域的技术人员都知道,以创建一个TCP连接为例,TC需要NAT/FW创建协议为TCP,源地址/端口为192.168.0.22345,目的地址/端口为200.0.0.18567的一个连接表项,这里冒号前面的数字为IP地址,后面部分为端口号。
然后,在步骤530中,NAT/FW设备接收到创建穿越通道的请求信息,此信息中包括协议为TCP,源地址/端口为192.168.0.22345,目的地址/端口为200.0.0.18567,并且此信息是由网络内部的TC发起的,NAT/FW设备不会直接拒绝这样的请求。
紧接着的步骤540,是在NAT/FW设备进行的一个判断,NAT/FW设备根据自己的资源状况判断是否可以进行通道的创建。需要说明的是,网络内部的私有IP地址或者端口数都是一种资源,这里以端口资源情况为例,如果可供映射的端口已经占满,则不能进行通道的创建。本步骤中,如果NAT/FW设备还有空闲的资源可以允许创建新的穿越通道,则进入允许创建穿越通道的步骤550。否则进入步骤541。
在步骤550中,由于在前面的步骤540中已经判断可以创建新的穿越通道,所以NAT/FW设备创建相应的通道信息。仍然以前面创建一个TCP连接为例,NAT/FW设备会根据接收到的请求信息中含有的协议TCP,源地址/端口192.168.0.22345,目的地址/端口200.0.0.18567而创建一个表项,设此表项内容以协议TCP,源192.168.0.22345,NAT后100.1.1.110035,目的200.0.0.18567的形式记录,需要说明的是,表项中的NAT后100.1.1.110035表明内部网络中的192.168.0.2地址所代表的终端用户已经经过了网络地址转换,对外表现为100.1.1.1的地址,同时端口也发生了一些变化,也就是源IP地址/端口为192.168.0.22345对应的NAT后的IP地址/端口为100.1.1.110035。
沿着步骤550这条分支流程继续下去,就是步骤560,NAT/FW将创建成功的穿越通道信息通知TC,此信息就是步骤550中建立的表项协议TCP,源192.168.0.22345,NAT后100.1.1.110035,目的200.0.0.18567。
随后,在步骤570中,TC接收到穿越通道信息协议TCP,源192.168.0.22345,NAT后100.1.1.110035,目的200.0.0.18567。TC得到了相应的映射信息,源IP地址/端口为192.168.0.22345对应的NAT后的IP地址/端口为100.1.1.110035。TC获取此信息后,可以将此信息发送给TS。进入步骤580。
在本流程中,步骤541代表的另外一种情况,由于在前面的步骤540中已经判断不能创建新的穿越通道,所以本步骤中,NAT/FW通知TC创建通道失败。
紧接着,在步骤542中,TC接收到创建穿越通道失败的消息。遇到这种情况,流程最后也将统一进入到步骤580。
最后,在步骤580中,TC与NAT/FW之间的连接关闭。如果穿越通道创建成功,剩下的就是内部网络的终端与外部网络终端正常的交互。
从整个方法的实施例来看,本发明不但可以提供模拟终端报文方式穿越NAT/FW,还可以利用UPnP或者MIDCOM等穿越协议实现动态穿越。而且在与NAT/FW动态交互创建穿越通道的方式支持下,TC可以穿越状态检验严格的NAT/FW设备,扩展了TC的使用范围。同样,终端不需要支持特殊协议,可以有效降低对终端的需求。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
权利要求
1.一种动态打开网络地址转换和防火墙端口的方法,其特征在于,包含以下步骤A穿越客户端收到来自穿越服务器的穿越通道请求时,获取所述网络地址转换和防火墙所支持协议的类型;B所述穿越客户端判断所述网络地址转换和防火墙是否支持通过协商打开通道的协议,如果是则使用该协议根据所述穿越通道请求中的信息与所述网络地址转换和防火墙交互,打开供内网终端穿越的端口;C所述穿越客户端将所打开的端口信息通知所述穿越服务器。
2.根据权利要求1所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述通过协商打开通道的协议包括通用即插即用协议和中间盒通信协议。
3.根据权利要求1或2所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述步骤B还进一步包含以下子步骤当所述穿越客户端判定所述网络地址转换和防火墙不支持通过协商打开通道的协议时,通过模拟内网终端向该网络地址转换和防火墙发送报文的方式打开供该终端穿越的端口。
4.根据权利要求1或2所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述穿越客户端从配置信息中获取所述网络地址转换和防火墙所支持协议的类型。
5.根据权利要求1或2所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述步骤B中,所述穿越客户端和所述网络地址转换和防火墙交互的步骤包含以下子步骤所述穿越客户端与所述网络地址转换和防火墙建立连接;所述穿越客户端把需要创建的穿越信息通知所述网络地址转换和防火墙;所述网络地址转换和防火墙响应所述通知,根据自身的资源情况判断是否可以打开相应的通道,如果是则根据所述穿越信息创建穿越通道,并向所述穿越客户端返馈创建成功信息,否则向所述穿越客户端反馈创建失败信息;所述穿越客户端收到所述网络地址转换和防火墙反馈的信息后关闭与所述网络地址转换和防火墙的连接。
6.根据权利要求5所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述穿越客户端与所述网络地址转换和防火墙建立连接的步骤中还包含身份认证的子步骤。
7.根据权利要求6所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述身份认证可以采用密码认证协议或挑战/握手身份验证协议。
8.根据权利要求1或2所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述穿越通道请求中的信息包含源网间互联协议地址、目的网间互联协议地址、源端口、目的端口和协议类型,其中,所述源网间互联协议地址是要进行穿越的所述内网终端的地址。
9.根据权利要求1或2所述的动态打开网络地址转换和防火墙端口的方法,其特征在于,所述网络地址转换和防火墙进行严格的状态检测或序列号检测。
全文摘要
本发明涉及数据通信技术,公开了一种动态打开网络地址转换和防火墙端口的方法,使得不需要修改终端就可以穿越进行严格状态或序列号检测的NAT/FW设备。本发明中,穿越客户端收到来自穿越服务器的穿越通道请求时,判断NAT/FW是否支持UPnP、MIDCOM等可以通过协商打开通道的协议,如果是则由穿越客户端代替内网终端与NAT/FW交互,打开供内网终端穿越的端口。如果NAT/FW不支持UPnP、MIDCOM等协议,则由穿越客户端通过模拟终端报文的方式进行通道穿越。
文档编号H04L29/06GK1787523SQ20051006539
公开日2006年6月14日 申请日期2005年4月13日 优先权日2004年12月8日
发明者姚鑫 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1