随着VPN技术的成熟以及在各个企业的广泛应用,VPN已经越来越多的被大家所熟悉,根据曾经做过的项目结合未来VPN技术发展的趋势,抛砖引玉的介绍一下VPN技术的几种具体应用。由于已经有很多文章具体的介绍过IPSEC这个协议,所以在本文中对协议的解释并非是重点,但看该文章前希望读者能对IPSEC协议以及工作原理有些必要的了解。
一般企业会采用较为简单的VPN技术,构造一个通过互联网将公司各分部连接起来的网络,具体来说,一般公司总部采用中高端路由器或者防火墙来作为VPN的中心端,其它分部采用较为低端路由器或防火墙作为vpn接入,一般采用IKE协议来协商出的IPSEC SA,而其中大部分将采用预共享密钥PRE-SHARE KEY的方式,有些有条件而且对安全要求比较高的公司,可能会?br> 捎弥な榈姆绞剑壳爸な橹写笾虏捎靡到绫曜嫉腛CSP(Online Certificate Status Protocol)协议和CISCO公司开发的SCEP(Simple Certificate Enrollment Protocal)协议来让vpn设备从CA中获取相关证书来进行设备认证,一般在IKE第一步中分为主模式和野蛮模式,两者区别简单来说,前者通过六条消息的发送来完成IKE SA的形成,而后者则只需要三条消息即可,目前个大厂家设备基本都可以支持上述两中模式,而大部分客户为了安全,基本上采用的是前者主模式,在主模式中采用预共享密钥和证书的区别在于第5条和第6条消息中载荷的不同,但最终达到的目的一样,既对双方的身份进行合法性的验证,不过在使用证书时,请注意证书服务器的安全和各个VPN设备于证书服务器的时间同步。在配置中我们一般都需要指定对方的公网IP地址,作为IPSEC PEER地址进行协商,然后指定一些加密算法和定义好需要加密的数据流,其它的配置我们在后面具体讨论。
用VPN线路作为自己主要线路的毕竟是少数,大部分公司会选择用DDN或者SDH作为自己主要线路,再申请条ISDN作为备分线路,如今大部分公司还会有一条ADSL或者其它的线路作为连接互联网的出口,为了节省开支,一些公司考虑使用在互联网上的VPN线路代替ISDN作为主线路的备份,所?br> 阅壳按蟛糠止居Ω檬荢DH或者其它线路作为主要线路,VPN线路作为备份线路,形成一个HUB AND SPKOEND的网络拓扑,公司的数据先通过SDH传输,如果主线路断掉的时候再启用VPN备份线路,众所周知,如果用静态路由要达到这种效果将十分困难,所以VPN面临着一个问题是如果用IPSEC来传输路由协议所特有的IP分组,因为它们大部分都是组播,甚至是广播,而IPSEC中的IKE v1协议对此支持不够,现在IKEv2版本的草案正在对组播进行讨论,有兴趣的朋友可以到IETF网站上查询,此时我们不得不想到IPSEC协议的先辈,GRE (Generic Routing Encapsulation)协议,它和ISPEC类似,是一个将各个类型的数据包封装到IP协议类型号为47的GRE的分组里的协议,但最大不同地方是,GRE可以封装不同协议的数据包,但对这些数据包不进行任何的加密和认证,而IPSEC协议只能封装IP数据包,目前有RFC1701,2784,2890对其进行了准确的定义。GRE的配置一般会起用一个TUNNEL接口,在该接口中你可以预先定义好该隧道的起点,也就是GRE数据包的源IP地址,以及隧道的终点,也就是GRE数据包的目的地址。其它GRE的信息,本文不加以过多的说明。
简单了解GRE工作原理后,我们一起看讨论GRE加VPN达到动态备份线路的解决方案,首先你需要在所有VPN 设备上先启用一个GRE隧道接口,将该隧道的源地址设为本端的公网IP地址,而目的地址为公司对端的公网IP地址,再给该隧道分配一个IP网段,然后运行动态路由协议,将隧道接口网段,本端局域网段和主线路出口的IP网段加于到路由协议发布中,这样GRE隧道接口将通过GRE隧道发送路由协商报文,而对端VPN设备通过GRE封装接收到路由协商报文后将与之建立正确的路由关系,最后各个VPN设备能通过路由协议互相交换和学习到路由信息,建立到达对方局域网的路由表。
再看看实际网络情况,正常情况下,VPN设备将走主线路到达对方的局域网段,如果主线路断掉后,VPN设备通过路由协议将自动的转换成通过GRE隧道出去,而所有要到达对方局域网的数据包,将通过GRE隧道接口加上源为本端公网IP地址,目的为对方公网IP地址的GRE头,通过GRE分组发送到对方VPN设备上去,从而实现动态备份的效果,说到这里,大家可能会问,上面所描述的和IPSEC毫无关系,完全是由GRE协议的功劳,的确是这样的,但是别忘了开头文章提到的GRE协议没有数据加密的功能,您放心让公司的数据通过互联网这个公网来进行传输吗?所以我们需要将所有GRE数据包再用IPSEC协议重新封装一次,这时您在互联网上面传输的数据将是加密后的报文。让我们再回忆回忆上面的数据包封装的过程。