IPSec VPN自动断开的问题
需要检查下DPD检测有没有开启,如果没有开启超过链接生存周期后就会自动断开,DPD检测相当于Keepalive机制。
需要检查下DPD检测有没有开启,如果没有开启超过链接生存周期后就会自动断开,DPD检测相当于Keepalive机制。
问题描述:
VPN建立链接后,过几分钟就会自己断开,相互ping不通对方。
问题分析:
原来服务端配置的dpdaction=clear,clear的意思是:如果DPD失败,清除相关的SA和SPD条目。而路由器当时是禁用了DPD检测,导致超过了dpddelay=60s。所以SA和SPD被清除,进而链接中断。
服务单的配置如下:
config setup
uniqueids=no
conn %default
keyexchange=ikev1
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
auto=add
closeaction=clear
dpddelay=60s
dpdtimeout=120s
inactivity=30m
ikelifetime=28800s
keyingtries=3
lifetime=1h
margintime=5m
dpdaction=clear
left=%any
leftsubnet=0.0.0.0/0
right=%any
conn IKE-BASE
authby=psk
aggressive=yes
left=%any
leftsubnet=0.0.0.0/0
leftid=xxxxxd
right=%any
rightid=jx
rightsubnet=1x.xxx.0.0/16
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
auto=add
leftauth=psk
rightauth=psk
DPD
当两个对等体之间采用IKE和IPSec进行通信时,对等体之间可能会由于路由问题、对等体重启或其他原因等导致连接断开。IKE协议本身没有提供对等体状态检测机制,一旦发生对等体不可达的情况,只能等待安全联盟的生存周期到期。生存周期到期之前,对等体之间的安全联盟将一直存在。安全联盟连接的对等体不可达将引发“黑洞”,导致数据流被丢弃。通常情况下,迫切需要识别和检测到这些“黑洞”,以便尽快的恢复IPSec通信。
Keepalive机制可以解决这个问题。Keepalive机制是指IKE对等体间通过周期性的交换Hello/Ack消息来告知对方自己处于活动状态。但是在设备上的IKE SA数量很大时,发送的Hello/Ack消息将会大量消耗设备的CPU资源,限制了这种机制的应用。
失效对等体检测DPD(Dead Peer Detect)是Keepalive机制的一种替代机制,它利用IPSec流量使对等体状态检测所需消息的数量达到最小化。DPD规定每个IKE peer的状态和对端状态是完全独立的,当IKE peer想知道对端是否在线时,随时请求,不需要等待间隔时间的到来。当peer之间有正常的IPSec流量时,证明对端肯定在线,此时没有必要去发送额外的消息探测对端是否在线。只有一段时间内没有流量发生,peer的活动状态才值得怀疑,那么本端在发送流量前应该发送一次DPD消息来检测对端的状态。
DPD有两种模式可以选择:interval和on-demand。
interval:表示DPD工作在轮询模式,在check-interval时间内,如果没有收到对端发过来的流量就会以check-interval为周期循环发送DPD检测报文。如果期间收到对端的响应报文,那么本次DPD流程结束,进入新的DPD检测周期。如果期间没有收到对端的响应报文,则会进行报文重传。重传结束后,如果依然没有收到响应则会删除本端SA表项,重新执行隧道新建流程。
on-demand:表示DPD工作在流量触发模式,如果本端没有加密流量发送,那么是不会发送DPD报文的,这是和轮询模式的最大区别。如果本端有加密流量需要发送,并且发送后在check-interval时间内没有收到对端发过来的流量,那么就会以check-interval为周期循环发送DPD检测报文。如果期间收到对端的响应报文,那么本次DPD流程结束,进入新的DPD检测周期。如果期间没有收到对端的响应报文,则会进行报文重传。重传结束后,如果依然没有收到响应则会删除本端SA表项,重新执行隧道新建流程。
配置全局IPsec SA生存时间和空闲超时功能
1.功能简介
此功能用来配置IPsec SA生存时间和空闲超时功能。对于IKE协商建立的IPsec SA,遵循以下原则:
·采用隧道两端设置的IPsec SA生存时间中较小者。
·可同时存在基于时间和基于流量两种方式的IPsec SA生存时间,只要到达指定的时间或指定的流量,IPsec SA就会老化。
2.配置步骤
(1) 进入系统视图。
system-view
(2)配置IPsec SA生存时间或者IPsec SA空闲超时时间。
配置IPsec SA生存时间。
ipsec sa global-duration { time-based seconds | traffic-based kilobytes }
缺省情况下,IPsec SA基于时间的生存时间为3600秒,基于流量的生存时间为1843200千字节。
配置IPsec SA的全局软超时缓冲参数。
ipsec sa global-soft-duration buffer { time-based seconds | traffic-based kilobytes }
缺省情况下,未配置全局软超时缓冲参数。
开启IPsec SA空闲超时功能,并配置IPsec SA空闲超时时间。
ipsec sa idle-time seconds
缺省情况下, IPsec SA空闲超时功能处于关闭状态。
参考链接如下:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)