IPsecVPN之斗转星移---IPsecVPN无缝切换
一、 创始背景:
在这个腥风血雨的网络江湖,为了防止信息泄露,我们选择了IPsec VPN,为了避免单点故障,我们选择了双机备份,纵然如此,网络依然不够强健,因为IPsec VPN双机只能进行冷备份。冷备份的弱势在于发生备份切换时,新的设备上线后由于没有SA,会导致大量IPsec重协商,业务中断,为此我们创立了IPsec斗转星移神功,实现了IPsec VPN双机热备。IPsec VPN双机热备实现后,双机之间进行热备份,主机实时将SA备份到备机上,发生主备切换后,不需要重新协商SA,实现业务的无缝切换,最大限度降低用户的损失。
二、 秘籍详解:
IPsec VPN双机热备属于功能热备,分为控制平面热备与数据平面热备。控制平面热备主要备份协商成功的SA信息,数据平面热备主要备份与转发相关的防重放序号和剩余流量生命周期。控制平面SA备份实际上是靠IKE任务在协商完成时触发的,数据平面靠IPsec报文处理触发。
目前ComwareV5的IPsec VPN双机热备支持各种动态方式SA的热备,包括普通接口业务,模板方式以及VTI(IPsec虚拟隧道接口)的热备。手工方式的SA备份需要在双机上执行相同的手工配置命令进行备份,因为手工SA只要配置正确就自动生成了。热备中支持防重放序号备份,防重放序号备份支持配置备份步长,支持剩余流量生命周期热备,支持查看双机热备信息统计记录,支持手工干预备份结果,支持SA按照主备状态查看。
三、 秘籍修炼:
如上图,总部两块防火墙插卡部署在出口交换机上,作为出口三层设备,分支为盒式防火墙,总部防火墙分别与分支建立IPsec,并相互备份。
配置步骤:
l 交换机配置
#与分支互联接口配置
interface GigabitEthernet0/0/26
port link-mode bridge
port access vlan 20
#防火墙插卡A内连口配置
interface Ten-GigabitEthernet1/0/1
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 10 20
#防火墙插卡B内联口配置
interface Ten-GigabitEthernet2/0/1
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 10 20
l 防火墙插卡配置
防火墙插卡A配置:
#开启防火墙IPsec双机热备功能
ipsec synchronization enable
#开启防火墙会话同步功能
session synchronization enable
#感兴趣流ACL
acl number 3001
rule 0 permit ip source 1.1.1.0 0.0.0.255 destination 3.1.1.0 0.0.0.255
#IPsec相关配置
ike peer peer
pre-shared-key cipher $c$3$SuQMjQyErPqT/xzqprkvpQVNDUU=
remote-address 2.1.1.20
local-address 2.1.1.50
#
ipsec transform-set a
encapsulation-mode tunnel
transform esp
esp authentication-algorithm md5
esp encryption-algorithm des
#
ipsec policy b 1 isakmp
security acl 3001
ike-peer peer
transform-set a
#内网VRRP配置
interface Vlan-interface10
ip address 1.1.1.100 255.255.255.0
vrrp vrid 1 virtual-ip 1.1.1.50
vrrp vrid 1 priority 110
vrrp vrid 1 preempt-mode timer delay 3
#出口VRRP配置
interface Vlan-interface20
ip address 2.1.1.100 255.255.255.0
vrrp vrid 2 virtual-ip 2.1.1.50
vrrp vrid 2 priority 110
vrrp vrid 2 preempt-mode timer delay 3
ipsec policy b
#与交换机互联接口
interface Ten-GigabitEthernet0/0
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 10 20
#安全区域配置
zone name Trust id 2
priority 85
import interface Vlan-interface10
import interface Vlan-interface20
#路由配置
ip route-static 3.1.1.0 255.255.255.0 2.1.1.20
#双机热备不支持非对称路径
dhbk enable backup-type symmetric-path
#双机热备备份接口配置
dhbk interface GigabitEthernet0/1 vlan 4094
#双机热备作为配置同步的主设备
dhbk configuration-backup master synchronization
防火墙B配置
#开启防火墙IPsec双机热备功能
ipsec synchronization enable
#开启防火墙会话同步功能
session synchronization enable
#感兴趣流ACL
acl number 3001
rule 0 permit ip source 1.1.1.0 0.0.0.255 destination 3.1.1.0 0.0.0.255
#IPsec相关配置
ike peer peer
pre-shared-key cipher $c$3$makX+l2F/OVVAlq4uXxNOSJ2ZFc=
remote-address 2.1.1.20
local-address 2.1.1.50
#
ipsec transform-set a
encapsulation-mode tunnel
transform esp
esp authentication-algorithm md5
esp encryption-algorithm des
#
ipsec policy b 1 isakmp
security acl 3001
ike-peer peer
transform-set a
#内网VRRP相关配置
interface Vlan-interface10
ip address 1.1.1.200 255.255.255.0
vrrp vrid 1 virtual-ip 1.1.1.50
vrrp vrid 1 priority 90
#出口VRRP配置
interface Vlan-interface20
ip address 2.1.1.200 255.255.255.0
vrrp vrid 2 virtual-ip 2.1.1.50
vrrp vrid 2 priority 90
ipsec policy b
#与交换机互联接口
interface Ten-GigabitEthernet0/0
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 10 20
#安全区域配置
zone name Untrust id 4
priority 5
import interface Vlan-interface10
import interface Vlan-interface20
#双机热备不支持非对称路径
dhbk enable backup-type symmetric-path
#双机热备备份接口
dhbk interface GigabitEthernet0/1 vlan 4094
#路由配置
ip route-static 3.1.1.0 255.255.255.0 2.1.1.20
防火墙C的配置:
#感兴趣流ACL
acl number 3001
rule 0 permit ip source 3.1.1.0 0.0.0.255 destination 1.1.1.0 0.0.0.255
#IPsec相关配置
ike peer peer
pre-shared-key cipher $c$3$zSyXumx8MvISlXAr5tOmBPqGXt8=
remote-address 2.1.1.50
local-address 2.1.1.20
#
ipsec transform-set a
encapsulation-mode tunnel
transform esp
esp authentication-algorithm md5
esp encryption-algorithm des
#
ipsec policy b 1 isakmp
security acl 3001
ike-peer peer
transform-set a
#感兴趣流IP配置
interface Vlan-interface10
ip address 3.1.1.50 255.255.255.0
#与总部互联IP配置
interface Vlan-interface20
ip address 2.1.1.20 255.255.255.0
ipsec policy b
#与总部互联接口配置
interface GigabitEthernet0/0
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 10 20
#安全域配置
zone name Untrust id 4
priority 5
import interface Vlan-interface10
import interface Vlan-interface20
#路由配置
ip route-static 1.1.1.0 255.255.255.0 2.1.1.50
l 结果
在SWA上执行ping –a 1.1.1.50 3.1.1.50,然后在主备两个防火墙插卡上查看
FWA:
[H3C]display ike sa
total phase-1 SAs: 1
connection-id peer flag phase doi status
----------------------------------------------------------------------------
1 2.1.1.20 RD|ST 1 IPSEC ACTIVE
3 2.1.1.20 RD|ST 2 IPSEC ACTIVE
flag meaning
RD--READY ST--STAYALIVE RL--REPLACED FD--FADING TO--TIMEOUT
FWB:
[H3C]display ike sa
total phase-1 SAs: 1
connection-id peer flag phase doi status
----------------------------------------------------------------------------
1 2.1.1.20 RD|ST 1 IPSEC STANDBY
3 2.1.1.20 RD|ST 2 IPSEC STANDBY
flag meaning
RD--READY ST--STAYALIVE RL--REPLACED FD--FADING TO—TIMEOUT
流量能够通,并且协商出来的SA具有主备状态,说明配置是正常的。
四、 修炼要诀:
l 主机延迟抢占时间尽可能长,这是为了能够保证全部SA有足量时间完成批备。备机的延迟抢占配置为0,在主机出故障后立即抢占。
l IPsec出入接口都要配置VRRP组,建议VRRP监视接口,有一个接口down,立即进行切换。
l 数据平面备份步长的意思是每处理多少个报文就同步一次防重放序号与剩余流量生命周期。这个步长越小越精确,但是性能下降的也越厉害。这个值建议在实际中多次调整找到最佳值。通过在策略试图,模板视图安全框架视图下命令synchronization anti-replay-interval inbound {0-1000} outbound {1000-100000}进行配置。
l 老的版本(包括B98分支和B108与B109早期版本)IPsec双机热备功能是默认打开的,新的版本已经修改为默认关闭了。如果实际使用中从老的版本升级,要注意修改配置。
五、 修炼须知
l 由于防重放检查只能在同一个SA上进行,因此无法支持非对称路径。
l 两个设备上接口创建顺序必须保持一致,否则会出现备份失败的问题。原因在于对于类似聚合口子接口这种逻辑接口,接口索引是依赖于创建顺序生成的,在热备时使用的是接口索引,如果创建顺序不相同,那么接口索引就不同,导致备份失败。
l 不要在双机环境下套跑单机业务(包括IPsec IPv6业务),这样会导致SA状态查询错误,因为单机业务SA地址不是VRRP虚地址,查询不到主备状态。
l 不要在双机环境中配置多个VRRP组与虚地址,这样可能会导致一个机器同时处于主备两种状态,逻辑变得更加复杂。
l 不要在同一个接口下配置多个VRRP虚地址,在VRRP主备切换时,VRRP模块只会上报第一个虚地址的主备切换事件,如果IPsec实际协商使用的是配置在后面的虚地址,那么将无法正确响应主备切换。
l IPsec与其它模块配合时,其它模块也必须支持双机热备。比如IPsec与L2TP配合就无法实现双机热备,因为L2TP不支持双机热备。
l 老的版本(B98和B108与B109早期版本)不要反复删除备SA,这会导致主机CPU占用率长期超高。
l 双机热备只能尽可能保证双机SA的同步,所以某些情况下可能出现双机上主备SA不一致,这时候可以通过在备机上执行reset ipsec/ike sa standby命令把备机SA全部删除后自动从主机再次全部同步一遍。
l 出现主备SA不一致时,可以通过在主备机上隐藏模式下执行如下命令查看双机热备通道同步信息,如果两个机器上的信息不对称,说明出现了同步失败的问题,这可能是无法分配内存或者备份链路收发包失败导致。
[H3C-hidecmd]display ike synchronization statistics
-----------------------------------------
IKE Synchronization Statistics Info
-----------------------------------------
Send IPC Packets : 0
Failed to Send IPC Packets : 0
Recv IPC Packets : 0
Message Enqueue : 0
Bundle Message : 0
Parse Message : 0
Send Delete Ike Sa Message : 0
Recv Delete Ike Sa Message : 0
Backup ISAKMP SA : 0
No memory to backup ISAKMP SA : 0
Failed to enque ISAKMP SA message : 0
Failed to create ISAKMP SA message: 0
Restore ISAKMP SA : 0
No memory to restore ISAKMP SA : 0
Invalid ISAKMP SA message : 0
Failed to init backup ISAKMP SA : 0
Send Delete IPsec Sa Message : 0
Recv Delete IPsec Sa Message : 0
Backup IPsec SA : 0
No memory to backup IPsec SA : 0
IPsec SA message failed to enque : 0
Failed to create IPsec SA message : 0
Restore IPsec SA : 0
No memory to restore IPsec SA : 0
Invalid IPsec SA message : 0
Failed to init backup IPsec SA : 0
SPI collision : 0