更新时间:2023-06-19 GMT+08:00

如何防止VPN连接出现中断情况?

VPN连接在正常的使用过程中会存在重协商情况,触发重协商的条件有IPsec SA的生命周期即将到期和VPN传输的流量超过20GB,重协商一般不造成连接中断。

大多数的连接中断都是因为两端的配置信息错误造成的,或公网异常导致重协商失败造成的。

常见的连接中断原因有:

  • 两端的ACL不匹配;
  • SA生命周期不匹配;
  • 用户侧数据中心未配置DPD;
  • VPN使用过程中修改了配置信息;
  • 数据超过MTU后导致报文分片;
  • 运营商网络抖动。

因此请在配置VPN时确保操作和配置,以进行连接状态保活:

  • 两端的子网配置互为镜像;
  • SA生命周期信息一致;
  • 用户侧数据中心网关开启DPD配置,探测次数不少于5次;
  • 连接过程中修改参数两侧同步修改;
  • 设置用户侧数据中心设备TCP MAX-MSS为1300;
  • 确保用户侧数据中心出口有足够的带宽可被VPN使用;
  • 确认VPN连接可被两端触发协商,开启用户侧数据中心设备的主动协商配置;
  • 两端子网进行长Ping操作(脚本内容如下)。
    #!/bin/sh
    host=$1
    if [ -z $host ]; then
        echo "Usage: `basename $0` [HOST]"
        exit 1
    fi
    log_name=$host".log"
    
    while :; do
        result=`ping -W 1 -c 1 $host | grep 'bytes from '`
        if [ $? -gt 0 ]; then
            echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $host is down"| tee -a $log_name
        else
            echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $host is ok -`echo $result | cut -d ':' -f 2`"| tee -a $log_name
        fi
    sleep 5 # avoid ping rain
    done
    #./ping.sh x.x.x.x >>/dev/null &
    1. 通过VI编辑器将以上脚本粘贴在ping.sh文本中。
    2. 给文件授权 chmod 777 ping.sh。
    3. 使用文件执行ping命令:

      ./ping.sh x.x.x.x >>/dev/null &

      x.x.x.x是您需要ping的远端目标IP。

    4. 执行ping命令后,后台运行并生成x.x.x.x.log文件,执行命令:

      tail -f x.x.x.x.log

      可以实时查看长ping结果。