背景技术
IPSec(IP Security,IP层协议安全结构)协议是一个端到端的协议。传统的IPSec VPN一般使用静态配置的方式,通过指定保护的数据流和对端VPN设备地址来建立加密隧道,实现不同地点分支机构间跨越因特网的访问。
根据应用需求,利用IPSec可以组建成星型或网状网络拓扑的IPSec VPN网络。其中,最常用的IPSec VPN网络拓扑是星型结构拓扑,这和早期用户企业机构的分层管理拓扑结构是紧密相连的。企业机构总部作为IPSec VPN星型网络的中心节点,各个分支机构都和中心节点建立IPSec隧道,分支机构通过IPSec隧道访问企业机构总部局域网中的服务器。但是,随着企业机构管理拓扑的扁平化发展,越来越多的分支机构间需要相互访问,而且访问流量也越来越大。在传统IPSec VPN网络中,常用的解决办法是让各个分支机构间互访的数据,通过中心节点的IPSec VPN设备中转,来满足分支机构间的互访需求。这样,分支机构间互访的数据,就必须在中心节点的IPSec VPN设备经过解密,再加密然后才能到达被访问分支机构。这样的处理流程本身就加大了数据报文的时延,不能很好的满足现在企业常用的VOIP(Voice over Internet Protocol,IP语音)之类低时延要求的服务应用。而且随着分支机构节点间互访数据流量的加大,对中心节点的IPSec VPN设备性能和出口带宽的要求也越来越高。
传统IPSec VPN还有一种解决分支机构间互访需求的方法,就是建立网状IPSec VPN拓扑结构。这样分支机构间的相互访问,就无需经过中心节点的转发。要建立网状IPSec VPN拓扑,每个分支机构都需要和其他分支机构及中心节点建立IPSec隧道,对于具有n个分支机构的网络,就需要配置n(n-1)条隧道。这对部署大型IPSec VPN网络是个致命的问题。所以,网状IPSec VPN拓扑结构只适合于分支机构非常少的网络。同时,要想所有的分支机构间都建立IPSec隧道,也要求这些分支机构的接入必须有固定的公网地址(动态域名方法的出现,不强制要求有固定地址,但公网地址是必须的。)面对现在国内各个网络服务提供商提供的接入服务,似乎只有电信的ADSL(非对称数字用户环线)接入方式能够满足为每个接入用户提供一个公网地址。采用ADSL接入一般都是动态分配一个公网IP地址,而且一般接入带宽有限,上下行带宽不对称,不适合作为服务端接入。如果需要固定的公网地址和较高的带宽,费用则会成倍增长。为了满足用户不断发展的应用需求,相对与传统的静态IPSec VPN网络部署方案,众多的厂商纷纷推出了动态多点IPSec VPN网络解决方案。
动态IPSec VPN网络具有静态全网状IPSec VPN网络的优势,同时又没有静态全网状IPSec VPN配置管理复杂的缺点。简单说,一个动态IPSec VPN网络必须具备以下特点:
具有静态IPSec VPN网络保护数据安全的全部特性。
配置简单,不用在VPN设备上为每个IPSec远端做专门的配置,不需要预先知道IPSec VPN网络中所有远端设备公网的IP地址,以及保护数据流。
分支机构间能够直接进行受IPSec隧道保护的安全访问,而不必经过IPSec VPN网络中心的IPSec设备的转发。
部署简单,整个IPSec VPN网络有较好的伸缩性,能够自动适应远端IPSec设备的添加和删除。
能够按需动态建立分支机构间的IPSec隧道,当空闲时间超时后自动删除隧道。
在各种动态多点IPSec VPN网络解决方案中,最有代表性的就是利用多点通用路由封装协议、下一跳解析协议和动态路由协议配合IPSec实现动态IPSec VPN方案。该方案使用下一跳解析协议来实现对端设备公网IP地址的获得,使用通用路由封装协议和动态路由协议来得到获保护数据流的信息。该方案具有上述动态IPSec VPN所应具备的特点,能够较好的满足一部分客户需要。但该方案要求所有的IPSec设备接入都必须使用公网地址,不能够支持NAT(网络地址转换)接入。同时不能象静态IPSec VPN网络一样根据高层协议、端口号等信息精确地控制用户保护的网络资源,安全性有所降低。该方案需要配置、维护多种协议来实现IPSec VPN网络的动态连接,这样就要求用户有较高的技术能力来维护管理该网络。
发明内容
本发明所要解决的技术问题,就是针对现有技术的上述缺点,提供一种的虚拟专用网动态连接方法,使用IPSec和BGP协议(边界网关协议)结合,实现动态IPSec VPN网络。
本发明解决所述技术问题,采用的技术方案是,虚拟专用网动态连接方法,包括以下步骤:
a.在中心节点的IPSec设备和分支机构的IPSec设备间配置静态IPSec隧道;
b.中心节点的IPSec设备和分支机构的IPSec设备通过所述静态IPSec隧道,建立BGP邻接关系;
c.中心节点的IPSec设备自动在已建立BGP邻接关系的BGP邻居上,添加路由映射策略,设置路由信息的扩展团体属性值;
d.IPSec VPN网络中的IPSec设备通过BGP路由协议,通告本地需要被保护的数据的IP地址/IP网段给其它IPSec设备;
e.中心节点的IPSec设备通过BGP的路由反射器功能,将分支机构需要保护的数据的IP地址/IP网段信息分发到其他分支机构的IPSec设备上;
f.分支机构间的IPSec设备相互学习其他分支机构需要保护的数据的IP地址/IP网段信息后,从扩展团体属性中获得对端公网地址,然后协商建立IPSec隧道。
本发明的有益效果是,占用网络资源少,成本低。具有配置简单,部署灵活,管理方便,安全性高的特点。
具体实施方式
下面结合附图及实施例,详细描述本发明的技术方案。
本发明使用BGP动态路由协议,以BGP路由更新的方式,将本端需要保护的资源信息,发送给远端VPN设备。远端VPN设备根据收到的BGP路由更新中的下一跳地址,和BGP路由的扩展团体属性来获得本端VPN设备的合法地址。IPSec则负责根据学习到的信息自动建立相关IPSec隧道。
本发明的虚拟专用网连接方法,包括以下步骤:
a.在中心节点的IPSec设备和分支机构的IPSec设备间配置静态IPSec隧道;
b.中心节点的IPSec设备和分支机构的IPSec设备通过所述静态IPSec隧道,建立BGP邻接关系;
c.中心节点的IPSec设备自动在已建立BGP邻接关系的BGP邻居上,添加路由映射策略,设置路由信息的扩展团体属性值;
d.IPSec VPN网络中的IPSec设备通过BGP路由协议,通告本地需要被保护的数据的IP地址/IP网段给其它IPSec设备;
e.中心节点的IPSec设备通过BGP的路由反射器功能,将分支机构需要保护的数据的IP地址/IP网段信息分发到其他分支机构的IPSec设备上;
f.分支机构间的IPSec设备相互学习其他分支机构需要保护的数据的IP地址/IP网段信息后,从扩展团体属性中获得对端公网地址,然后协商建立IPSec隧道。
进一步的,所述步骤b中,中心节点的IPSec设备和分支机构的IPSec设备通过所述静态IPSec隧道,使用IPSec设备的环回接口IP地址,建立BGP邻接关系。
具体的,步骤c中,对于与公网连接的分支机构,所述扩展团体属性值为各自的公网IP地址;对于通过NAT与公网连接的分支机构,所述扩展团体属性值为中心节点设备的公网IP地址。
进一步的,所述步骤e中,中心节点的IPSec设备通过BGP的路由反射器功能,将分支机构需要保护的数据的IP地址/IP网段信息分发到其他分支机构的IPSec设备上,并指定保护的协议和端口号。
本发明的技术方案,因为要尽量降低用户接入条件的限制,所以要考虑各种网络接入方式,这样就不可避免的存在NAT穿越问题。而BGP是无法穿越NAT的,需要使用IPSec隧道保护BGP报文的传输。BGP协议支持指定报文发送的源接口,利用这个特性,直接使用各个分支机构和中心节点的IPSec设备的环回接口,作为BGP报文的源接口。对环回接口的IP地址分配可以完全由用户规划,这样对配置BGP通信的静态保护数据流,也提供了非常大的方便。在分支机构的IPSec设备和中心节点的IPSec设备间,保护BGP通信的IPSec隧道建立后,BGP协议进行协商,建立分支机构的IPSec设备和中心节点的IPSec设备间的BGP邻接关系。通过BGP动态路由协议,中心节点的IPSec设备以路由更新通告的方式,学习到各个分支机构要保护的IP地址信息(对应现在的静态IPSec的保护数据流来说,此处学习到的IP地址信息为保护数据流的目的地址)。利用BGP协议支持CIDR(无类域间路由)的特性,可以很精确的控制被保护数据流地址的学习。利用BGP路由的团体属性,可以更加精确的指定需要保护的协议和端口号。配置中心节点的IPSec设备为BGP协议路由反射器,将从其它分支机构的IPSec设备学习到的要IPSec隧道保护的资源信息,以路由更新通告的方式分发给下面的分支机构的IPSec设备。同时,利用BGP自身的扩展团体属性,在将需要保护的IP地址发送给分支机构的IPSec设备的同时,分支机构的IPSec设备的公网地址,由中心节点添加到扩展团体属性中。这样,同一IPSECVPN网络的IPSec设备,就可以学习到其他分支机构需要IPSec隧道保护的IP地址/IP网段和IPSec设备的公网地址。然后由各个分支机构的IPSec设备,按照访问数据的目的地址来和对应的IPSec设备公网地址进行IPSec协商,建立IPSec隧道,保证用户服务的访问和安全性。在IPSec隧道建立过程中,由IPSec协议自动完成了NAT的检测。对处在NAT后面的分支机构的IPSec设备,中心节点的IPSec设备在向其它分支机构发送该节点的BGP路由更新信息时,扩展团体属性中填入的公网IP地址为中心节点的IPSec设备的IP地址。其他分支机构节点的IPSec设备,发现对端处于NAT后面,而自身又不是在NAT后面时,就不会主动发起隧道协商,而是等待处于NAT后面的分支机构发起隧道协商。如果两端都处于NAT后面,分支机构的IPSec设备就会主动和中心节点的IPSec设备协商到对端分支机构的隧道,另一端收到路由信息后,也会同样处理。这样就可以按照星型网络的方式,通过中心节点的转发来完成连接。使用这种方式增加了IPSec访问的灵活性,很大程度的降低了对用户部署动态IPSecVPN的接入要求。
本发明中使用的BGP路由信息属性作用:
NLRI(网络层可达信息):在本发明中,该属性携带分支机构发布的保护数据的IP地址/IP网段。对于路由接收者,该信息即对应于静态IPSec的目的地址/网段。而对于发布者,该信息即对应于静态IPSec的源地址/源网段。
下一跳地址:因为在建立BGP邻接时,使用的是每台IPSec设备的环回接口地址,所以每条路由信息的下一跳就是发布该路由信息的IPSec设备的环回接口地址。环回接口地址是由用户自行规划的,在网络中它唯一代表了每台IPSec设备(每个分支机构)。所以建议分配的环回接口地址为主机地址。
标准团体属性和扩展团体属性:BGP路由协议支持两种团体属性,一种是标准团体属性,一种是扩展团体属性。标准团体属性中一些值专用于控制路由的传播。在本发明中,使用标准团体属性的格式可以为数字,利用该属性来定义需要保护的数据流的协议类型,如保护的是TCP协议,则指定该值为259。对需要保护的资源范围的精确控制,能够大大提高网络的安全性。扩展团体属性的路由目标属性和路由源属性支持两种格式的值。一种为ASN:NN;一种为IP地址:NN。在本发明中,利用路由目标属性的IP地址:NN格式,来携带IPSec设备的公网地址信息。后面的NN编码作为扩展定义,用来实现安全隔离功能。这样能够更加精确的控制IPSec VPN网络中的访问权限,做到同一IPSEC VPN网络中不同权限间的相互隔离。利用路由源属性中的ASN:NN格式来定义协议端口号。
标准团体属性值对应协议类型如下:
<0-255> An IP protocol number
256 ICMP
257 IGMP
258 IP
259 TCP
260 UDP
扩展团体属性RT属性值中公网IP地址填入规则:
分支机构的IPSec设备不处于NAT后面,则中心节点的IPSec设备在分发由该分支机构的IPSec设备发布的路由信息时,扩展团体属性中填入的IP地址为分支机构的IPSec设备自身的公网IP地址。分支机构的IPSec设备处于NAT后面,则中心节点的IPSec设备在分发由该分支机构的IPSec设备发布的路由信息时,扩展团体属性中填入的IP地址为中心节点的IPSec设备的公网IP地址。
对BGP路由信息的判断规则:
检查BGP路由信息中的扩展团体属性值,如果和中心节点的IPSec设备的IP地址相同,而且该路由的下一跳为非中心节点的环回接口IP地址,则判断发布该条路由信息的分支机构的IPSec设备处于NAT后。
检查BGP路由信息中的扩展团体属性值,如果和中心节点的IPSec设备的IP地址相同,而且该路由的下一跳为中心节点的环回接口地址。则判断该条路由信息由中心节点发布。
检查BGP路由信息中的扩展团体属性值,如果和中心节点的IPSec设备的IP地址不同,则认为发布该条路由的分支机构是直接连接到公网的。
检查BGP路由信息中的扩展团体属性值,如果为空,而且该路由的下一跳为0.0.0.0则是由本地发布的路由信息。
使用BGP动态路由,配合IPSec协议实现的动态IPSec VPN网络,利用BGP路由协议本身的灵活性,保证了网络拓扑伸缩的灵活性。支持现有多种接入方式,支持NAT穿越,只需要有一个接入点的IPSec设备有公网IP地址,即可组建动态IPSec VPN网络。其它的接入点可以使用任意的接入方式,只要能够访问公网,即可加入该动态IPSec VPN网络。而且,本发明具有较高的网络访问控制能力和安全性。使用路由团体属性值,指定需要保护的通信协议、端口号,实现保护数据流的精确控制;使用路由团体扩展属性,实现安全隔离功能,即可以实现同一IPSec VPN网络中,不同访问权限不能互访。
实施例
参见图1,共有三个分支机构和一个中心节点,需要建立动态IPSec VPN。分支机构间需要相互访问,其中分支机构C的网络服务提供商提供的接入IP地址为网络服务提供商自己的内网地址,是私有IP地址,访问因特网(即公网)需要通过NAT。其它两个分支机构A、B的接入方式都获得动态的公网IP地址。
两点间要建立IPSec隧道,除了协商参数,认证材料(预共享密钥/证书)外,最重要的就是对端IPSec设备的公网地址和保护数据流的学习。本发明主要是利用BGP路由协议,使用单播、且邻居间不需要直接相连、不需要支持IP地址:NN格式的扩展团体属性的特点,让各个分支机构及中心节点的IPSec设备,动态地学习到要保护的数据流和对端的IPSec设备的公网地址。与其它方案一样,在整个IPSecVPN网络中至少需要有一个IPSec设备具有固定的公网地址。
下面是本例的实施过程:
首先确定本地需要保护的IP地址/IP网段,然后学习到需要建立IPSec隧道的对端IPSec设备公网IP地址和对端需要保护的IP地址/IP网段,同时判断NAT的存在,并做特殊处理。
按照整个网络的规划,给所有的IPSec设备分配一个环回接口地址(建议使用主机地址)。在中心节点和各个分支机构的IPSec设备上配置BGP,使用环回接口地址作为邻居地址和协商/更新报文的地址(可以看做指定环回接口地址作为BGP地址),并且配置向邻居发送BGP的扩展团体属性,用来在路由分发过程中携带对应的IPSec设备公网地址。分支机构的IPSec设备上只需配置中心节点的IPSec设备为邻居,而中心节点的IPSec设备需要接受每个分支机构的IPSec设备为邻居。在BGP中,使用网络命令来发布本地受保护的IP地址/IP网段,对照静态IPSec VPN,就是保护数据流的源地址/源网段。在BGP邻居建立起来后,通过网络命令发布的IP地址/IP网段,由BGP进程按照普通路由一样发送到中心节点或分支机构的IPSec设备,作为学习到该路由信息IPSec设备的保护数据流目的地址。为了让中心节点的IPSec设备将从分支机构学习到的路由信息,分发到其他分支机构的IPSec设备,中心节点的IPSec设备需要配置为路由反射器,需要配置每个分支机构的IPSec设备为路由反射器客户端。这一过程,主要就是确定本地需要通过IPSec隧道转发的数据报文的源、目的IP地址/IP网段。
建立保护BGP通信的IPSec隧道。在中心节点的IPSec设备上配置静态IPSec隧道,保护数据流源地址为中心节点IPSec设备的环回接口IP地址:1.1.1.1,目的地址为分支机构A、B、C的IPSec设备的环回接口IP地址网段:1.1.1.0/24。分支机构A、B、C的IPSec设备配置对应保护数据流为:源地址为本地的IPSec设备的环回接口地址,目的地址为中心节点的环回接口地址。根据IPSec建立开始阶段的NAT探测,中心节点的IPSec设备会发现分支机构C的IPSec设备处于NAT后面,其他分支机构的IPSec设备都具有公网IP地址。于是中心节点的IPSec设备,主动根据保护BGP通信隧道的对端环回接口地址,在BGP配置中查找,在分支机构A、B、C对应的BGP邻居配置上添加in方向的路由映射,在路由映射中设置扩展团体属性。对于分支机构A和分支机构B,扩展团体属性值分别为各自的IPSec设备公网IP地址;对于分支机构C,扩展团体属性值为中心节点的IPSec设备的公网IP地址。因为是使用环回接口作为BGP的邻居地址和协商更新报文地址,所以BGP邻接关系只能在保护它通信的IPSec隧道建立后才能建立。这样的先后顺序就保证了中心节点IPSec设置路由映射的及时性。BGP邻接关系建立后,各个分支机构的IPSec设备相互学习到其他分支机构需要保护IP地址/IP网段信息,分支机构A或B的IPSec设备根据学习到的BGP路由中对应的团体扩展属性中的IP地址,可以设定规则由环回接口地址大的一方主动发起建立保护对应数据流的IPSec隧道。对于处于NAT后面的分支机构C,分支机构A或B的IPSec设备接收到关于分支机构C的保护数据流信息后,检查到对端的公网地址和中心节点的IPSec设备地址是一样的,而且对应的BGP路由下一跳也不是中心节点的IPSec设备的环回接口地址,并且在协商保护BGP的IPSec隧道过程中,可以知道自己不是在NAT后面的,则不会主动建立IPSec隧道,而是等待分支机构C的IPSec设备来主动建立隧道。当分支机构C的IPSec设备通过BGP接收到对应A或B分支机构的保护地址信息,而且发现对应的扩展团体属性中的IP地址不是中心节点端的IP地址,那么分支机构C的IPSec设备就主动将扩展属性中的IP地址作为对端地址,建立IPSec隧道。假设又存在一个在NAT后的分支机构D,此时,分支机构C或D的IPSec设备都收到了对方的保护地址信息。检查扩展属性和BGP路由下一跳地址,确定对方在NAT后面时,因为通过IPSec协议的NAT检测功能,就可以获得自己是否在NAT后面的信息,此时又知道对端在NAT后面,那么就和中心节点的IPSec设备建立对应数据流的IPSec隧道。同样,中心节点的IPSec设备也需要对处于NAT后面的分支机构做特殊处理,以保证IPSec隧道建立,通过中心节点的IPSec设备转发来实现分支机构相互访问。至此,IPSec隧道建立完毕。