CN117749471A - Nat穿越的isakmp协商方法及相关装置 - Google Patents

Nat穿越的isakmp协商方法及相关装置 Download PDF

Info

Publication number
CN117749471A
CN117749471A CN202311742882.4A CN202311742882A CN117749471A CN 117749471 A CN117749471 A CN 117749471A CN 202311742882 A CN202311742882 A CN 202311742882A CN 117749471 A CN117749471 A CN 117749471A
Authority
CN
China
Prior art keywords
stage
isakmp
message
address
negotiation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311742882.4A
Other languages
English (en)
Inventor
李海威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN202311742882.4A priority Critical patent/CN117749471A/zh
Publication of CN117749471A publication Critical patent/CN117749471A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提出一种NAT穿越的ISAKMP协商方法及相关装置,涉及通信技术领域。IPSec节点可接收NAT设备发送的一阶段ISAKMP协商报文;若一阶段ISAKMP协商报文满足预设条件且接收到NAT设备发送的与一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功;预设条件包括一阶段ISAKMP协商报文为对端IPSec节点发送的协商报文,且对端IPSec节点位于NAT设备的内部网络侧。通过该方法,IPSec节点可以在确定一阶段ISAKMP协商报文满足预设条件的情况下,在接收到对应的二阶段ISAKMP协商报文时直接确定协商成功,保证能够成功建立IPSec连接。

Description

