一种检测NAT地址池中公网IP可用性的方法及装置与流程

文档序号:13640319阅读:721来源:国知局

本申请涉及计算机网络领域,尤其涉及一种检测nat地址池中公网ip可用性的方法及装置。



背景技术:

近年来,随着internet的不断发展,internet用户不断增加,相应的需要为越来越多的pc进行ip地址分配。但是ipv4地址数量是有限的,为每台pc分配ipv4地址显然是不可行的,而且ipv4地址已经逐渐耗尽。由此而产生了一种nat(networkaddresstranslation,网络地址转换)技术,nat解决了ip地址不足的问题,还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的pc。nat分为基于源ip地址的nat和基于目的ip地址的nat,简称源nat和目的nat。基于源ip地址的nat是指对发起会话连接的ip报文头中的源ip地址进行转换,通过将网络内部的私网地址转换为网络外部的公网地址,来实现网络内部用户访问网络外部的资源。基于目的ip地址的nat是指对发起会话连接的ip报文头中的目的ip地址进行转换。其中基于源ip地址的nat,nat设备在网络传输过程中需要记录每一个进行了源nat的会话连接,并形成源nat表项以供反向报文进行nat还原处理。通常情况下进行源nat处理,选取转换的公网ip地址时,不能确定源nat地址池中哪个公网ip地址是可以实现有效会话连接的,所以这样就会导致源nat会话连接中出现大量无效的会话连接。这样不仅会增加nat表项的查询时间,并且进行nat处理后无法正常进行会话连接,也会影响用户的上网体验。

现有的技术方案是,在进行源nat选取公网ip时,按照源地址哈希在nat地址池范围中选取公网ip,来实现会话连接。

现有的技术方案缺点是,进行源nat处理选取公网ip时,未确定转换为此公网ip后形成的会话连接是否有效,这样有可能导致此次转换形成的会话连接是无效连接,意味着此次源nat中选取的公网ip并不适用于本次会话连接,即此次源nat中选取的公网ip在本次会话连接中为不可用ip,以至于降低了源地址网络地址转换的有效性。



技术实现要素:

有鉴于此,本申请提供一种检测nat地址池中公网ip可用性的方法及装置。

具体地,本申请是通过如下技术方案实现的:

一种检测nat地址池中公网ip可用性的方法,所述方法包括:

在nat设备接收到客户端发送的报文的情况下,在预设nat地址池中查询已有的公网ip;

根据所述查询到的已有的公网ip,对nat设备接收的报文中的源ip地址进行转换;

在转换成功的情况下,记录所述客户端与服务端的nat会话连接并判断nat会话连接是否为无效连接;

在所述nat会话连接是无效连接的情况下,确定本次nat会话连接所用的公网ip不可用;

在所述nat会话连接不是无效连接的情况下,确定本次nat会话连接所用的公网ip可用。

一种检测nat地址池中公网ip可用性的装置,所述装置包括:

公网ip查询单元,用于在nat设备接收到客户端发送的报文的情况下,在预设nat地址池中查询已有的公网ip;

转换单元,用于根据所述查询到的已有的公网ip,对nat设备接收的报文中的源ip地址进行转换;

会话连接记录单元,用于在转换成功的情况下,记录所述客户端与服务端的nat会话连接;

判断单元,用于判断所述nat会话连接是否为无效连接;

不可用公网ip确定单元,用于在所述nat会话连接是无效连接的情况下,确定本次nat会话连接所用的公网ip不可用;

可用公网ip确定单元,用于在所述nat会话连接不是无效连接的情况下,确定本次nat会话连接所用的公网ip可用。

本发明通过判断会话连接是否为无效连接,根据判断结果确定nat地址池中公网ip的可用性,对于在本次会话连接中不可用ip进行标记,对后续报文中的源ip地址进行转换时不再采用已标记过的公网ip,提高了源地址网络地址转换的有效性。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请一示例性实施例示出的一种应用场景图;

图2是本申请一示例性实施例示出的检测nat地址池中公网ip可用性的方法的一种实施流程图;

图3是本申请一示例性实施例示出的源ip地址网络地址转换流程示意图;

图4是本申请一示例性实施例示出的检测nat地址池中公网ip可用性的装置的一种结构示意图;

图5是本申请一示例性实施例示出的检测nat地址池中公网ip可用性的装置的一种优选结构示意图。

具体实施方式

首先对本申请实施例所提供的一种检测nat地址池中公网ip可用性的方法进行说明,该方法可以包括以下步骤:

在nat设备接收到客户端发送的报文的情况下,在预设nat地址池中查询已有的公网ip;

根据所述查询到的已有的公网ip,对nat设备接收的报文中的源ip地址进行转换;

在转换成功的情况下,记录所述客户端与服务端的nat会话连接并判断nat会话连接是否为无效连接;

在所述nat会话连接是无效连接的情况下,确定本次nat会话连接所用的公网ip不可用;

在所述nat会话连接不是无效连接的情况下,确定本次nat会话连接所用的公网ip可用。

前面如背景技术中提到的,基于源ip地址的nat,nat设备在网络传输过程中需要记录每一个进行了源nat的会话连接,并形成源nat表项以供反向报文进行nat还原处理。通常情况下进行源nat处理,选取转换的公网ip地址时,不能确定源nat地址池中哪个公网ip地址是可以实现有效会话连接的,所以这样就会导致源nat会话连接中出现大量无效的会话连接。如图1所示的一种示例性应用场景图,在客户端假设有3台pc,需要访问服务端的资源,客户端发送的ip报文进入nat设备时,需要在nat地址池中查找已有的公网ip,根据查询到的已有的公网ip,对ip报文中的源ip地址进行转换,在转换成功的情况下,ip报文再发送到服务端,此时记录客户端与服务端的会话连接。但是其中有一个问题是,并不确定查询到的已有的公网ip是否可用,即不确定使用查询到的已有的公网ip形成的会话连接是否有效。采用本申请的技术方案,检测nat地址池中公网ip的可用性,在nat设备接收到客户端发送的报文的情况下,在预设nat地址池中查询已有的公网ip;根据所述查询到的已有的公网ip,对nat设备接收的报文中的源ip地址进行转换;在转换成功的情况下,记录所述客户端与服务端的nat会话连接并设置定时器事件,对所述定时器事件设置响应周期,根据设置好的定时器事件响应周期,检查所述nat会话连接是否更新,如果所述nat会话连接更新了,重新设置定时器事件,如果所述nat会话连接未更新,判断nat会话连接是否为无效连接;在所述nat会话连接是无效连接的情况下,确定本次nat会话连接所用的公网ip不可用;在所述nat会话连接不是无效连接的情况下,确定本次nat会话连接所用的公网ip可用,清除定时器事件。在确定本次会话连接所用的公网ip不可用的情况下,对本次会话连接所用的公网ip进行标记,客户端发送的后续报文进入nat设备时,不会再使用已标记过的公网ip对后续报文中的源ip地址进行转换。

为了使本领域技术人员更好的理解本发明中的技术方案,这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。

如图2所示为本申请检测nat地址池中公网ip可用性的方法的一种实施流程图,其具体包括以下步骤:

s101,在nat设备接收到客户端发送的报文的情况下,在预设nat地址池中查询已有的公网ip;

在nat设备接收到客户端发送的报文的情况下,根据报文中携带的五元组信息,在已有的转换表项里进行查找,查找可用的nat资源。这里所说的nat资源包括端口和公网ip。在查找到所述报文中携带的五元组信息对应的转换表项的情况下,在预设nat地址池中查询已有的公网ip。所述转换表项,是在进行第一次会话连接时,若所述报文中携带的五元组信息与预先在nat设备存储的配置策略一致,即源ip、源端口、目的ip、目的端口、通信协议一致,在nat地址池中查询已有的公网ip,根据查询到的已有公网ip,对nat设备接收的报文中的源ip地址进行转换,在转换成功的情况下,将所述会话信息更新到转换表项中。转换表项包含内网ip+端口以及公网ip+端口。在后续会话连接中,由客户端发送的后续报文进入nat设备,根据报文中携带的五元组信息,在所述转换表项中查找,在查找到所述报文携带的五元组信息对应的转换表项的情况下,在预设nat地址池中查询已有的公网ip。

