使用即时消息软件的数据检测网络地址转换设备的方法

文档序号:7953073阅读:172来源:国知局
专利名称:使用即时消息软件的数据检测网络地址转换设备的方法
技术领域
使用即时消息软件的数据检测网络地址转换设备的方法属于互联网技术领域,尤其涉及对互联网接入网络的管理技术。
背景技术
网络地址转换设备(以下用NAT表示)是为了解决IPv4地址短缺问题在1994年提出的一种方案。NAT典型的工作场景如图1所示,使用私有地址的子网通过NAT来接入互联网。NAT至少配置了一个全球有效地址G,子网内部的主机使用私有地址。NAT对传入数据报和外发数据报中的IP地址进行转换,用G替换每个外发数据报中的源地址,用正确主机的私有地址替换每个传入数据报的目的地址。从外部来看,NAT类似于一台普通主机,所有数据包来自NAT,所有响应也返回到NAT。从内部来看,NAT是个可达互联网的路由器。通过将IP地址由一个地址域转换到另外一个地址域,NAT为使用私有地址的主机提供到互联网的IP层访问。
NAT可以缓解互联网IP地址短缺的压力,但它也引发很多问题。从网络管理的角度来看,NAT让多台主机同时访问网络,对外却表现为一台主机,管理员无从得知网络的准确使用情况,多个用户公用NAT访问互联网对因特网接入提供商ISP而言意味着潜在用户的流失。从网络安全的角度来看,NAT可能让未授权的主机来访问网络,这种接入方式甚至可能是无线的,这给网络安全造成隐患。因此人们需要掌握网络中NAT的使用情况。
获取网络中设备信息大体可分为主动和被动两种方式。在主动方式中,探测者主动地向探测对象发送数据以获取其响应;在被动方式中,探测者被动地监听探测对象发出的数据包。主动方式可以在网络中任何地方进行探测,但在网络中引入了数据,并且容易干扰探测对象;被动方式不会在网络中引入数据,但需要一个特定的检测点。目前人们一般使用被动方式来检测NAT,这是因为多数NAT一般不接受由NAT外部向内部发起的通讯,不对数据包进行响应,所以主动方式一般很难获取NAT的信息;与之相比,被动方式可以很容易地取得NAT后主机发出的数据包。NAT检测场景如图2所示,检测点设置在网络接口处,通过被动获取并分析网络数据,检测出网络中可能存在的NAT。
目前已存在的NAT检测方式有使用IP首部的报文存活时间(TTL)字段值法、被动操作系统指纹探测法和使用IP首部的ID字段(IPid)构造序列的方法。TTL值法利用操作系统一般使用特定TTL值和NAT一般会在转发数据包时将TTL减1这两个特性,根据数据包到达检测点的TTL值计算数据包经过的跳数,检查其是否小于正常的跳数来判断该数据包是否经过了NAT。被动操作系统指纹探测法利用数据包首部通常会携带能够反应操作系统信息的TCP/IP协议栈实现情况这一特性,通过检查是否能从一个IP地址发出的数据包检查出多种操作系统指纹来判断该IP地址上是否存在NAT。IPid序列法利用主机一般采取依次加1方式来使用IP首部的ID字段的特性,使用检测对象发出的IP数据包构造IPid序列,检查是否能构造出多个序列,以此来判断是否存在NAT。对于网络层数据,一般可以通过修改NAT的实现来逃避检测;对于传输层数据,可以修改主机网络协议栈的方法来逃避检测。
通过以上分析可见,由于NAT的网络行为与普通主机类似,想准确检测NAT是一件比较困难的事情。此外,NAT用户和NAT厂商出于隐私和利益上的考虑,可能会根据NAT检测方法设计出相应的逃避检测方法。目前还不存在一个在所有场景下都保证有效的NAT检测手段,人们往往需要结合多种检测手段来尽可能提高检测的准确性。因此,从新的检测角度发明新的检测方法,以提高NAT检测的准确性和抗逃避能力,是本发明需要解决的问题。

发明内容
本发明的目的在于提供一种新的NAT检测方法,通过被动监听网络中的即时消息软件(以下用IM表示)发出的数据来进行NAT检测。方法的优点在于无法通过修改NAT网关和主机网络协议栈的方法来逃避检测。虽然通过修改应用程序的方法依然可以逃避检测,但是一些广泛使用的应用程序一般不容易获得源码,而应用程序的开发者并没有直接的动力去试图逃避对NAT的检测。与现有的使用网络层和传输层信息的NAT检测方法相比,此方法的优点在于应用层信息不容易被NAT网关所修改,NAT厂商和用户不容易通过修改NAT网关和主机TCP/IP协议栈来逃避检测。
本发明所提供的方法思路在于IM应用是用户相关的,用户在一台主机上一般只会运行一个IM的一个或少数几个例程。在多个用户通过NAT连接网络的情况下,如果他们同时使用某个应用,则在NAT外部可以观察到在一个IP地址上有IM的多个例程在运行。所以我们可以通过获取指定IP地址上同时运行的某种IM的例程数目来推断该IP地址上是否使用了NAT。
IM一般会使用一种在线状态通告的机制,用来向用户提供有关其它IM用户的在线信息。主流的IM一般采用一个稳定的数据通道(比如一个稳定的TCP连接)来提供在线状态通告,IM客户端在运行时会与外界保持一个稳定的数据通道。如果我们能获取这种通道的数据,推断出通道的个数,就得到了IM客户端的例程数目。在每个主机只运行一个IM客户端例程的假设下,如果发现某个IP地址上出现的IM例程数过多,则说明该IP地址上可能存在NAT网关。如图3所示,处于NAT后的主机B和C同时使用某种IM,它们的数据在经过检测点时,检测点发现有两个维持会话状态的数据通道,得知该IP地址上同时运行了两个IM客户端例程,从而推断该IP地址上可能配置了NAT网关。
本发明使用了Google的Google Talk和微软的MSN Messenger这两种IM来进行具体的检测工作。
本发明的特征在于1.如图4所示,该方法依次含有以下步骤步骤1.在网络接口处设立数据包过滤器,被动抓取由内网发往外网的数据,过滤出各种即时消息软件(以下用IM表示)发出的用于维持IM客户会话状态的数据,依次包含以下步骤步骤1.1.得到某种IM的维持会话状态的数据包;步骤1.2.根据数据包的源IP地址和所属的IM类型找到为检测对象设立的IM通道信息列表;步骤1.3.根据数据包的目的IP地址和TCP源端口号,在该检测对象的IM通道信息列表中查找IM通道,即该IM维持会话状态的通道;步骤2.从步骤1得到的IM通道数据中分析得到当前并行的IM通道数目;步骤3.在步骤2中统计得到的并行的通道数目即为当前该IP地址上并发运行的IM例程数目;若所述IM例程数目大于预先设定在检测器中的阀值,则判定该IP地址上运行了网络地址转换设备。
2.所述IM属于Google的Google Talk类型,以Google Talk服务器地址和服务端口号作为判断条件进行过滤3.所述IM属于微软的MSN Messenger类型,根据MSN Messenger的服务端口号和数据包内容进行过滤。
4.所述数据包过滤器需运行在网络接口处的设备上。
本发明所提出的使用IM数据进行NAT检测的方法能够用于一般网络管理范围,尤其在ISP对接入网络的控制方面有很大的意义。此方法与现有的NAT检测方法结合能提高NAT检测的准确性和抗逃避的能力。本发明可以运行在网络接口处的主机上,对于大规模的网络,可以通过配置专门的网络设备来提高处理能力。本方法已通过实验检验。


图1.网络地址转换的示意图;图2.NAT检测场景的示意图;图3.基于IM信息进行NAT检测场景的示意图;图4.基于IM信息进行NAT检测流程的示意图;图5.Google Talk与MSN Messenger维持会话状态数据过滤流程的示意图;图6.IM通道操作及NAT判断流程的示意图。
具体实施例方式
使用IM数据进行NAT检测大体上可分为两步1)从通过检测点的数据过滤出属于IM维持会话状态通道(以下简称IM通道)的数据;2)从IM通道的数据中分析得到当前并行的IM通道数据,即此时检测对象上运行的IM例程数目,然后根据数目大小判断该检测对象是否为NAT。
IM通道数据的过滤由于现有不同IM的工作方式不同,过滤细节也不一样,但大体上可分为两种方式利用IM一般会使用固定地址的服务器和端口号这个特点来过滤;利用某些维持会话状态的数据具有特定数据格式和内容这个特点来过滤。我们选取Google Talk和MSN Messenger这两种典型的IM来做说明,流程图如图5所示。
对于Google Talk,我们以服务器地址和端口作为判断条件来过滤数据。Google Talk采用XMPP协议,Google Talk的客户端与服务器端之间通过一个TCP连接来交换数据,其中包括维持会话状态数据和即时消息。这个TCP连接在客户端登录时建立,一直持续整个会话过程,这样我们只需获取上述TCP的数据即可得到Google Talk的维持会话状态通道的数据。我们通过判断一个数据包的目的是否为域名talk.google.com对应的IP地址、目的端口号是否为5222来判断它是否为上述TCP的数据。
对于MSNMessenger,我们采用了根据端口号和数据包内容来进行过滤的方法。在一个典型的会话过程中,MSN Messenger客户端会与多个服务器交换数据,它们是分配服务器(DS),会话通知服务器(NS)和交换服务器(SS),过程如下1)客户端连接DS,DS给客户端分配一个NS,并通知客户端连接该NS;2)客户端连接NS,这个连接将持续整个会话过程,用于提供会话状态服务;
3)客户端之间需要发送IM消息时,NS会分配一个SS给客户端,客户端与这个SS建立一个TCP连接。
我们需要获取的是客户端连接NS的数据。由于NS的数目很多,达到上百个,我们很难收集到全部的NS地址,过滤时进行过多的地址比较也会影响过滤性能,我们没有使用NS的地址作为过滤条件来进行过滤,而采用了根据端口号和数据包内容来进行过滤。在MSNMessenger客户端与NS服务器的会话通道中,MSN Messenger客户端会不定期的向NS服务器发送PNG命令,这种命令不会出现在与其他服务器的数据交换中。PNG命令格式如下PNG\r\n我们先检查数据包的目的端口号是否为1863,再检查数据包是否包含PNG命令,以此来判断一个数据包是否为MSN Messenger的维持会话状态的数据。
IM通道信息的维护及NAT判断我们对每一个被检测的本地IP地址维护一个维持会话状态的通道列表。如图6所示,在获取到网络内部发往外部的IM维持会话状态的数据时,做如下处理1)根据数据包的<源端口号,目的地址>这个二元组来判断该数据包是否属于某一个已记录的通道。如果属于,则更新该通道的最后更新时间;如果不属于,则新加入一个记录。
2)清除一段时间(用Tmax表示)内没有更新的通道记录。Tmax值的大小与数据包的过滤机制有关。对于我们采用的MSN的过滤方式,由于两个PNG命令间隔时间不会超过50s,因此我们针对MSN把Tmax设置为50s。
3)统计此时并行的通道数目。该数目即为当前该IP地址上并发运行的IM例程数目。
在获取检测对象上某个IM的例程数目后,我们判断这个数值是否大于某个阀值来推断检测对象是否为NAT。
在连接到外部网络的接口处配置使用IM数据的检测程序,在网络中存在NAT且NAT后多个用户同时使用一种IM的情况下,检测程序将检测出某个IP地址上运行了一个IM的多个例程,从而得知该IP地址上可能配置了NAT。本发明使用了现有方法没有使用到的应用层信息,用户和NAT厂商无法通过修改NAT网关和主机网络协议栈的方法来逃避检测,如果与现有方法结合,能够很好的提高检测的准确性和抗逃避能力。由此可见,本发明达到了预期目的。
权利要求
1.使用即时消息软件的数据检测网络地址转换设备的方法其特征在于,该方法依次含有以下步骤步骤1.在网络接口处设立数据包过滤器,被动抓取由内网发往外网的数据,过滤出各种即时消息软件(以下用IM表示)发出的用于维持IM客户会话状态的数据,依次包含以下步骤步骤1.1.得到某种IM的维持会话状态的数据包;步骤1.2.根据数据包的源IP地址和所属的IM类型找到为检测对象设立的IM通道信息列表;步骤1.3.根据数据包的目的IP地址和TCP源端口号,在该检测对象的IM通道信息列表中查找IM通道,即该IM维持会话状态的通道;步骤2.从步骤1得到的IM通道数据中分析得到当前并行的IM通道数目;步骤3.在步骤2中统计得到的并行的通道数目即为当前该IP地址上并发运行的IM例程数目;若所述IM例程数目大于预先设定在检测器中的阀值,则判定该IP地址上运行了网络地址转换设备。
2.使用即时消息软件的数据检测网络地址转换设备的方法其特征在于,所述IM属于Google的Google Talk类型,以Google Talk服务器地址和服务端口号作为判断条件进行过滤。
3.使用即时消息软件的数据检测网络地址转换设备的方法其特征在于,所述IM属于微软的MSN Messenger类型,根据MSN Messenger的服务端口号和数据包内容进行过滤。
4.使用即时消息软件的数据检测网络地址转换设备的方法其特征在于,所述数据包过滤器需运行在网络接口处的设备上。
全文摘要
本发明属于互联网技术领域。其特征在于本发明通过获取网络中即时消息软件的数据,找出监控的IP地址上并发的即时消息软件的例程数目,以此来判断该IP地址上是否运行了网络地址转换设备NAT。方法的优点在于使用了现有检测方法没有使用到的应用层信息,用户和NAT厂商无法通过修改主机网络协议栈和NAT网关的方法来逃避检测。本方法能够与现有检测方式相结合,提高NAT检测的准确性和抗逃避能力。
文档编号H04L12/56GK1812394SQ20061001142
公开日2006年8月2日 申请日期2006年3月3日 优先权日2006年3月3日
发明者毕军, 章淼, 吴建平, 赵雷 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1