NAT穿越的ISAKMP协商方法及相关装置
技术领域
本申请涉及通信技术领域,具体而言,涉及一种NAT穿越的ISAKMP协商方法及相关装置。
背景技术
目前,IP通信可能会遭受到窃听、篡改等攻击,因此缺乏一定的安全保障,目前一般可以通过IPSec(Internet Protocol Security,互联网安全协议)解决IP层的安全性问题。是一种IP安全协议标准,用于给IPV4和IPV6数据提供高质量、可互操作的、基于密码学的安全性。
IPSec可通过密码学方法支持机密性和认证性服务,使用户能有选择地使用,并得到所期望的安全服务,但由于国内IP资源匮乏,因此在实际应用中需要进行NAT(NetworkAddress Translation,网络地址转换)穿越。
现有技术中,一个IPSec节点需要经过NAT设备与另一个IPSec节点建立IPSec连接,此时这两个IPSec节点之间需要进行ISAKMP(Internet Secrity Assocaition and KeyManagement Protocol,互联网安全联盟和密钥管理协议)协商,对于发起协商报文的IPSec节点,其保护的数据流量可确定为该IPSec节点到另一IPSec节点,而对于接收协商报文的IPSec节点,其保护的数据流量为该IPSec节点到NAT设备,因此在ISAKMP协商二阶段时,接收到协商报文的IPSec节点会认为协商报文中的数据流量和其预期需要保护的数据流量不符,从而导致协商失败,无法成功建立IPSec连接。
发明内容
有鉴于此,本申请的目的在于提供一种NAT穿越的ISAKMP协商方法及相关装置,以解决现有技术中由于ISAKMP协商失败无法成功建立IPSec连接的问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请提供一种NAT穿越的ISAKMP协商方法,应用于IPSec节点,所述IPSec节点与NAT设备通信连接,所述NAT设备与至少一个对端IPSec节点通信连接,所述方法包括:
接收所述NAT设备发送的一阶段ISAKMP协商报文;
若所述一阶段ISAKMP协商报文满足预设条件且接收到所述NAT设备发送的与所述一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功;所述预设条件包括所述一阶段ISAKMP协商报文为所述对端IPSec节点发送的协商报文,且所述对端IPSec节点位于所述NAT设备的内部网络侧。
在可选的实施方式中,所述一阶段ISAKMP协商报文中包括源哈希值以及目的哈希值,所述源哈希值根据生成所述一阶段ISAKMP协商报文的设备的源地址和源端口号生成,所述目的哈希值根据所述一阶段ISAKMP协商报文对应的目的地址和目的端口号生成;
在接收所述NAT设备发送的一阶段ISAKMP协商报文之后,所述方法还包括:
从所述一阶段ISAKMP协商报文的报文头中获取源地址、源端口号、目的地址以及目的端口号,并根据所述源地址和所述源端口号计算待检测源哈希值,根据所述目的地址和目的端口号计算待检测目的哈希值;
若所述待检测源哈希值与所述源哈希值不同且所述待检测目的哈希值与所述目的哈希值相同,则确定所述一阶段ISAKMP协商报文满足所述预设条件。
在可选的实施方式中,在接收所述NAT设备发送的一阶段ISAKMP协商报文之后,所述方法还包括:
生成一阶段ISAKMP协商应答报文并发送至所述NAT设备;
接收所述NAT设备基于所述一阶段ISAKMP协商应答报文发送的与所述一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文;所述二阶段ISAKMP协商报文由所述NAT设备在根据所述一阶段ISAKMP协商应答报文中的目的地址、目的端口号以及预存的地址转换表将所述一阶段ISAKMP协商应答报文发送至所述对端IPSec节点后,通过所述对端IPSec节点生成并发送到所述NAT设备。
在可选的实施方式中,所述IPSec节点中还存储有网段信息与安全策略之间的对应关系,其中,一个所述网段信息对应一个所述安全策略,所述方法还包括:
根据所述二阶段ISAKMP协商报文中的二阶段流量地址中的源地址以及所述NAT设备的IP地址,生成所述二阶段流量地址中的源地址对应的路由信息;其中,所述二阶段流量地址中的源地址为目的地址,所述NAT设备的IP地址为所述目的地址对应的下一跳设备地址;
确定所述二阶段流量地址中的源地址所属的网段信息,并根据所述对应关系确定所述所属的网段信息对应的安全策略,根据所述安全策略生成所述二阶段流量地址中的源地址对应的策略信息。
在可选的实施方式中,所述方法还包括:
获取待转发报文;所述待转发报文中包括待转发目的地址;
若所述待转发目的地址存在对应的策略信息,则根据所述待转发目的地址对应的路由信息转发所述待转发报文。
在可选的实施方式中,所述方法还包括:
若当前时刻距协商成功的时刻的时长达到预设时长,则删除所述二阶段流量地址中的源地址对应的路由信息和策略信息;
生成ISAKMP协商请求报文并发送至所述NAT设备;
接收所述NAT设备基于所述ISAKMP协商请求报文发送的一阶段ISAKMP协商报文;所述一阶段ISAKMP协商报文由所述NAT设备在根据所述ISAKMP协商请求报文中的目的地址、目的端口号以及预存的地址转换表将所述ISAKMP协商请求报文发送至所述对端IPSec节点后,通过所述对端IPSec节点重新生成并发送到所述NAT设备。
第二方面,本申请提供一种NAT穿越的ISAKMP协商装置,应用于IPSec节点,所述IPSec节点与NAT设备通信连接,所述NAT设备与至少一个对端IPSec节点通信连接,所述装置包括:
接收模块,用于接收所述NAT设备发送的一阶段ISAKMP协商报文;
确定模块,用于若所述一阶段ISAKMP协商报文满足预设条件且接收到所述NAT设备发送的与所述一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功;所述预设条件包括所述一阶段ISAKMP协商报文为所述对端IPSec节点发送的协商报文,且所述对端IPSec节点位于所述NAT设备的内部网络侧。
在可选的实施方式中,所述一阶段ISAKMP协商报文中包括源哈希值以及目的哈希值,所述源哈希值根据生成所述一阶段ISAKMP协商报文的设备的源地址和源端口号生成,所述目的哈希值根据所述一阶段ISAKMP协商报文对应的目的地址和目的端口号生成;
所述确定模块,还用于从所述一阶段ISAKMP协商报文的报文头中获取源地址、源端口号、目的地址以及目的端口号,并根据所述源地址和所述源端口号计算待检测源哈希值,根据所述目的地址和目的端口号计算待检测目的哈希值;若所述待检测源哈希值与所述源哈希值不同且所述待检测目的哈希值与所述目的哈希值相同,则确定所述一阶段ISAKMP协商报文满足所述预设条件。
第三方面,本申请提供一种IPSec节点,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器可执行所述计算机程序以实现前述实施方式任一所述的方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述实施方式中任一项所述的方法。
本申请实施例提供的NAT穿越的ISAKMP协商方法及相关装置,IPSec节点可以接收NAT设备发送的一阶段ISAKMP协商报文,并在确定该一阶段ISAKMP协商报文为对端IPSec节点发送的协商报文以及该对端IPSec节点是否位于NAT设备的内部网络侧,且该IPSec节点接收到该一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文的情况下,确定协商成功。通过该方法,IPSec节点可以在确定一阶段ISAKMP协商报文满足预设条件的情况下,在接收到对应的二阶段ISAKMP协商报文时不再对二阶段ISAKMP协商报文中的数据流量和预期保护的数据流量进行匹配确认,而是直接确定协商成功,保证能够成功建立IPSec连接。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了IPSec系统的一种方框示意图;
图2示出了本申请实施例提供的IPSec节点的方框示意图;
图3示出了本申请实施例提供的NAT穿越的ISAKMP协商方法的一种流程示意图;
图4示出了节点B生成的GRE保活报文的示意图;
图5示出了加密后的GRE保活报文的示意图;
图6示出NAT设备修改后的GRE保活报文的示意图;
图7示出了GRE应答报文的示意图;
图8示出了本申请实施例提供的一种NAT穿越的ISAKMP协商装置的功能模块图。
图标:100-IPSec节点;101-存储器;102-处理器;103-通信模块;200-接收模块;210-确定模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
目前,IP通信可能会遭受到窃听、篡改等攻击,因此缺乏一定的安全保障,目前一般可以通过IPSec(Internet Protocol Security,互联网安全协议)解决IP层的安全性问题。是一种IP安全协议标准,用于给IPV4和IPV6数据提供高质量、可互操作的、基于密码学的安全性。
IPSec可通过密码学方法支持机密性和认证性服务,使用户能有选择地使用,并得到所期望的安全服务,但由于国内IP资源匮乏,因此在实际应用中需要进行NAT(NetworkAddress Translation,网络地址转换)穿越。
IPSec可以与MGRE(Multipoint Generic Routing Encapsulation,多点通用路由封装)技术结合应用,从而构成MGRE OVER IPSEC场景。
MGRE是一种基于NHRP(NextHop Resolution Protocol,下一跳地址解析协议)的DVPN(Dymatic Vitual Private Network,动态虚拟专网)技术。
DVPN是为了解决传统隧道技术的配置复杂、不便响应网络拓扑变化和分支机构地址变化而提出的一项非公有技术。其使用中心集中控制的思想,由一个中心节点完成分支节点的上线、认证和公私网地址管理,借助节点之间建立的隧道传递私网路由信息进而实现全网互通。
基于此,MGRE是点对多点的GRE(Generic Routing Encapsulation,通用路由封装协议)隧道技术,报文封装和解封装和GRE隧道相同。MGRE隧道依赖NHRP协议工作,NHRP协议能动态的学习其他节点的地址。Hub会维护隧道地址和公网地址的映射表项,Spoke会向Hub注册自己的地址信息,Hub和多个Spoke会建立永久隧道,当Spoke需要和其他Spoke通信时,Spoke会向Hub获取其他Spoke的地址,从而Spoke与Spoke之间建立隧道。
可以理解的,由于MGRE技术本身不具备安全性,因此在实际使用中常常用IPSEC对报文进行加密,从而使得MGRE OVER IPSEC的使用愈发广泛。
现有技术中,一个IPSec节点需要经过NAT设备与另一个IPSec节点建立IPSec连接,此时这两个IPSec节点之间需要进行ISAKMP协商。
请参见图1,为IPSec系统的一种方框示意图,该IPSec系统包括三个IPSec节点,即节点A、NAT设备、节点B以及节点C,以节点B经过NAT设备与节点A建立IPSec为例,对于节点B,其保护的数据流量为B->A,而对于节点A,其保护的数据流量为A->NAT,因此在ISAKMP协商二阶段时,节点B发送给节点A的协商报文中可携带有数据流量B->A,但由于节点A而言,其预期的NAT设备发送的数据流量应该为NAT->A,这与协商报文中实际携带的数据流量不匹配,因此会导致协商失败。
此外,即使节点B与节点A之间协商成功,但由于节点A仍然只保护A->NAT的数据流量,因此当节点A想要给节点B发送数据时,实际上并不知道下一跳设备是哪个设备,在此基础上,节点A依然无法成功向节点B发送数据。
显然的,现有技术中的NAT穿越主要存在以下两个问题:1.ISAKMP协商失败导致无法成功建立IPSec连接的问题;2.数据转发失败导致IPSec节点之间无法成功通信的问题。
目前已有的一些方案虽然能够在一定程度上解决上述问题,但也会引发新的问题。
例如公开号为CN111614796A的专利文件公开了一种使用手工密钥配置IPsec隧道穿越NAT的方法,可在手工配置IPSec隧道后,在客户端启动一个定时器以定时发送自定义IPSec报文,服务端根据接收到的IPSec报文判断其是否穿越了NAT设备以及IPSec隧道的原始信息,之后将NAT转换后的IP地址和UDP(User Datagram Protocol,用户数据报协议)端口信息与隧道信息进行关联,并根据这些信息指导后续的报文封装转发。
该方案虽然能够实现IPSec的NAT穿越,但是其自定义了一种IPSec报文,从而根据该自定义的报文实现NAT穿越,虽然能够在手工隧道中解决NAT穿越时存在的问题,但是该方案在自动化隧道中并不适用,且由于该方案采用的是自定义IPSec报文,因此局限性较大。
此外,公开号为EP3131269B1的专利文件,提出在ISAKMP协商过程中,接收端可接收来自发送端的ISAKMP协商报文,从该ISAKMP协商报文的载荷中提取原始IP地址和端口号作为第一IP地址和第一端口号,以及从该ISAKMP协商报文的报文头中提取IP地址和端口号作为第二IP地址和第二端口号,之后根据该第一IP地址和第一端口号、第二IP地址和第二端口号建立NAT转换表,从而利用该转换表对接收到的IPSec报文进行AH(AuthenticatonHeader,认证头)认证。
该方案可通过建立NAT转换表用于对IPSec报文进行认证处理,但实则并未解决IPSec隧道模式下ISAKMP协商二阶段协商失败的问题以及数据转发失败问题。
基于此,本申请实施例提供一种NAT穿越的ISAKMP协商方法及相关装置,以解决上述问题。
首先,本申请实施例提供一种IPSec节点,该节点与NAT设备通信连接,且该NAT设备与至少一个对端IPSec节点通信连接。
在本实施例中,该IPSec节点、NAT设备以及至少一个对端IPSec节点所构成的系统可以是一个MGRE OVER IPSEC网络系统。
具体地,图2为本申请实施例提供的IPSec节点100的方框示意图,请参见图2。该IPSec节点100包括存储器101、处理器102及通信模块103。存储器101、处理器102以及通信模块103各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器101用于存储程序或者数据。可以理解的,该存储器101存储有能够被处理器执行的计算机程序。
可选地,存储器101可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
可选地,处理器102用于读/写存储器中存储的数据或程序,并执行相应地功能。可以理解的,该处理器102可以执行计算机程序以实现本申请实施例提供的NAT穿越的ISAKMP协商方法。
通信模块103用于通过网络建立IPSec节点与其它通信终端之间的通信连接,并用于通过网络收发数据。
应当理解的是,图2所示的结构仅为IPSec节点的结构示意图,IPSec节点还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
接下来以上述图2中的IPSec节点为执行主体,结合流程示意图对本申请实施例提供的NAT穿越的ISAKMP协商方法进行示例性介绍。具体地,图3为本申请实施例提供的NAT穿越的ISAKMP协商方法的一种流程示意图,请参见图3,该方法包括:
步骤S20,接收NAT设备发送的一阶段ISAKMP协商报文。
步骤S21,若一阶段ISAKMP协商报文满足预设条件且接收到NAT设备发送的与一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功。
可选地,该预设条件包括一阶段ISAKMP协商报文为对端IPSec节点发送的协商报文,且对端IPSec节点位于NAT设备的内部网络侧。
可选地,若该一阶段ISAKMP协商报文为对端IPSec节点发送的协商报文,则说明该一阶段ISAKMP协商报文是经过了NAT穿越抵达该IPSec节点的报文。
可选地,与一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文指的是发送该一阶段ISAKMP协商报文的设备发送的二阶段ISAKMP协商报文。
在一种可能实现的方式中,协商报文中可以携带有用于表征生成该协商报文的设备的标识,则IPSec节点可以根据一阶段ISAKMP协商报文中的该标识以及二阶段ISAKMP协商报文中的该标识,确定一阶段ISAKMP协商报文与二阶段ISAKMP协商报文是否对应。
在本实施例中,IPSec节点可以先判断一阶段ISAKMP协商报文是否满足预设条件,可以理解的,若一阶段ISAKMP协商报文满足预设条件,则可确定发起协商的对端IPSec节点位于NAT设备的内部网络侧,因此在接收到对应的二阶段ISAKMP协商报文的情况下,可直接确定隧道模式协商成功。
本申请实施例提供的NAT穿越的ISAKMP协商方法,IPSec节点可以接收NAT设备发送的一阶段ISAKMP协商报文,并在确定该一阶段ISAKMP协商报文为对端IPSec节点发送的协商报文以及该对端IPSec节点是否位于NAT设备的内部网络侧,且该IPSec节点接收到该一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文的情况下,确定协商成功。通过该方法,IPSec节点可以在确定一阶段ISAKMP协商报文满足预设条件的情况下,在接收到对应的二阶段ISAKMP协商报文时不再对二阶段ISAKMP协商报文中的数据流量和预期保护的数据流量进行匹配确认,而是直接确定协商成功,保证能够成功建立IPSec连接。
可选地,IPSec节点可以在接收到一阶段协商报文之后,根据一阶段协商报文中的一些属性信息确定该一阶段协商报文是否满足预设条件。在一种可能实现的方式中,该一阶段ISAKMP协商报文中可以包括源哈希值以及目的哈希值,该源哈希值和目的哈希值可以NAT-D负载的形式设置在该一阶段ISAKMP协商报文中。
可选地,该源哈希值根据生成一阶段ISAKMP协商报文的设备的源地址和源端口号生成,目的哈希值根据一阶段ISAKMP协商报文对应的目的地址和目的端口号生成。
在一个示例中,请继续参照上述图1,若将节点A看作IPSec节点,将节点B看作对端IPSec节点,由节点B向节点A发起ISAKMP协商,则该一阶段ISAKMP协商报文中携带的源哈希值即为根据节点B的源地址和源端口号生产的哈希值,目的哈希值即为根据节点A的目的地址以及目的端口号生成的哈希值。
在本实施例中,IPSec节点可以在接收到NAT设备发送的一阶段ISAKMP协商报文后,从一阶段ISAKMP协商报文的报文头中获取源地址、源端口号、目的地址以及目的端口号,并根据源地址和源端口号计算待检测源哈希值,根据目的地址和目的端口号计算待检测目的哈希值,从而根据该待检测源哈希值、源哈希值、待检测目的哈希值以及目的哈希值,确定一阶段ISAKMP协商报文是否满足预设条件。
可以理解的,若待检测源哈希值与源哈希值不同且待检测目的哈希值与目的哈希值相同,则可确定一阶段ISAKMP协商报文满足预设条件。
可选地,若该一阶段ISAKMP协商报文为位于NAT设备的内部网络侧的对端IPSec节点发送的报文,则其经过NAT设备时,NAT设备会将该一阶段ISAKMP协商报文的报文头中的源地址和源端口号修改为NAT设备的源地址和源端口号,之后再将修改了报文头的一阶段ISAKMP协商报文发送至IPSec节点。
显然的,在此情况下,待检测源哈希值与源哈希值不同且待检测目的哈希值与目的哈希值相同。
可以理解的,若IPSec节点根据一阶段ISAKMP协商报文确定发送该报文的设备为位于NAT设备的内部网络侧的对端IPSec节点,则该IPSec节点位于该NAT设备的外部网络侧。
可选地,在ISAKMP协商一阶段时,IPSec节点和对端IPSec节点之间可协商出用于ISAKMP协商二阶段的加密策略和解密策略,以对二阶段ISAKMP协商报文进行加密和解密。
在此基础上,IPSec节点可以在接收到NAT设备发送的一阶段ISAKMP协商报文之后,先生成一阶段ISAKMP协商应答报文并发送至NAT设备。
在一种可能实现的方式中,该一阶段ISAKMP协商应答报文中可以携带有用于为ISAKMP协商二阶段进行加密的二阶段ISAKMP协商加密参数。
可选地,该NAT设备可以根据该一阶段ISAKMP协商应答报文中的目的地址、目的端口号以及预存的地址转换表,将该一阶段ISAKMP协商应答报文发送至对端IPSec节点。
在本实施例中,该地址转换表可以事先存储在NAT设备中,用于在转发报文时进行地址转换。
在一个示例中,NAT设备可以在转发一阶段ISAKMP协商报文时,在地址转换表中记录相应的地址转换信息,以便之后进行地址转换。
请继续参见图1,若将节点A看作IPSec节点,将节点B看作对端IPSec节点,由节点B向节点A发起ISAKMP协商,则一阶段ISAKMP协商报文经过NAT设备时,NAT设备会将报文头中节点B的源地址和源端口号改成NAT设备的源地址和源端口号,并将节点B的源地址和源端口号与NAT设备的源地址和源端口号对应起来生成相应的地址转换信息记录在地址转换表中,例如,若B的IP地址为B,端口号为500,NAT设备的IP地址为N,端口号为600,则该地址转换信息可以表征为B(500)->N(600)。
在本示例中,一阶段ISAKMP协商应答报文中的目的地址、目的端口号可以是NAT设备在发送一阶段ISAKMP协商报文时修改的源地址和源端口号,即N(600),基于此,NAT设备可以根据该目的地址、目的端口号以及地址转换表,对该一阶段ISAKMP协商应答报文中的目的地址、目的端口号进行修改,之后将该一阶段ISAKMP协商应答报文发送至相应的对端IPSec节点,即节点B。
可选地,对端IPSec节点可以在接收到一阶段ISAKMP协商应答报文之后,根据该一阶段ISAKMP协商应答报文中的二阶段ISAKMP协商加密参数确定二阶段ISAKMP协商的加密策略。在此基础上,对端IPSec节点可以生成二阶段ISAKMP协商报文并对其进行加密,将该报文通过NAT设备发送至IPSec节点。
可以理解的,基于此,IPSec节点可以接收NAT设备基于一阶段ISAKMP协商应答报文发送的与一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文。
可选地,在ISAKMP协商二阶段时,IPSec节点和对端IPSec节点之间可以协商出用于进行数据转发的加密策略和解密策略,以在之后通过IPSec隧道进行数据转发时,对数据进行加密和解密。
可选地,IPSec节点还可以在接收到二阶段ISAKMP协商报文并确定协商成功后,向NAT设备返回二阶段ISAKMP协商应答报文。
可以理解的,该二阶段ISAKMP协商应答报文中可以携带有用于在数据转发时对数据进行加密的数据加密参数。
在本实施例中,NAT设备可以将该二阶段ISAKMP协商应答报文进行转发,由于其转发流程与上述转发一阶段ISAKMP协商应答报文的过程类似,因此不做过多赘述。
可选地,由于即使IPSec节点与对端IPSec节点协商成功,也存在数据转发失败导致无法成功通信的问题,因此为了保证能够正常进行数据转发过程,IPSec节点还可以在协商成功的情况下,生成用于进行数据转发的相应信息进行存储。
在一种可能实现的方式中,IPSec节点还可以在协商成功的情况下,获取二阶段ISAKMP协商报文中的二阶段流量地址,并生成该二阶段流量地址中的源地址对应的路由信息以及策略信息。
可选地,该路由信息中可以包括下一跳设备的信息,该策略信息可以包括安全策略。其中,安全策略可将被保护的数据流和IPSec隧道相关联,即定义对何种数据流实施何种保护,全局应用的IPSec保护不同的数据流量,是通过匹配不同的安全策略来实现的。可选地,该IPSec节点中还存储有网段信息与安全策略之间的对应关系,且一个网段信息对应一个安全策略。
在本实施例中,该IPSec节点可以根据二阶段ISAKMP协商报文中的二阶段流量地址中的源地址以及NAT设备的IP地址,生成二阶段流量地址中的源地址对应的路由信息。
其中,二阶段流量地址中的源地址为目的地址,NAT设备的IP地址为目的地址对应的下一跳设备地址。
可以理解的,当目的地址为该二阶段流量地址中的源地址时,对应的下一跳设备地址为NAT设备的IP地址。在本实施例中,该IPSec节点可以确定二阶段流量地址中的源地址所属的网段信息,并根据对应关系确定该二阶段流量地址中的源地址所属的网段信息对应的安全策略,根据安全策略生成二阶段流量地址中的源地址对应的策略信息。
可选地,该IPSec节点可以通过生成二阶段流量地址中的源地址与该源地址所属的网段信息对应的安全策略之间的对应关系,生成二阶段流量地址中的源地址对应的策略信息。
可选地,该IPSec节点可以在数据转发过程中,基于生成的路由信息和策略信息发送待转发报文。
具体地,IPSec节点可以获取包括有待转发目的地址的待转发报文,若待转发目的地址存在对应的策略信息,则根据待转发目的地址对应的路由信息转发待转发报文。
可选地,该待转发报文可以是该IPSec节点自行生成的报文,也可以是IPSec节点基于接收到的一些报文需要返回的应答报文。
在本实施例中,该IPSec节点可以在获取到待转发报文后,先确定该待转发目的地址是否对应有策略信息,从而确定是否可以通过IPSec隧道对其进行转发,在确定该待转发目的地址对应有策略信息的情况下,根据待转发目的地址对应的路由信息发送该待转发报文。
可以理解的,该IPSec节点可以根据待转发目的地址对应的路由信息确定待转发目的地址对应的下一跳设备,从而通过该下一跳设备对待转发报文进行发送。
本申请实施例提供的NAT穿越的ISAKMP协商方法,可在协商成功后自行生成路由信息以及策略信息,因此无需管理员手动配置路由等信息,从而简化了配置工作,减少人力劳动。此外,该方法不仅能够保证协商成功从而成功建立IPSec隧道,同时,由于存在路由信息以及策略信息,因此还可以保证数据的正常转发,因此可以扩展IPSec应用范围,使得其在不同的场景下均能成功建立IPSec隧道以对数据进行保护。
在一个示例中,该待转发报文可以是对端IPSec节点发送的保活报文的应答报文,请继续参见上述图1,若将节点A看作IPSec节点,将节点B看作对端IPSec节点,且节点A与节点B已经协商成功,则节点B可向节点A发送GRE保活报文。
在本示例中,节点B可以首先生成该GRE保活报文,并根据协商的加密策略对该GRE保活报文进行加密。具体地,图4为节点B生成的GRE保活报文的示意图,图5为加密后的GRE保活报文的示意图。
请参见图4,该GRE保活报文的外层IP头中的流量地址为B->A,其中,源地址为节点B的IP地址,目的地址为节点A的IP地址;请参见图5,加密后的GRE保活报文外层封装了ESP头、UDP头以及IP头。
在本示例中,节点B可以将加密后的GRE保活报文发送至NAT设备,NAT设备会将加密后的GRE保活报文的外层IP头中的流量地址由B->A修改为N->A,即将源地址修改为NAT设备的IP地址。具体地,图6为NAT设备修改后的GRE保活报文的示意图。
在本示例中,NAT设备可将修改后的GRE保活报文发送至节点A,则节点A可以根据协商得到的用于数据转发过程的解密策略对GRE保活报文进行解密,并剥去解密后的GRE保活报文的外层IP头,将剩下的内容作为GRE应答报文进行处理。具体地,图7为GRE应答报文的示意图。
在本示例中,节点A可以根据GRE应答报文的流量地址确定目的地址是否对应有相应的策略信息。请参见图7,该GRE应答报文的源地址为节点A的IP地址,目的地址为节点B的IP地址,由于节点A和节点B在协商成功后,节点A会生成节点B对应的策略信息,因此节点A可确定其此时也可以保护A->B的数据流量,因此可根据加密策略对GRE应答报文进行加密。
在本示例中,节点A可以通过节点B对应的路由信息将加密后的GRE应答报文进行发送,由于节点B对应的下一跳设备为NAT设备,因此节点A还可以将加密后的GRE应答报文发送至NAT设备,由NAT设备将加密后的GRE应答报文进行发送。
在本示例中,节点A可以在对GRE应答报文加密时,在UDP头中填写NAT穿越时需要采用的端口号,以确保该报文经过NAT设备可成功转发至节点B。
可选地,考虑到若长时间不对加密策略进行更新,则容易导致数据传输时安全性降低,因此为了提高数据传输的安全性,该IPSec节点还可以每隔一段时间对加密策略、路由信息、策略信息等进行一次更新。
具体地,若当前时刻距协商成功的时刻的时长达到预设时长,则IPSec节点可删除二阶段流量地址中的源地址对应的路由信息和策略信息,之后生成ISAKMP协商请求报文并发送至NAT设备。
可选地,IPSec节点还需要删除该源地址对应的加密策略和解密策略。
在本实施例中,IPSec节点还需要在删除了相应信息后,与对应的对端IPSec节点再次进行协商,因此该IPSec节点还可生成ISAKMP协商请求报文并将其发送给NAT设备,以再次进行ISAKMP协商。
可选地,该NAT设备可以根据协商请求报文中的目的地址、目的端口号以及预存的地址转换表将协商请求报文发送至对端IPSec节点,则对端IPSec节点重新生成一阶段ISAKMP协商报文并发送至NAT设备。
可以理解的,该IPSec节点可以接收NAT设备基于协商请求报文发送的一阶段ISAKMP协商报文,并重新确定该一阶段ISAKMP协商报文是否满足预设条件。
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种NAT穿越的ISAKMP协商装置的实现方式。进一步地,请参阅图8,图8为本申请实施例提供的一种NAT穿越的ISAKMP协商装置的功能模块图。需要说明的是,本实施例所提供的NAT穿越的ISAKMP协商装置,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该NAT穿越的ISAKMP协商装置包括:接收模块200以及确定模块210。
该接收模块200,用于接收NAT设备发送的一阶段ISAKMP协商报文。
可以理解的,该接收模块200还可以用于执行上述步骤S20。
该确定模块210,用于若一阶段ISAKMP协商报文满足预设条件且接收到NAT设备发送的与一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功;预设条件包括一阶段ISAKMP协商报文为对端IPSec节点发送的协商报文,且对端IPSec节点位于NAT设备的内部网络侧。
可以理解的,该确定模块210还可以用于执行上述步骤S21。
可选地,该确定模块210,还用于从一阶段ISAKMP协商报文的报文头中获取源地址、源端口号、目的地址以及目的端口号,并根据源地址和源端口号计算待检测源哈希值,根据目的地址和目的端口号计算待检测目的哈希值;若待检测源哈希值与源哈希值不同且待检测目的哈希值与目的哈希值相同,则确定一阶段ISAKMP协商报文满足预设条件。
可选地,该接收模块200,还用于生成一阶段ISAKMP协商应答报文并发送至NAT设备;接收NAT设备基于一阶段ISAKMP协商应答报文发送的与一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文;二阶段ISAKMP协商报文由NAT设备在根据一阶段ISAKMP协商应答报文中的目的地址、目的端口号以及预存的地址转换表将一阶段ISAKMP协商应答报文发送至对端IPSec节点后,通过对端IPSec节点生成并发送到NAT设备。
可选地,该确定模块210,还用于根据二阶段ISAKMP协商报文中的二阶段流量地址中的源地址以及NAT设备的IP地址,生成二阶段流量地址中的源地址对应的路由信息;其中,二阶段流量地址中的源地址为目的地址,NAT设备的IP地址为目的地址对应的下一跳设备地址;确定二阶段流量地址中的源地址所属的网段信息,并根据对应关系确定所属的网段信息对应的安全策略,根据安全策略生成二阶段流量地址中的源地址对应的策略信息。
可选地,该确定模块210,还用于获取待转发报文;待转发报文中包括待转发目的地址;若待转发目的地址存在对应的策略信息,则根据待转发目的地址对应的路由信息转发待转发报文。
可选地,该确定模块210,还用于若当前时刻距协商成功的时刻的时长达到预设时长,则删除二阶段流量地址中的源地址对应的路由信息和策略信息;生成ISAKMP协商请求报文并发送至NAT设备;接收NAT设备基于ISAKMP协商请求报文发送的一阶段ISAKMP协商报文;一阶段ISAKMP协商报文由NAT设备在根据ISAKMP协商请求报文中的目的地址、目的端口号以及预存的地址转换表将ISAKMP协商请求报文发送至对端IPSec节点后,通过对端IPSec节点重新生成并发送到NAT设备。
本申请实施例提供的NAT穿越的ISAKMP协商装置,通过接收模块接收NAT设备发送的一阶段ISAKMP协商报文;通过确定模块若一阶段ISAKMP协商报文满足预设条件且接收到NAT设备发送的与一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功;预设条件包括一阶段ISAKMP协商报文为对端IPSec节点发送的协商报文,且对端IPSec节点位于NAT设备的内部网络侧,因此IPSec节点可以在确定一阶段ISAKMP协商报文满足预设条件的情况下,在接收到对应的二阶段ISAKMP协商报文时不再对二阶段ISAKMP协商报文中的数据流量和预期保护的数据流量进行匹配确认,而是直接确定协商成功,保证能够成功建立IPSec连接。
可选地,上述模块可以软件或固件(Firmware)的形式存储于图2所示的存储器中或固化于该IPSec节点的操作系统(Operating System,OS)中,并可由图2中的处理器执行。同时,执行上述模块所需的数据、程序的代码等可以存储在存储器中。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可实现本申请实施例提供的NAT穿越的ISAKMP协商方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种NAT穿越的ISAKMP协商方法,其特征在于,应用于IPSec节点,所述IPSec节点与NAT设备通信连接,所述NAT设备与至少一个对端IPSec节点通信连接,所述方法包括:
接收所述NAT设备发送的一阶段ISAKMP协商报文;
若所述一阶段ISAKMP协商报文满足预设条件且接收到所述NAT设备发送的与所述一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功;所述预设条件包括所述一阶段ISAKMP协商报文为所述对端IPSec节点发送的协商报文,且所述对端IPSec节点位于所述NAT设备的内部网络侧。
2.根据权利要求1所述的方法,其特征在于,所述一阶段ISAKMP协商报文中包括源哈希值以及目的哈希值,所述源哈希值根据生成所述一阶段ISAKMP协商报文的设备的源地址和源端口号生成,所述目的哈希值根据所述一阶段ISAKMP协商报文对应的目的地址和目的端口号生成;
在接收所述NAT设备发送的一阶段ISAKMP协商报文之后,所述方法还包括:
从所述一阶段ISAKMP协商报文的报文头中获取源地址、源端口号、目的地址以及目的端口号,并根据所述源地址和所述源端口号计算待检测源哈希值,根据所述目的地址和目的端口号计算待检测目的哈希值;
若所述待检测源哈希值与所述源哈希值不同且所述待检测目的哈希值与所述目的哈希值相同,则确定所述一阶段ISAKMP协商报文满足所述预设条件。
3.根据权利要求1所述的方法,其特征在于,在接收所述NAT设备发送的一阶段ISAKMP协商报文之后,所述方法还包括:
生成一阶段ISAKMP协商应答报文并发送至所述NAT设备;
接收所述NAT设备基于所述一阶段ISAKMP协商应答报文发送的与所述一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文;所述二阶段ISAKMP协商报文由所述NAT设备在根据所述一阶段ISAKMP协商应答报文中的目的地址、目的端口号以及预存的地址转换表将所述一阶段ISAKMP协商应答报文发送至所述对端IPSec节点后,通过所述对端IPSec节点生成并发送到所述NAT设备。
4.根据权利要求1所述的方法,其特征在于,所述IPSec节点中还存储有网段信息与安全策略之间的对应关系,其中,一个所述网段信息对应一个所述安全策略,所述方法还包括:
根据所述二阶段ISAKMP协商报文中的二阶段流量地址中的源地址以及所述NAT设备的IP地址,生成所述二阶段流量地址中的源地址对应的路由信息;其中,所述二阶段流量地址中的源地址为目的地址,所述NAT设备的IP地址为所述目的地址对应的下一跳设备地址;
确定所述二阶段流量地址中的源地址所属的网段信息,并根据所述对应关系确定所述所属的网段信息对应的安全策略,根据所述安全策略生成所述二阶段流量地址中的源地址对应的策略信息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取待转发报文;所述待转发报文中包括待转发目的地址;
若所述待转发目的地址存在对应的策略信息,则根据所述待转发目的地址对应的路由信息转发所述待转发报文。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若当前时刻距协商成功的时刻的时长达到预设时长,则删除所述二阶段流量地址中的源地址对应的路由信息和策略信息;
生成ISAKMP协商请求报文并发送至所述NAT设备;
接收所述NAT设备基于所述ISAKMP协商请求报文发送的一阶段ISAKMP协商报文;所述一阶段ISAKMP协商报文由所述NAT设备在根据所述ISAKMP协商请求报文中的目的地址、目的端口号以及预存的地址转换表将所述ISAKMP协商请求报文发送至所述对端IPSec节点后,通过所述对端IPSec节点重新生成并发送到所述NAT设备。
7.一种NAT穿越的ISAKMP协商装置,其特征在于,应用于IPSec节点,所述IPSec节点与NAT设备通信连接,所述NAT设备与至少一个对端IPSec节点通信连接,所述装置包括:
接收模块,用于接收所述NAT设备发送的一阶段ISAKMP协商报文;
确定模块,用于若所述一阶段ISAKMP协商报文满足预设条件且接收到所述NAT设备发送的与所述一阶段ISAKMP协商报文对应的二阶段ISAKMP协商报文,则确定协商成功;所述预设条件包括所述一阶段ISAKMP协商报文为所述对端IPSec节点发送的协商报文,且所述对端IPSec节点位于所述NAT设备的内部网络侧。
8.根据权利要求7所述的装置,其特征在于,所述一阶段ISAKMP协商报文中包括源哈希值以及目的哈希值,所述源哈希值根据生成所述一阶段ISAKMP协商报文的设备的源地址和源端口号生成,所述目的哈希值根据所述一阶段ISAKMP协商报文对应的目的地址和目的端口号生成;
所述确定模块,还用于从所述一阶段ISAKMP协商报文的报文头中获取源地址、源端口号、目的地址以及目的端口号,并根据所述源地址和所述源端口号计算待检测源哈希值,根据所述目的地址和目的端口号计算待检测目的哈希值;若所述待检测源哈希值与所述源哈希值不同且所述待检测目的哈希值与所述目的哈希值相同,则确定所述一阶段ISAKMP协商报文满足所述预设条件。
9.一种IPSec节点,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器可执行所述计算机程序以实现权利要求1-6任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
CN202311742882.4A 2023-12-15 2023-12-15 Nat穿越的isakmp协商方法及相关装置 Pending CN117749471A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311742882.4A CN117749471A (zh) 2023-12-15 2023-12-15 Nat穿越的isakmp协商方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311742882.4A CN117749471A (zh) 2023-12-15 2023-12-15 Nat穿越的isakmp协商方法及相关装置

