站点到站点VPN负载平衡的问题探讨与建议

2017-07-12 13:27张天同
电脑知识与技术 2017年13期

张天同

摘要:为了在多个设备与多条链路之间平衡站点到站点VPN流量,使用了将带链路跟踪的静态路由注入到EIGRP协议的方法和使用不活动对等体检测(DeadPeerDetection)技术。测试结果表明,在多个设备与多条链路上这种方式的VPN负载平衡运行正常,对AH与ESP协议的抗重放服务没有影响。

关键词:IP安全;虚拟专用网;增强的内部网关路由协议;路由重分布;負载平衡;服务等级协议;链路跟踪

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)13-0230-03

1概述

许多企业有多个分部,要把多个分部的网络与总部的网络连通起来可以考虑:1、租用运营商的专线,这种方式线路带宽独享、安全稳定,但成本高;2、利用公共的IP网络比如Internet建立隧道来连接,也就是虚拟专用网(VPN)连接,这方式相对便宜,但由于公共网络中的带宽是共享的,所以带宽不稳定。如果选择第二种方式来连接,由于现在的Internet是IPv4与IPv6并存的,而IPv4是不安全的,所以用户一般在用隧道进行数据传输前还要对数据加密,接收方要做相应的解密工作。这样一来,两站点间的VPN性能受两个方面的影响:一是VPN设备的加密与解密性能;另一个是实际承载VPN隧道的公网链路带宽问题,单条链路不可靠。就如何建立高吞吐量的连接两站点的VPN系统,周振斌报道了一种高吞吐量的VPN系统。这一报道是利用一台前端机负责IKE SA与IPsec SA的建立与维护,并负责把安全策略数据与安全关联数据通过TCP协议同步到后方处理机群,还负责要加密与解密的数据包的调度工作。后方各个处理机负责加密与解密工作。由于这种方法安全关联sA在后方处理机群是共享的,所以无论所选择的封装协议是AH还是ESP,而ESP或AH本身并不提供共享SA的多个发送方之间的系列号协商机制,因而当多个发送方共享一个sA时,接收方势必收到AH或ESP协议相同系列号的数据包,所以这种方法在接收方就不能选择抗重放功能。RFC4302与RFC4303也不推荐多个发送方共享一个SA。此方法除了不具有抗重放的功能外,还有一个问题就是不能同时利用多条互联网接入链路,因为来自发送方的数据包都是由前端机接收的,再由前端机按某种负载平衡方式分流给后方处理机,也就是承载隧道的物理链路只能为一条,如果两个站点都存在多个线路接入,那就存在部分链路闲置问题。他的这种方法可以称之为前置式的负载平衡。本文将要提出另一种站点间IPsecVPN的负载平衡方法,可以称之为后置式的负载平衡:各个VPN设备独立地建立SA,每个VPN设备可以连接一条公网接入链路,每条链路都可用于承载隧道,两个站点都能选择抗重放功能,数据包的调度由后方的路由器来承担。

2方法

为方便说明,本文假定两个站点各有两个VPN设备(如图1),每个VPN设备都有独立的线路接入公网。但在实际应用中,每个站点最多可以有6个VPN设备(这是由于路由协议最多只支持6条路径负载平衡,当然如果每个站点超过6个VPN设备,可以采用两级路由的方式,这将支持36个VPN设备),每个设备可以使用单独的线路接入公网,也可以几台或全部设备共享一条接入线路,但如果是几台设备共享一条线路则要前置一台交换机,这些共享一条接入线路的VPN设备都连接到这台交换机,每个VPN设备都要占用一个IP地址。前方的VPN设备都通过一个交换机与内部路由器相连,路由器使用动态路由协议进行数据包的调度。

先说数据包的调度工作。下面都以站点A为例来说明。在站点A的每个VPN设备上都用服务等级协议(SLA)监视到站点B的两个VPN设备可达性,只要到对方的其中一台设备TP可达则添加到站点B内部网络的静态路由,并把这种路由注入进动态路由协议,再通过动态路由协议通告给后方的路由器,这样,路由器A在处理去往站点B内部网络的数据包的路由时,是根据前端的VPN设备能否到达站点B来决定前端的VPN设备是否作为路由的下一跳,比如VPN-A1能到达站点B的任何一台VPN设备则VPN-A1作为路由的下一跳,否则路由器不把它作为去往站点B内部网络下一跳。当存在多个下一跳时,路由器的动态路由协议的负载平衡方式可以选择基于每个包的方式也可以选择基于每个目的地址的方式。

再说前端VPN设备与对方建立VPN隧道与维护隧道的方式。当前端的VPN设备收到来自内部路由器转发过来的去往对方站点的数据包时,触发它与对方站点VPN设备建立VPN隧道。在配置VPN的时候把对方站点的每个VPN设备都设置为对等体,由于VPN设备在发起IKE协商时先用配置时排在第一位的对等体,为了避免都与对方站点的同一个VPN设备建立隧道,那么在本站点的不同的VPN设备上配置对等体时排列顺序不能一样,比如,在VPN-A1上配置对等体的顺序为VPN-B1、VPN-B2,则在VPN-A2上的顺序就应该为VPN-B2、VPN-B1,目的是充分利用公网链路和分摊加解密处理任务到各个VPN设备上。虽然一个VPN设备可以配置多个对等体,但同一时间只能与其中的一个建立隧道,配置多个对等体只是起备份的作用。隧道的维护:每个VPN设备都用IKE keepalive报文按一定的频率监视隧道对端设备是否为活动,如果不活动则关闭相应的隧道,并自动地与所配置的下一个对等体协商IKE连接。这种隧道的维护,其作用是避免用户VPN数据传输中断,因为当VPN设备能到达对方的其中的一个VPN设备时,它就能收到来自内部路由器转发过来的用户数据包,如果该VPN设备当前活动的隧道出现中断却不能自动地与对方的另一个VPN设备建立隧道的话,那么由路由器转发到这台VPN设备的用户数据将丢失。如果VPN设备不支持IKE keepalive报文,那么这个不活动的隧道只有等到IKE安全关联SA到期。这种方式的VPN负载平衡,发送方的每个VPN设备与接收方所建立的安全关联(sA)或者叫隧道都是独立的,由自己维护,与别的VPN设备无关,因而在接收方的每一个SA中都不会收到ESP或AH系列号相同的数据包,所以不影响对ESP或AH所提供的抗重放服务的使用。

3相关的主要配置

VPN设备应选择支持多个track的逻辑或,支持带track的静态路由,动态路由协议支持静态路由注入,支持IKE Kee-palive报文也就是支持不活动对等体的检测(DPD)功能。路由器只要求支持与VPN设备相应的动态路由协议。

以站点A的VPN-A1为例,基本的配置省略(VPN设备以思科的路由器2691为例):

配置动态路由协议并重分布静态路由,这里选择EIGRP的原因是考虑到它收敛快,并且还支持不等价路径的负载平衡,如果设备不支持也可以用OSPF协议:

配置带链路跟踪的到站点B内部网络的静态路由:

Ip route 192.168.2.0 255.255.255.0 ISP的网关地址track100//这条到站点B内部网络的路由能否进入路由表取决于track 100是UP的还是DOWN的,如果是UP的则出现于路由表,并且被分配进EIGRP进程,由EIGRP通告给内部路由器;track 100是track 10与track 20布尔逻辑或,也就是这两个只要一个是UP的则track 100是UP的,track 10是测试是否能到达VPN-B1,而track 20是测试能否到达VPN-B2,下面以配置track 10为例,省略track 20的配置

先配置SLA监视10,将用于track 10:

4结论

在GNS3上模拟测试,IKE策略为:加密算法为DES、完整性算法为MD5、密钥交换方式为DH组2、身份验证为预共享密钥;IPsec方式为:隧道模式ESP封装、加密算法DES、散列算法md5-hmac;默認开启抗重放检查;由于AH不提供数据机密性服务,没有测试AH。在以上条件下测试,该方法能够实现在多个VPN设备上分担VPN流量,当出现公网网络故障或者VPN设备故障,能自动把流量分配到剩下的正常的设备与链路上,当故障移除时,流量又重新在所有的设备与链路上分配(不过在切换过程中会出现间隔性的丢包现象,这是由于当链路或设备出现故障后,在路由器的路由表上并不立即表现出来;故障移除后,通过路由分配过来的数据包还没有隧道使用,隧道的建立要一定的时间)。由于各个VPN设备上的隧道都是独立的,因而不影响接收方启用抗重放功能。但这种方式的站点之间的VPN的负载平衡对VPN设备有一定的要求,要支持不活动对等体检测,要支持跟踪多个远程设备。