一种实现NAT的方法和装置与流程

文档序号:12625830阅读:435来源:国知局
一种实现NAT的方法和装置与流程

本发明涉及网络通信领域,尤其涉及实现NAT(Network Address Translation,网络地址转换)的技术。



背景技术:

NAT是1994年提出的,用以解决ipv4地址资源枯竭的问题。NAT的基本原理是在私网主机需要访问公网时才会分配到合法的公网地址,而内部互联时则使用私网地址。

私网IP地址是指内部网络或主机的IP地址,公网IP地址是指在因特网上全球唯一的IP地址。NAT是将IP数据报文头中的IP地址转换为另一个IP地址的过程。

NAT典型的应用场景为一对多NAT或者多对多NAT。在这种应用场景中,内部网络的多个主机端口对(Pri_ip:port)同时访问公网,NAT网关使用一个或者多个(地址池)公网地址端口对(Pub_ip:port)对其进行地址转换,并记录这种映射关系。之后,当报文从公网发往私网时,NAT网关查找地址转换记录,将报文的目的地址再替换回原来的私网地址,并送回发出请求的主机。

为了尽可能有效利用公网ip资源,保证网络的互通性,RFC5128提出三种地址映射及过滤模式,分别为:外部地址无关模式(Endpoint-Independent)、外部地址相关模式(Address-Dependent)、外部地 址和端口相关模式(Address and Port-Dependent)。

传统的方法是使用NAT日志或者地址转换表间接实现映射过滤模式,但两者均存在缺点。NAT日志的方法存在随着NAT日志记录增加,系统开销越来越大的缺点。而地址转换表则无法灵活配置,不能同时支持多种映射过滤模式,无法满足用户的多样化需求。



技术实现要素:

本发明提供一种实现NAT的方法和装置,解决了私网和公网间的地址转换映射以及访问控制的技术问题。

为解决上述技术问题,本发明提供了一种实现NAT的方法,包括以下处理过程:

创建映射表和过滤表,并根据地址映射过滤模式设置用于查询映射表的第一键值,以及设置用于查询过滤表的第二键值;所述映射表用于记录报文从私网到公网的地址转换关系,所述过滤表用于记录从公网到私网的地址回溯信息;

当报文从私网向公网发送时,从报文中提取第一键值,通过所述第一键值获取公网地址,更新所述映射表中的对应映射表项,并将地址回溯信息更新到所述过滤表中的对应过滤表项;利用获取的所述公网地址进行地址NAT转换后发送到公网;

当报文从公网向私网发送时,从报文中提取第二键值,通过所述第二键值查询所述过滤表;如果查询到对应的过滤表项,则利用过滤表项中的地址回溯信息进行地址NAT转换后发送到私网;否则,根据ACL规则组进行报 文的转发处理。

优选的,所述通过所述第一键值获取公网地址,更新所述映射表中的对应映射表项,具体包括:通过所述第一键值查询所述映射表;如果查询到对应的映射表项,读取该映射表项中的从私网地址到公网地址的转换信息,并将该映射表项的计数值加一;否则,从公网地址池中提取公网地址,并创建对应的映射表项,将从私网地址到公网地址的转换信息写入该映射表项,将该映射表项的计数值加一,并创建过滤表项,将该报文的地址回溯信息写入该过滤表项。

进一步的,还包括:创建会话表,所述会话表用于记录报文在私网和公网之间的地址NAT转换信息;在所述利用获取的所述公网地址进行NAT转换后以及利用过滤表项中的地址回溯信息进行地址NAT转换后,还包括:将地址NAT转换信息作为会话表项写入所述会话表。

进一步的,所述创建会话表后还包括:会话表的老化处理,并根据需要老化的会话表项中的地址NAT转换信息分别触发所述映射表和过滤表的老化处理。