Publications (1)

Publication Number Publication Date
CN117749471A true CN117749471A (zh) 2024-03-22

Family

ID=90254019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311742882.4A Pending CN117749471A (zh) 2023-12-15 2023-12-15 Nat穿越的isakmp协商方法及相关装置

Country Status (1)

Country Link
CN (1) CN117749471A (zh)

Similar Documents

Publication Publication Date Title
JP3457645B2 (ja) ネットワーク・アドレス変換とプロトコル変換が存在する場合のパケット認証の方法
US7389412B2 (en) System and method for secure network roaming
JP4763560B2 (ja) 接続支援装置
US7903671B2 (en) Service for NAT traversal using IPSEC
USRE46113E1 (en) Technique for maintaining secure network connections
CN108769292B (zh) 报文数据处理方法及装置
US20040249974A1 (en) Secure virtual address realm
CN103188351B (zh) IPv6环境下IPSec VPN通信业务处理方法与系统
WO2006133740A1 (en) Host identity protocol method and apparatus
CN109981820B (zh) 一种报文转发方法及装置
US11888818B2 (en) Multi-access interface for internet protocol security
JP2016051921A (ja) 通信システム
Eronen et al. IKEv2 clarifications and implementation guidelines
WO2015127736A1 (zh) 一种用户隐私保护的方法、设备和系统
US20090097416A1 (en) Method and System for Addressing and Routing in Coded Communications Relationships
CN102904792B (zh) 业务承载的方法及路由器
CA2680599A1 (en) A method and system for automatically configuring an ipsec-based virtual private network
US20240114013A1 (en) Packet processing method, client end device, server end device, and computer-readable medium
CN117749471A (zh) Nat穿越的isakmp协商方法及相关装置
CN115567208A (zh) 网络会话数据流细粒度透明加解密方法及系统
JP2011054182A (ja) ディジタルバトンを使用するシステムおよび方法、メッセージを認証するためのファイアウォール、装置、および、コンピュータ読み取り可能な媒体
JP2018174550A (ja) 通信システム
Cisco Policy Management
Cisco Policy Management
JP2003115834A (ja) セキュリティアソシエーション切断/継続方法および通信システム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination