一种保证网络地址转换设备与外网互通的方法技术

技术编号:3502052 阅读:251 留言:0更新日期:2012-04-11 18:40
一种保证网络地址转换设备与外网互通的方法,应用于NAT设备,该设备包括NAT模块和ICMP模块。NAT设备从内部接口收到ICMP报文后,如该报文需要进行PAT转换但没有映射条目,且NAT模块为其分配了本地地址和端口时,向ICMP模块发送申请预留消息,携带该端口的值;ICMP模块判断与该端口值相同的ICMP标识是否已使用,如果是,回复失败消息,否则预留该值的ICMP标识不再分配,回复成功消息;NAT模块如果收到失败消息,重新分配端口,再次申请预留;如果收到成功消息,在映射表中创建该ICMP报文的映射条目,进行正常的NAT转发。本发明专利技术可避免NAT设备生成的ICMP报文与转发ICMP报文产生端口冲突。

【技术实现步骤摘要】

本专利技术涉及网络通信领域,特别涉及通过网络地址转换进行网络互联的方法。
技术介绍
随着因特网的迅速发展,因特网网络地址日益面临被耗尽的危险。为了使局域网中的多台主机能够通过有限的几个公网地址接入Internet,一种NAT(Network Address Translation,即网络地址转换)技术应运而生。NAT技术是一种地址转换技术,通常用于内部网络内具有私有IP地址的主机访问外部网络时,将该主机的内部局部地址(Inside Local Address)转换为一个外部唯一可识别的合法IP地址(Inside Global Address);同时,将外部网络返回给内部网络主机的合法IP地址(Inside Global Address)映射回在内部网络中该主机的私有IP地址(Inside Local Address),使得不同私有网络可以使用相同的私有IP地址段,并能和外部网络进行正常通信,却不会导致地址信息出现混乱。从而扩展了IP地址的应用范围,在一定程度上缓解了当前IPv4地址空间不足的问题。 在NAT技术中有一种动态可重用NAT的技术,也叫做NAPT(NetworkAddress Port Translation,即网络地址端口转换)或者PAT(Port AddressTranslation,即端口地址转换),该技术根据内部主机的IP地址加端口对(IP,Port)来进行NAT转换。由于每一个可分配的内部全局地址都有近64K个端口可以用来做端口地址转换,所以如果在内部全局地址池里有N个地址的话,就可以对内部网络实现N*64K个IP地址加端口对进行NAT转换,大大地扩充了可进行NAT转换的内部网络主机数量。这种技术对于TCP/UDP(传输控制协议/用户数据报协议)报文是非常合适有效的,但是对于ICMP(因特网控制消息协议)报文,由于报文没有端口,似乎就无法处理了。目前的解决方案是利用ICMP Identifier(ICMP标识)(下面简称ICMP ID)来代替报文的源端口,从而通过IP地址加ICMP ID来进行NAT转换。 由于公网地址非常紧缺和宝贵,为了节约公网地址资源,还开发了一种动态端口转换复用接口地址NPAT的技术,该技术将NAT设备的接口地址配置在NAT地址池中,它通过端口区分的方式,不仅能使NAT设备可以和外部网络进行正常通信,还能进行正常的PAT功能。 对于采用这种技术的NAT设备上,对于TCP/UDP的应用所使用的端口一般都小于某个固定值A,因此只要在PAT转换中不分配A以下的端口值,就可以保证NAT设备既可以和外部网络进行正常通信,同时也可以正常进行PAT转换。但是,对于NAT设备生成的ICMP报文来说,其ICMP ID的值为1~65535,不会小于某个固定值A。而在现有的NPAT技术实现中,对于ICMP报文的PAT转换是利用ICMP ID代替端口进行转换的,即分配的端口值与ICMP ID相同。因此,它存在着一个明显的缺陷,即一旦NAT设备生成的ICMP报文中的ID与NAT映射条目中分配的端口相同时,就会产生端口冲突,从而导致内部主机通过NPAT转换ping不通外部主机(或网络),或者NAT设备ping不通外部主机(或网络)。 同样,当NAT设备在outside(外部)接口接收到目的地址为本地地址的ICMP报文,并且报文中的identifier与ICMP映射条目中的端口值相同时,也无法判定该报文是发送到本地设备的还是需要进行NAT转换送往内部主机(或网络)的,从而导致外部主机ping不通NAT设备。
技术实现思路
本专利技术要解决的技术问题是提供,能够避免NAT设备生成的ICMP报文与转发ICMP报文产生端口冲突。 为了解决上述技术问题,本专利技术提供,应用于网络地址转换设备,该设备包括用于转发因特网控制消息协议ICMP报文的网络地址转换NAT模块和用于收发和处理本地ICMP报文的ICMP模块,该方法包括以下步骤(a)当NAT设备从内部接口收到ICMP报文,NAT模块判断该报文需要进行端口地址转换PAT但没有相应映射条目,且为其分配了本地地址和端口时,向ICMP模块发送申请预留消息,携带该端口的值;(b)ICMP模块收到所述申请预留消息后,判断与该端口值相同的ICMP标识是否已使用,如果是,回复失败消息,执行步骤(c);否则预留与该端口值相同的ICMP标识不再分配,回复成功消息,执行步骤(d);(c)NAT模块收到失败消息后,重新分配端口,再次向ICMP模块发送申请预留消息,返回步骤(b);(d)NAT模块收到成功消息后,在映射表中创建该ICMP报文的映射条目,进行正常的NAT转发。 进一步地,上述方法还可具有以下特点还包括以下释放预留的ICMP标识的处理过程(h)NAT模块需要删除PAT映射条目时,如果该条目的协议类型是ICMP协议且内部全局地址为本地地址,则提取该条目中分配的端口值,向ICMP模块发送释放消息;(i)ICMP模块收到该释放消息后,释放预留的与该端口值相同的ICMP标识,向NAT模块回复释放成功消息;(j)NAT模块收到释放成功消息后,直接删除该映射条目。 进一步地,为了正确区分从外部接口接收的ICMP报文是需要进行NAT转发还是由本地ICMP模块处理,本专利技术方法还包括以下对外部接口收到的ICMP报文的处理过程(o)NAT设备从外部接口收到ICMP报文,如该报文需NAT转换,由NAT模块查映射表中是否有该ICMP报文的映射条目,如果有,执行步骤(p),如果没有,执行步骤(s);步骤(p),NAT模块再判断该映射条目是否PAT映射条目,如果是,执行步骤(q),否则按正常的NAT转发处理,结束; 步骤(q),判断该ICMP报文的类型是否响应报文,如果是,执行步骤(r),否则,执行步骤(s);步骤(r),进行NAT的转发处理,结束;步骤(s),将该ICMP报文交给ICMP模块处理,结束;进一步地,上述方法还可具有以下特点所述步骤(a)NAT模块向ICMP模块发送申请预留消息后,记录分配的端口值并等待ICMP模块的应答消息,如果等待超时,则向ICMP模块重发该申请预留消息。 进一步地,上述方法还可具有以下特点所述步骤(h)和步骤(p)中,NAT模块是通过映射条目的端口值判断该条目是否为PAT映射条目,如端口值不为0,则该条目是PAT映射条目,否则不是PAT映射条目。 进一步地,上述方法还可具有以下特点所述步骤(o)中,NAT设备是通过以下方式判断收到的ICMP报文是否需进行NAT转换的根据该报文的目的地址查找路由,如路由条目中的NAT标志被置位,则认为该ICMP报文需进行NAT转换。 由上可知,本专利技术在原有的技术基础上增加了NAT模块与ICMP模块之间的交互,使得NAT设备生成的ICMP报文的ID不会与PATICMP映射条目中的端口冲突,保证NAT设备能够正确区分本地接收的ICMP报文,使得NAT设备可以和外部网络在进行ping操作时可以互通。附图说明图1是NAT设备网络通信示意图;图2是本专利技术实施例中NAT设备在Inside接口接收到ICMP报文后处理的基本流程图;图3是本专利技术实施例中NAT设备释放预留的ICMP ID的基本流程图;图4是本专利技术本文档来自技高网
...