优选的,所述根据需要老化的会话表项中的地址NAT转换信息分别触发所述映射表和过滤表的老化处理具体包括以下处理过程:根据需要老化的会话表项中的地址NAT转换信息以及配置的映射过滤模式,查询所述映射表,若找到对应的映射表项,则将该映射表项中的计数减一;当计数减至零时,删除该映射表项,并删除该映射表项关联的过滤表项,回收NAT地址资源。

优选的,所述根据地址映射过滤模式设置用于查询映射表的第一键值,以及设置用于查询过滤表的第二键值具体为:

当地址映射过滤模式为地址无关模式时,所述第一键值为:报文源ip和源port,所述第二键值为:地址NAT转换后的ip和port;

当地址映射过滤模式为地址相关模式时,所述第一键值为:报文源ip、源port和目的ip,所述第二键值为:地址NAT转换后的ip、地址NAT转换后的port和目的ip;

当地址映射过滤模式为地址端口相关模式时,所述第一键值为:报文源ip、源port、目的ip和目的port,所述第二键值为:地址NAT转换后的ip、地址NAT转换后的port、目的ip和目的port。

本发明还提供了一种实现NAT的装置,包括:

第一配置单元,用于创建映射表和过滤表,并根据地址映射过滤模式设置用于查询映射表的第一键值,以及设置用于查询过滤表的第二键值;所述映射表用于记录报文从私网到公网的地址转换关系,所述过滤表用于记录从公网到私网的地址回溯信息;

第一报文发送处理单元,用于当报文从私网向公网发送时,从报文中提取第一键值,通过所述第一键值获取公网地址,更新所述映射表中的对应映射表项,并将地址回溯信息更新到所述过滤表中的对应过滤表项;利用获取的所述公网地址进行地址NAT转换后发送到公网;

第二报文发送处理单元,用于当报文从公网向私网发送时,从报文中提取第二键值,通过所述第二键值查询所述过滤表;如果查询到对应的过滤表项,则利用过滤表项中的地址回溯信息进行地址NAT转换后发送到私网;否则,根据ACL规则组进行报文的转发处理。

优选的,所述第一报文发送处理单元包括映射表查询处理模块,用于通 过所述第一键值查询所述映射表;如果查询到对应的映射表项,读取该映射表项中的从私网地址到公网地址的转换信息,并将该映射表项的计数值加一;否则,从公网地址池中提取公网地址,并创建对应的映射表项,将从私网地址到公网地址的转换信息写入该映射表项,将该映射表项的计数值加一,并创建过滤表项,将该报文的地址回溯信息写入该过滤表项。

进一步的,还包括:第二配置单元和会话写处理单元;

所述第二配置单元,用于创建会话表,所述会话表用于记录报文在私网和公网之间的地址NAT转换信息;

所述会话表写处理单元,用于在所述利用获取的所述公网地址进行NAT转换后以及利用过滤表项中的地址回溯信息进行地址NAT转换后,将地址NAT转换信息作为会话表项写入所述会话表。

进一步的,还包括会话表老化处理模块,用于会话表的老化处理,并根据需要老化的会话表项中的地址NAT转换信息分别触发所述映射表和过滤表的老化处理。

优选的,所述会话表老化处理模块包括关联老化处理子模块,用于根据需要老化的会话表项中的地址NAT转换信息以及配置的映射过滤模式,查询所述映射表,若找到对应的映射表项,则将该映射表项中的计数减一;当计数减至零时,删除该映射表项,并删除该映射表项关联的过滤表项,回收NAT地址资源。

优选的,所述第一配置单元包括键值设置模块,用于当地址映射过滤模式为地址无关模式时,所述第一键值为:报文源ip和源port,所述第二键值为:地址NAT转换后的ip和port;

当地址映射过滤模式为地址相关模式时,所述第一键值为:报文源ip、 源port和目的ip,所述第二键值为:地址NAT转换后的ip、地址NAT转换后的port和目的ip;