例如参照图1所示,其中pc1发送的ip报文进入nat设备时,其中ip报文携带的五元组信息为192.168.1.110000tcp172.30.0.180,其意义为一个源ip地址为192.168.1.1的pc,利用tcp协议,与目的ip地址为172.30.0.1,端口为80的服务端进行连接。根据所述ip报文携带的五元组信息在转换表项中遍历查找,在查找到所述ip报文携带的五元组信息对应的转换表项的情况下,nat地址池范围为172.30.0.2-172.30.0.2和10.23.0.1-10.23.0.2,在所述nat地址池中查询已有的公网ip。转换表项包含内网ip+端口以及公网ip+端口,在查找到所述ip报文携带的五元组信息对应的转换表项的情况下,预先已经存储了内网ip+端口以及公网ip+端口的转换关系,根据所述转换关系可以确定在nat地址池中查找哪些公网ip。

s102,根据所述查询到的已有的公网ip,对nat设备接收的报文中的源ip地址进行转换;

根据所述查询到的已有的公网ip,例如上述提到的nat地址池范围为172.30.0.2-172.30.0.2和10.23.0.1-10.23.0.2,确定所要使用的公网ip为172.30.0.2或10.23.0.1,根据所确定要使用的公网ip,对nat设备中接收的ip报文中的源ip地址进行转换。参照图3所示,当确定所要使用的公网ip为172.30.0.2时,ip报文头中携带的五元组信息为192.168.1.110000tcp172.30.0.180,这里列举的ip报文头仅仅是示例性的。对ip报文中的源ip地址192.168.1.1进行转换,在转换成功的情况下,ip报文头中携带的五元组信息为172.30.0.210000tcp172.30.0.180,并将此转换关系更新到转换表项中。当确定所要使用的公网为10.23.0.1,按照上述转换方法对ip报文中的源ip地址192.168.1.1进行转换,在转换成功的情况下,ip报文头中携带的五元组信息为10.23.0.110000tcp172.30.0.180。

s103,在转换成功的情况下,记录所述客户端与服务端的nat会话连接并判断nat会话连接是否为无效连接;

如上述所说,在转换成功的情况下,第一条会话连接中ip报文头中携带的五元组信息为172.30.0.210000tcp172.30.0.180。第二条会话连接中ip报文头中携带的五元组信息为10.23.0.110000tcp172.30.0.180。将上述会话信息更新到转换表项中。记录客户端与服务端的nat会话连接,并设置定时器事件,如果遍历所有的nat会话连接去查找会话连接为长时间未改变的会话连接,,这样会很大程度上影响nat设备性能,并且nat设备上nat资源是有限的,一定量级的定时器对nat设备影响较小,因此我们这里采用定时器事件来检查会话连接是否发生了更新。对定时器事件设置好定时器事件的响应周期,根据设置好的定时器事件响应周期检查会话连接是否发生了更新,例如将定时器事件的响应周期设置为6秒,则每过6秒就会检查一次会话连接是否发生了更新。如果nat会话连接发生了更新,重新设置定时器事件;如果nat会话连接未更新,判断当前nat会话连接是否为无效连接。根据上述的两条会话连接,每过6秒就会检查一次上述两条会话连接是否发生了更新,从目的ip地址172.30.0.1可以得知,第一条会话连接会发生更新,第二条会话连接一直未更新,始终保持syn_sent状态,则会判断第二条会话连接是否为无效连接。

s104,在所述nat会话连接是无效连接的情况下,确定本次nat会话连接所用的公网ip不可用;

如上述所说在nat会话连接未更新的情况下,判断当前nat会话连接是否为无效连接,若所述nat会话连接为无效连接,确定本次nat会话连接所用的公网ip不可用。基于上述提到的第二条会话连接,其会话连接一直未更新,始终保持syn_sent状态,则会判断第二条会话连接是否为无效连接,若所述第二条会话连接为无效连接,确定本次nat会话连接所用的公网ip10.23.0.1不可用。在确定了本次nat会话连接所用的公网ip10.23.0.1不可用的情况下,释放nat资源,对本次nat会话连接所用的公网ip10.23.0.1进行标记,具体可以根据nat设备接收的ip报文中的源ip地址192.168.1.1对本次nat会话连接所用的公网ip10.23.0.1进行标记,例如可以在转换表项中对192.168.1.110000tcp172.30.0.180转换为10.23.0.110000tcp172.30.0.180进行标记,在该转换表项中加入填充值“不可用”,如下表格1所示,这里列举的表格仅仅是示例性的。相应的我们也可以删除此转换表项,只留下利用可用公网ip生成的转换表项,方便后续报文进入nat设备时,根据报文的五元组信息在转换表项中查找。