【技术保护点】
一种保证网络地址转换设备与外网互通的方法,应用于网络地址转换设备,该设备包括用于转发因特网控制消息协议ICMP报文的网络地址转换NAT模块和用于收发和处理本地ICMP报文的ICMP模块,该方法包括以下步骤:(a)当NAT设备从内部接口收到ICMP报文,NAT模块判断该报文需要进行端口地址转换PAT但没有相应映射条目,且为其分配了本地地址和端口时,向ICMP模块发送申请预留消息,携带该端口的值;(b)ICMP模块收到所述申请预留消息后,判断与该端口值相同的ICMP标识是否已使用,如果是,回复失败消息,执行步骤(c);否则预留与该端口值相同的ICMP标识不再分配,回复成功消息,执行步骤(d);(c)NAT模块收到失败消息后,重新分配端口,再次向ICMP模块发送申请预留消息,返回步骤(b);(d)NAT模块收到成功消息后,在映射表中创建该ICMP报文的映射条目,进行正常的NAT转发。

【技术特征摘要】
1.一种保证网络地址转换设备与外网互通的方法,应用于网络地址转换设备,该设备包括用于转发因特网控制消息协议ICMP报文的网络地址转换NAT模块和用于收发和处理本地ICMP报文的ICMP模块,该方法包括以下步骤(a)当NAT设备从内部接口收到ICMP报文,NAT模块判断该报文需要进行端口地址转换PAT但没有相应映射条目,且为其分配了本地地址和端口时,向ICMP模块发送申请预留消息,携带该端口的值;(b)ICMP模块收到所述申请预留消息后,判断与该端口值相同的ICMP标识是否已使用,如果是,回复失败消息,执行步骤(c);否则预留与该端口值相同的ICMP标识不再分配,回复成功消息,执行步骤(d);(c)NAT模块收到失败消息后,重新分配端口,再次向ICMP模块发送申请预留消息,返回步骤(b);(d)NAT模块收到成功消息后,在映射表中创建该ICMP报文的映射条目,进行正常的NAT转发。2.如权利要求1所述的方法,其特征在于,还包括以下释放预留的ICMP标识的处理过程(h)NAT模块需要删除PAT映射条目时,如果该条目的协议类型是ICMP协议且内部全局地址为本地地址,则提取该条目中分配的端口值,向ICMP模块发送释放消息;(i)ICMP模块收到该释放消息后,释放预留的与该端口值相同的ICMP标识,向NAT模块回复释放成功消息;(j)NAT模块收到释放成功消息后,直接删除该映射条目...

【专利技术属性】
技术研发人员:洪先进
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1