当地址映射过滤模式为地址端口相关模式时,所述第一键值为:报文源ip、源port、目的ip和目的port,所述第二键值为:地址NAT转换后的ip、地址NAT转换后的port、目的ip和目的port。

本发明的有益效果:

本发明中,由于可以灵活配置地址映射过滤模式,报文NAT过程中动态生成映射表项及过滤表项,满足了用户的多样化需要。且映射表、过滤表结构简单,占用内存空间小,使用hash方法索引,查询效率高。

本发明中使用映射表记录地址映射关系,除了可以提高公网ip资源利用率,还可以大大的减少报文NAT过程中访问地址池的次数,提高了NAT效率。

本发明中,过滤表优先级高于ACL规则,查询到过滤表项的报文直接根据过滤表项转发。过滤表不仅记录了NAT地址回溯关系,还起到对私网的访问控制及保障p2p网络互通性的作用。

本发明中,映射表、过滤表随着会话表进行老化。映射表的及时老化保证了会话结束时NAT资源的立即回收,可进一步提高地址池利用率。并且,过滤表的及时老化关闭了公网对发起该条会话的私网主机的访问权限,充分保障了私网主机的安全。

附图说明

图1为现有技术中外部地址无关映射过滤模式原理示意图;

图2为现有技术中外部地址相关映射过滤模式原理示意图;

图3为现有技术中外部地址和端口相关映射过滤模式原理示意图;

图4为本发明映射表数据结构及检索过程示意图;

图5为本发明映射表检索流程图;

图6为本发明实现NAT的方法流程图;

图7为本发明报文由私网发往外网处理流程图;

图8为本发明报文由外网发往私网处理流程图;

图9为本发明映射表、过滤表老化处理流程图。

具体实施方式

以下结合实施例详细先介绍本发明中的几个关键技术点:映射过滤模式、映射表、过滤表和会话表。

一、映射及过滤模式

本发明中,映射过滤模式是绑定在一起的,即,若配置映射过滤模式为地址无关模式,则代表映射模式为地址无关模式,过滤模式也为地址无关模式,两者保持一致。

本发明支持RFC5128提出现有三种过滤模式,除此之外,本发明还支持用户自定义映射过滤模式或者将来新标准提出的过滤模式,可充分满则用户多样化需求。

图1-3分别为RFC5128提出的三种地址映射过滤模式:外部地址无关模式、外部地址相关模式、外部地址和端口相关模式的原理图。

二、映射表

映射表即Ref表。本发明映射表记录了NAT过程中的地址转换关系,即报文从私网到公网的地址转换关系。映射表可为但不限于以下形式:

映射表={src_ip,src_port,dip,dport,translate_ip,translate_port,next_ref_index,ref_cn,other}

其中src_ip、src_port、dip、dport分别标识报文源ip、源port、目的ip、目的port;translate_ip、translate_port分别标识报文NAT后的ip及port;next_ref_index,代表下一条映射表索引。ref_cn代表映射表计数,表示有多少会话表中的NAT信息引用于本映射表,当建立映射表时将ref_cn置1,其他会话每引用一次本映射表的公网地址,ref_cn都增加1;other代表其他需要存储的附加信息,可以根据需求进行自定义。

地址无关模式时,映射表创建及查询键值设置为{src_ip,src_port}。

地址相关模式时,映射表创建及查询键值设置为{src_ip,src_port,dip}。

地址端口相关模式时,映射表创建及查询键值设置为{src_ip,src_port,dip,dport}。

以地址相关模式为例,发送依次发送表1中的报文,则可得到映射表项:

映射表项Ref_A={src_ip=192.168.1.6,src_port=16,dip=128.0.0.5,dport=0,translate_ip=129.0.0.6,translate_port=50,ref_cn=3}

由于是地址相关模式,则创建、查询映射表项Ref_A的键值应为{src_ip=192.168.1.6,src_port=16,dip=128.0.0.5}。

发送报文1时,为报文1分配公网地址后,创建映射表项Ref_A,此时ref_cn=1。

发送报文2、3时,由于用户配置了端点无关模式,查询映射表时将会命中映射表项A,此时取映射表项A中的地址翻译信息替换报文2、3的源 ip地址及端口,完成nat转换,此时ref_cn=3。

后续报文无法命中Ref_A,将重新进入地址池选取可用的公网地址,并建立新的映射表。

表1

如图4所示的映射表数据结构及检索过程示意图,以及图5所示的映射表检索流程。

映射表可采用HASH+CAM的二级检索结构,以提高查找效率。其中,HASH表可以保存CHS=2N_REF条表项,每条HASH表项即一个CAM表,每个CAM表保存1条表项,每条CAM表项对应一个映射表链。

CAM表项中存储的值从预先设定好的栈ref_stack里获得,每次从栈顶获得一个元素,用来索引映射表。设映射表最大条数为CREF,则该栈大小为CREF,栈中元素={0,1,2,3,4……CREF-1}。

当映射表项的创建过程发生hash冲突时,映射表中元素next_ref_index也需从栈中获得,用以索引下一条映射表项。

三、过滤表

过滤表即Fil表。本发明过滤表记录了从公网到私网的地址回溯信息及私网主机的可访问性,过滤表可为但不限于以下形式:

过滤表={translate_ip,translate_port,dip,dport,src_ip,src_port,next_ref_index,other}

其中translate_ip、translate_port分别标识报文NAT后的ip及port。src_ip、src_port、dip、dport分别标识报文源ip、源port、目的ip、目的port。next_ref_index,代表下一条过滤表项索引。other代表其他需要存储的附加信息,可以根据需求进行自定义。

地址无关模式时,过滤表创建及查询键值设置为{translate_ip,translate_port}。

地址相关模式时,过滤表创建及查询键值设置为{translate_ip,translate_port,dip}。

地址端口相关模式时,过滤表创建及查询键值设置为{translate_ip,translate_port,dip,dport}。

如表2所示,过滤表采用与映射表完全相同的结构组织与检索方法,唯一不同的是,进行hash检索时关键字选取不同。

假设映射过滤模式为地址相关模式,有如下映射表项及报文:

映射表Ref_A={src_ip=192.168.1.6,src_port=16,dip=128.0.0.5,dport=0,translate_ip=129.0.0.6,translate_port=50,ref_cn=3}

表2

则对应有如下过滤表项Fil_A:

过滤表Fil_A=={translate_ip=129.0.0.6,translate_port=50,dip=128.0.0.5,dport=0,src_ip=192.168.1.6,src_port=16,next_ref_index,other}

地址相关模式时,过滤表创建及查询键值设置为{translate_ip,translate_port,dip},对应于过滤表Fil_A,键值应为{translate_ip=129.0.0.6,translate_port=50,dip=128.0.0.5}。

由于是地址相关模式,公网主机128.0.0.5任意端口发送到(129.0.0.6:50)的报文将命中Fil_A,此时提取过滤表中src_ip=192.168.1.6,src_port=16进行NAT转换,完成地址回溯。

其他公网主机发送的报文无法命中Fil_A,将根据ACL规则组进行转发处理,这样既完成了地址转换,也保护了私网主机的安全。

假设映射过滤模式为地址无关模式(令上述过滤表中dip=0,dport=0),则公网任意主机发送到(129.0.0.6:50)的报文均可通过过滤表项Fil_A转发至私网,这样就保证了p2p网络的互通性。

四、会话表

会话表,即FT表,是由报文五元组唯一确定一张会话表。

会话表={src_ip,src_port,dip,dport,protocol,nat_flag,translate_ip,translate_port,other}