表1

在确定了本次nat会话连接所用的公网ip10.23.0.1不可用的情况下,并对本次nat会话连接所用的公网ip10.23.0.1进行标记,在nat设备接收到由客户端发送的后续报文的情况下,不会使用已进行标记过的公网ip对所述后续报文中的源ip地址进行转换,即nat设备收到后续客户端发送的后续报文时,也就是源ip地址为192.168.1.1的客户端发送的后续报文进入到nat设备时,不会再使用公网ip10.23.0.1对后续报文中的源ip地址192.168.1.1进行转换,可以选择公网ip172.30.0.2对后续报文中的源ip地址192.168.1.1进行转换。

s105,在所述nat会话连接不是无效连接的情况下,确定本次nat会话连接所用的公网ip可用。

如上述所说在nat会话连接未更新的情况下,判断当前nat会话连接是否为无效连接,若所述nat会话连接不是无效连接,确定本次nat会话连接所用的公网ip可用。基于上述提到的第一条会话连接,其会话连接未更新,判断第一条会话连接是否为无效连接,若第一条会话连接不是无效连接,确定本次nat会话连接所用的公网ip172.30.0.2可用,并清除定时器事件。在确定了本次nat会话连接所用的公网ip172.30.0.2可用的情况下,根据当前会话连接进行相应操作,并对本次会话连接中所用的公网ip172.30.0.2进行标记,参照表1所示,在转换表项中加入填充值“可用”。在nat设备接收到由客户端发送的后续报文的情况下,可以选择公网ip172.30.0.2对后续报文中的源ip地址192.168.1.1进行转换。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

与前述检测nat地址池中公网ip可用性的方法的实施例相对应,本申请还提供了检测nat地址池中公网ip可用性的装置的实施例,如图4所示,包括公网ip查询单元210、转换单元220、会话连接记录单元230、判断单元240、不可用公网ip确定单元250、可用公网ip确定单元260。

所述公网ip查询单元210,用于在nat设备接收到客户端发送的报文的情况下,在预设nat地址池中查询已有的公网ip,并将查询到的已有公网ip发送给转换单元220;

所述转换单元220,用于根据所述查询到的已有的公网ip,对nat设备接收的报文中的源ip地址进行转换,并将转换结果发送给会话连接记录单元230;

所述会话连接记录单元230,用于在转换成功的情况下,记录所述客户端与服务端的nat会话连接,并将所记录的nat会话连接发送给判断单元240;

所述判断单元240,用于判断所述nat会话连接是否为无效连接,判断所述nat会话连接是无效连接,将该判断结果发送给不可用公网ip确定单元250,判断所述nat会话连接不是无效连接,将该判断结果发送给可用公网ip确定单元260;

所述不可用公网ip确定单元250,用于在所述nat会话连接是无效连接的情况下,确定本次nat会话连接所用的公网ip不可用;

所述可用公网ip确定单元260,用于在所述nat会话连接不是无效连接的情况下,确定本次nat会话连接所用的公网ip可用。

在本申请的一种具体实施方式中,所述判断单元240包括:会话连接检查子单元241,判断子单元242;

所述会话连接检查子单元241,用于根据预设条件检查所述nat会话连接是否更新;

所述判断子单元242,用于在所述nat会话连接未更新的情况下,判断nat会话连接是否为无效连接。

在本申请的一种具体实施方式中,所述会话连接检查子单元241具体用于:

根据预先设置的定时器事件的响应周期检查所述nat会话连接是否更新。

参照图5所示,本申请提供的检测nat地址池中公网ip可用性的装置的实施例,还可以包括:

定时器清除单元270,用于在所述nat会话连接不是无效连接的情况下,清除所述预先设置的定时器事件。

不可用公网ip标记单元280,用于在确定本次nat会话连接所用的公网ip不可用的情况下,根据nat设备接收的报文中的源ip地址对所述不可用的公网ip进行标记,所述标记用于在nat设备接收到客户端发送的后续报文的情况下,不会再使用已标记过的公网ip对后续报文中的源ip地址进行转换。

上述系统中各个单元的作用实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本发明可以在由计算机执行的计算值可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1