需要检查下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空闲超时功能处于关闭状态。

参考链接如下: 

ipsec vpn 自动断开如何解决 - 知了社区

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