法律状态公告日
法律状态信息
法律状态
2016-03-16
未缴年费专利权终止 IPC(主分类):H04L12/28 授权公告日:20061227 终止日期:20150117 申请日:20040117
专利权的终止
2012-04-04
专利权的转移 IPC(主分类):H04L12/28 变更前: 变更后: 登记生效日:20120222 申请日:20040117
专利申请权、专利权的转移
2006-12-27
授权
授权
2005-03-02
实质审查的生效
实质审查的生效
2004-12-29
公开
公开
技术领域:
本发明涉及一种对NAT虚地址的ARP请求响应的方法。
背景技术:
NAT(Network Address Translator,网络地址转换)用于允许专用网络上的多台PC机(使用专用地址范围,例如10.0.x.x、192.168.x.x、172.x.x.x)共享单个、可全局路由的IPv4(地址转换协议的第4版本)地址,即NAT可以在多重的internet子网中使用相同的IPv4地址,保证了数量有限的IPv4地址被尽可能多的用户使用,同时NAT也支持外部源地址的转换,其接受到外部回来的数据包,再根据NAT表把地址翻译成内部的局部IP,并将数据包转发过去;NAT也支持内部服务器的负载均衡等其他的相关应用。
如图1为使用NAT访问外部公有网的情况,其中eth0/0为NAT的内网接口,eth0/1为外网接口,内网网段为10.5.5.0/24,外网网段为20.1.1.0/24。配置NAT的地址转换规则为:
ip nat inside source static 10.5.5.2 20.1.1.1
这条规则的含义是把内网PC1的源地址10.5.5.2转换成外部公网地址,此处使用的是与外网相连的接口eth0/1的IP地址20.1.1.1。
在这样的配置下,NAT可以进行正常的地址转换,内网主机PC1发出的报文经过NAT后源地址由10.5.5.2转换成地址20.1.1.1,并可与外网主机例如IP地址为20.1.1.10的Server进行正常的通讯。
但如果在做地址转换时,把内网地址10.5.5.2转换成外部地址20.1.1.2,而这个地址不是与外网相连的接口地址20.1.1.1,也不是外网中任何一台网络设备的IP地址,并与外网接口地址在同一网段。如图1的组网情况,若配置如下NAT地址转换规则;
ip nat inside source static 10.5.5.2 20.1.1.2
在这种配置下,内网主机PC1的报文发出后,经过NAT路由器进行源地址的转换工作,将源地址10.5.5.2转换成20.1.1.2后发送给外网主机(例如Server,IP地址为20.1.1.10)。由于收到报文的源地址是20.1.1.2,所以Server在应答时回应报文的目的地址为20.1.1.2,而地址20.1.1.2不是路由器某个接口地址,也不是该网络中某个主机地址,我们称之为NAT虚地址。在发送报文时,由于虚地址20.1.1.2与NAT的外网同属一个网段,即20.1.1.0/24网段,因此不用去查路由表,而直接进行二层转发。在转发前,需要知道对方的MAC地址,也即虚地址20.1.1.2所对应的MAC地址。由于不知道20.1.1.2所对应的MAC地址,发送报文的网络设备(图1中的Server)会在20.1.1.0/24网段上发送ARP请求,请求IP地址为20.1.1.2的设备所对应的MAC地址。
由于20.1.1.2是NAT使用的虚地址,NAT路由器上接口eth0/1不会响应对IP地址20.1.1.2的ARP请求。对于外网主机Server来说,ARP请求没有响应,得不到IP地址20.1.1.2所对应的MAC地址,应答报文就无法发送出去,从而导致通过NAT进行地址转换和数据转发的失败。
在使用NAT进行地址转换时,如果用户配置的转换后的IP地址与路由器的接口地址同属一个网段,应答报文会因ARP请求的失败而找不到目的IP地址所对应的MAC地址,从而NAT路由器收不到应答报文,地址转换失败。
发明内容:
针对NAT对NAT虚地址发送报文时所存在的问题和不足,本发明的目的是提供一种对NAT虚地址的ARP请求响应的方法。
本发明是这样实现的:一种对NAT虚地址的ARP请求响应的方法,包括以下步骤:
检查NAT转换后的地址是否与路由器中某接口IP地址在同一网段,如果是,则查找该虚地址是否在链接表中注册,若已注册,则新链接建立后,对该虚地址进行链接计数;若未注册,则把虚地址注册到该同一网段的接口上,链接建立后,将该虚地址的链接计数初始化为1。
进一步地,该方法还包括:链接终止,检查链接表中有没有注册虚地址,若有,则将该虚地址的链接计数减1;若链接计数为0,取消注册该虚地址的链接。
进一步地,所述含有虚地址的链表中的每个节点记录的内容包括有:
虚地址,需对ARP请求进行回应的IP地址,该地址为NAT转换后的IP地址,并与某接口地址同属一个网段;
接口索引,接口的IP地址和上述需回应的IP地址同属一个网段的接口,收到对上述虚IP地址的ARP请求时,该接口把自己的MAC地址回应给请求方;
链接计数,虚地址链接建立后,增加该虚地址的链接的计数,该计数表示目前有几个链接在使用这个虚地址。
本发明在配置NAT地址转换规则时,就可以配置与接口地址同属一个网段的IP地址,取消了在应用NAT时的一大限制。而且,本发明尽可能地节省了系统资源,具体体现在以下几个方面:
1、配置用户的源地址转换到与接口同属一网段的地址时,接口会响应对该地址的ARP请求,这样发向该地址的报文就可以以接口的MAC为目的MAC地址发出,从而接口0/1会顺利地收到回应方向的报文,经过地址转换后的通讯可以正常进行;
2、本发明只有在真正地使用该虚地址转换规则建立通讯链接时,NAT才会去注册对这个虚地址ARP请求的响应。并且,当使用某虚地址的最后一条通讯链接关闭时,该虚地址的注册信息中的通讯链接计数会为零,表示当前已经没有链接使用这个地址进行通讯,NAT会删除对虚地址ARP请求响应的注册。通过采用这样的方法,尽可能地减少了虚地址的生效时间,从而把注册虚地址对接口模块的影响降低到最小程度,同时节省了系统资源;
3、当接口的地址改变时,同一IP地址注册的对应接口会随着新链接的生成而自动更新。例如,用户配置了到地址30.1.1.2的转换,而此时没有任何一个接口的IP地址属30.1.1.0/24网段,因此也不会有链接注册IP地址30.1.1.2的ARP请求接口。但当系统运行过程中,假如用户把某个接口地址变成了30.1.1.0/24网段的一个地址,此后在建立新的通讯链接时,NAT会检查到这个接口需要注册对IP地址30.1.1.2的ARP请求,并且会在这个接口上进行注册。这样可以保持注册信息与接口地址的一致性。
总之,本发明可以有效地解决对NAT使用的虚地址ARP请求的响应问题,拓宽了NAT使用的网络环境,增加了NAT对各种配置条件的兼容性。本发明仅在必要的时候使用有限的系统资源。本发明即能保证对NAT配置的虚地址的ARP请求进行正确响应,又能保证地址转换工作的效率。
附图说明:
下面结合附图,对本发明作出详细描述。
图1为现有的NAT转发方法示意图;
图2为本发明建立链接的流程图;
图3为本发明关闭链接的流程图。
具体实施方式:
本发明在NAT进行地址转换并建立一条新的通讯链接时,检查当前转换后的IP地址是否与NAT路由器出接口的IP地址在同一网段,如果与出接口在同一网段,在该接口上注册对该虚IP地址ARP请求的响应,注册后该接口会把自己的MAC地址回应给该IP地址ARP请求。当在这条通讯链接关闭时,取消注册该地址在这个接口上的ARP请求响应。具体为:检查NAT转换后的地址是否与路由器中某接口IP地址在同一网段,如果是,则查找该虚地址是否在链接表中注册,若已注册,则新链接建立后,对该虚地址进行链接计数;若未注册,则把虚地址注册到该同一网段的接口上,链接建立后,将该虚地址的链接计数初始化为1。链接终止时,检查链接表中有没有注册虚地址,若有,则将该虚地址的链接计数减1;若链接计数为0,取消注册该虚地址的链接。这里,链表中的每个节点记录的内容包括有:虚地址,需对ARP请求进行回应的IP地址,该地址为NAT转换后的IP地址,并与某接口地址同属一个网段;接口索引,接口的IP地址和上述需回应的IP地址同属一个网段的接口,收到对上述虚IP地址的ARP请求时,该接口把自己的MAC地址回应给请求方;链接计数,虚地址链接建立后,增加该虚地址的链接的计数,该计数表示目前有几个链接在使用这个虚地址。
如图2所示,当建立一个新的通讯链接时,检查NAT转换后的地址是否与路由器某接口IP地址在同一网段,如果是,则把这个虚地址注册到该接口上,使该接口能对这个虚地址的ARP请求进行正确响应。如果不是,则进行常规处理。
将一个虚地址注册到某接口上后,要将这条注册信息保存下来,建立一个链表来记录所有已经注册的NAT虚IP地址及其所对应的接口等信息。链表的每个结点所记录的内容主要有以下几个要素:虚IP地址,接口索引、通讯链接计数,其中,虚IP地址,需要对ARP请求进行回应的IP地址,该地址为NAT转换后的IP地址,并且与某接口地址同属一个网段,需要该接口对这个地址的ARP请求进行响应;接口索引,接口IP地址和虚IP地址同属一个网段的接口,当收到对虚IP地址的ARP请求时,该接口要把自己的MAC地址回应给请求方;链接计数,对于一个已经注册ARP请求响应的NAT虚地址,可能有多条通讯链接同时使用这个地址进行NAT转换。如果有多条链接共同使用一个虚IP地址,只在第一条链接时注册虚地址的ARP请求,后面链接建立时,只增加这个计数,表示目前有几个链接在使用这个虚地址。在取消对虚地址ARP请求的注册时,只有在所有的通讯链接都不使用这个虚地址时才可以取消,也即链接计数为0时取消对虚地址ARP请求的注册。
由于可能有多条链接使用同一个虚地址,为避免重复注册,在注册之前,检查已经记录的注册信息中有无这个地址存在,如果有则将该地址注册信息中的链接计数加1。如果没有生成这条注册信息,则生成这条记录并将链接计数初始化为1。
如图3所示,当一条通讯链接终止后,检查这条链接有没有注册虚地址,如果有则将该注册信息中的通讯链接减1。当通讯链接数为0时,表示这个虚地址已经不再被任何链接使用,这时可以取消注册这个虚地址了,也即不再需要有接口响应这个虚地址的ARP请求了。
机译: 将互联网协议(IP)地址分配给终端的方法,例如电子笔记本,涉及在终端处于显示模式时显示IP分配地址,以响应地址解析协议(ARP)请求
机译: 用于生成对虚拟IP地址的地址解析协议请求的答复的方法和装置
机译: 网络地址转换装置,网络地址转换系统,网络地址转换方法和程序