src_ip、src_port、dip,dport分别标识报文源ip、源port、目的ip、目的port,nat_flag为NAT标识,可以记录NAT模式,标识源或者目的地址翻译。translate_ip、translate_port分别表示报文目的或者源地址应该翻译为何种ip和port,other代表其他需要存储的附加信息,可能包括会话的状态信息、老化信息、安全策略信息、统计信息、路由信息等,可以根据需求进行自定义。

当一条报文需要做NAT时,一个连接则对应两张FT表,这主要是因为做了NAT地址转换,两个方向的报文五元组发生了变化,比如(Aip:Aport)向(Cip:Cport)发送报文,且协议类型为PRO_a,经过NAT后,(Aip:Aport)翻译为(Bip:Bport),则去方向的报文的五元组为{Aip,Aport,Cip,Cport,PRO_a},回来的报文的五元组变为{Cip,Cport,Bip,Bport,PRO_a},正反向报文五元组发生变化,在这里属于一个连接,但对应两张FT表。

当收到会话的第一个报文后,无论何种映射过滤模式,均会在NAT后自动生成正、反向会话表项,并将该会话的NAT信息保存在会话表项中,之后再收到该会话的后续报文时,直接读取会话表项的NAT信息即可。这样,可以大大提高会话后续报文的处理效率。

下面再结合附图,并通过具体实施例详细说明本发明的实现方式。

本发明的实现过程中,可以由用户配置映射过滤模式,也可以直接默认为一种映射过滤模式。映射过滤模式包括但不限于以下模式:外部地址无关模式、外部地址相关模式、外部地址和端口相关模式。上述三种模式为RFC5128提出的过滤模式,还可以为将来新的标准提出的过滤模式,或者用 户自定义的映射过滤模式。

如图6所示本发明实现NAT的方法流程,首先需要创建映射表和过滤表,其中映射表用于记录报文从私网到公网的地址转换关系,过滤表用于记录从公网到私网的地址回溯信息。

然后根据地址映射过滤模式设置用于查询映射表的第一键值,以及设置用于查询过滤表的第二键值。

本发明报文的处理包括两个方向:从私网发往公网和从公网发往私网。发送报文前根据方向分别进行地址NAT转换。

最后将经过NAT转换后的报文进行转发。

如图7所示,报文由私网发往公网时,根据配置的映射过滤模式设置不同的第一键值并查询映射表,若未查询到对应的映射表项,则进入地址池获取一个公网地址,并动态创建映射表项,将获取的公网地址及报文源、目的地址等信息写入映射表项,并将映射表项计数置1,然后根据映射过滤模式,设置相应的第二键值创建过滤表项,将地址回溯信息写入过滤表项;若查询到对应的映射表项,则直接读取映射表项中的地址翻译信息,并将映射表项计数加1。最后使用获得的公网地址替换报文的私网地址完成NAT转换,并将地址转换信息写入相应的会话表。

如图8所示,报文由公网发往私网时,根据配置的映射过滤模式设置不同的第二键值查询过滤表,若查询到对应的过滤表项,则读取过滤表项中的NAT地址回溯信息将目的地址替换回私网地址,并跳过ACL规则组查找,直接转发报文并将地址转换信息写入会话表;若未查找到过滤表项,则根据ACL规则组的查询结果处理报文。

如图9所示,在一种实施方式中,映射表、过滤表老化由会话表的老化 触发。具体的实现过程可以为:当会话表老化时,根据需要老化的会话表项中的地址NAT转换信息以及配置的映射过滤模式,查询所述映射表,若找到对应的映射表项,则将该映射表项中的计数减1;当计数减至0时,删除该映射表项,并删除该映射表项关联的过滤表项,回收NAT地址资源。

综上,本发明提供了一种NAT映射和过滤模式的实现方法和装置,提高了NAT处理效率,满足了用户多样化的配置需求。同时通过过滤表实现了地址回溯及对私网主机的访问限制,并保证了NAT条件下网络的互通性。

以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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