SWAN之ikev2协议dpd-hold配置测试

IPSecurity 专栏收录该内容
89 篇文章 4 订阅

本测试主要验证远程用户carol和网关moon建立连接之后,由于链路问题,导致DPD(Dead Peer Detection)检测报文没有响应,之后链路恢复,重新建立连接的功能。本次测试拓扑如下:

在这里插入图片描述

carol主机配置

carol的配置文件:ikev2/dpd-hold/hosts/carol/etc/ipsec.conf,内容如下,keyexchange字段为ikev2,表示采用IKEv2协议。left字段的值为carol主机的IP地址。right字段指明对端为moon网关,但是rightid字段为moon的ID信息:moon@strongswan.org。rightsubnet字段指明对端的子网为:10.1.0.0/16。

需要注意的是此处指定了dpdaction的值为hold,即dpd检查失败之后,不删除连接。字段dpddelay的值为10秒,指定dpd检测间隔。

config setup

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev2
        dpdaction=hold
        dpddelay=10

conn home
        left=PH_IP_CAROL
        leftcert=carolCert.pem
        leftid=carol@strongswan.org
        leftfirewall=yes
        right=PH_IP_MOON
        rightid=@moon.strongswan.org
        rightsubnet=10.1.0.0/16
        auto=add

moon网关的配置文件:ikev2/double-nat-net/hosts/moon/etc/ipsec.conf,内容如下,基本内容与alice主机相同。但是right字段的值为%any,表明接收任何主机发来的连接,此配置不能主动发起连接,需要等待carol的连接请求。需要注意的是此处指定了dpdaction的值为clear,即dpd检查失败之后,清除连接。字段dpddelay的值为10秒,指定dpd检测间隔。

config setup

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev2
        dpdaction=clear
        dpddelay=10

conn rw
        left=PH_IP_MOON
        leftcert=moonCert.pem
        leftid=@moon.strongswan.org
        leftsubnet=10.1.0.0/16
        right=%any
        rightid=carol@strongswan.org
        auto=add

测试准备阶段

配置文件:ikev2/dpd-hold/pretest.dat,内容为ipsec连接的启动语句。

moon::ipsec start
carol::ipsec start
moon::expect-connection rw
carol::expect-connection home
carol::ipsec up home

测试阶段

配置文件:ikev2/dpd-hold/evaltest.dat。以下测试语句检查在carol主机和moon网关上隧道建立成功。随后,在moon网关上丢弃所有carol的报文,并在carol主机上丢弃所有moon的所有报文,模拟链路断开的情况。之后,延时13秒(超出dpd配置的10秒间隔),在carol主机的strongswan进程日志中,确认DPD功能生效。

carol::ipsec status 2> /dev/null::home.*INSTALLED, TUNNEL::YES
moon:: ipsec status 2> /dev/null::rw.*INSTALLED, TUNNEL::YES
moon:: iptables -A INPUT -i eth0 -s PH_IP_CAROL -j DROP::no output expected::NO
carol::iptables -A INPUT -i eth0 -s PH_IP_MOON -j DROP::no output expected::NO
carol::sleep 13::no output expected::NO
carol::cat /var/log/daemon.log::sending DPD request::YES
carol::cat /var/log/daemon.log::retransmit.*of request::YES
carol::cat /var/log/daemon.log::giving up after.*retransmits::YES

以下测试语句,删除carol主机和moon网关上丢弃报文的iptables规则,即恢复链路。在carol主机上执行ping主机alice的操作,触发连接的再次建立。

carol::iptables -D INPUT -i eth0 -s PH_IP_MOON -j DROP::no output expected::NO
moon:: iptables -D INPUT -i eth0 -s PH_IP_CAROL -j DROP::no output expected::NO
carol::ping -c 1 -W 1 PH_IP_ALICE::trigger route::NO
carol::sleep 1::no output expected::NO
carol::ipsec status 2> /dev/null::home.*INSTALLED, TUNNEL::YES
moon:: ipsec status 2> /dev/null::rw.*INSTALLED, TUNNEL::YES

主机carol上strongswan进程的日志信息如下,在发送了3个DPD报文之后连接断开。当以上的ping测试命令执行时,触发strongswan的acquire任务,开始重新建立连接。

carol charon: 07[IKE] sending DPD request
carol charon: 07[ENC] generating INFORMATIONAL request 2 [ ]
carol charon: 07[NET] sending packet: from 192.168.0.100[4500] to 192.168.0.1[4500] (80 bytes)
carol charon: 10[IKE] retransmit 1 of request with message ID 2
carol charon: 10[NET] sending packet: from 192.168.0.100[4500] to 192.168.0.1[4500] (80 bytes)
carol charon: 11[IKE] retransmit 2 of request with message ID 2
carol charon: 11[NET] sending packet: from 192.168.0.100[4500] to 192.168.0.1[4500] (80 bytes)
carol charon: 12[IKE] giving up after 2 retransmits
carol charon: 14[KNL] creating acquire job for policy 192.168.0.100/32[udp/60699] === 10.1.0.10/32[udp/1025] with reqid {1}
carol charon: 14[IKE] initiating IKE_SA home[2] to 192.168.0.1
carol charon: 14[ENC] generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]

如下图所示,moon网关传输了3个INFORMATIONAL报文,MID为0。carol主机也传输了3个INFORMATIONAL报文,消息ID为2。此时连接断开,第一个DPD报文在最后一个报文发送10秒之后发出。DPD失效之后,carol主机发送IKE_SA_INIT报文开始重新建立连接。

在这里插入图片描述

strongswan测试版本: 5.8.1

END

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值