Its been fixed now in strongswan 5.3. Was more curious if anyone though
isakmpd made something wrong here :)

Best regards
Martin

On Fri, Apr 3, 2015 at 10:38 PM, Atanas Vladimirov <[email protected]> wrote:

> On 20.03.2015 16:17, Martin Larsson wrote:
>
>> Hello!
>>
>> I've been struggeling alot lately with isakmpd net to net to a strongswan
>> (nat-t) client.
>> Isakmpd tells strongswan to delete the SA after a while.
>>
>> I've gotten great help from one of the strongswan developers which came up
>> with this.
>>
>> isakmpd sends deletes for expired IKE_SAs over the latest active SA with a
>> specific peer. In strongSwan there is currently no check that the SPIs in
>> the DELETE payload with protocol ISAKMP actually matches those of the
>> current SA, it simply assumes a DELETE on the current SA is to delete that
>> SA.
>>
>> But according to RFC 2408 what isakmpd does is not really compliant:
>> "Deletion which is concerned with an ISAKMP SA will contain a Protocol-Id
>> of ISAKMP and the SPIs are the initiator and responder cookies from the
>> ISAKMP Header.", so no other SPIs are allowed than those of the current
>> SA.
>>
>> Any ideas?
>>
>> Best regards
>> Martin
>>
>
> Hi,
> I have the same problem (if I understand you correctly). After the
> configured ike lifetime expires strongSwan delete the SA and no trafic flow
> between two networks. Only  `ipsec down $CONN_NAME; ipsec up $CONN_NAME;'
> restore the connection. As a workaround I'm running a script (on OpenWRT)
> which check the other side of the tunnel.
>
> StrongSwan on OpenWRT BarrierBreaker 14.07:
> root@go:~# uname -a
> Linux go 3.10.49 #1 Sun Mar 8 16:52:48 EET 2015 mips GNU/Linux
> root@go:~# ipsec version
> Linux strongSwan U5.2.2/K3.10.49
> Institute for Internet Technologies and Applications
> University of Applied Sciences Rapperswil, Switzerland
> See 'ipsec --copyright' for copyright information.
>
> root@go:~# cat /etc/ipsec.conf
> # ipsec.conf - strongSwan IPsec configuration file
>
> # basic configuration
>
> config setup
>
> conn %default
>         keyingtries=%forever
>         dpdaction=none
>         auto=start
>         authby=pubkey
>
> conn example.com
>         keyexchange=ikev1
>         # phase 1 parameters
>         ike=aes-sha-modp1024!
>         ikelifetime=3h
>         # peers
>         left=%defaultroute
>         leftsubnet=172.16.1.0/24
>         leftrsasigkey=/etc/ipsec.d/public/local.pub
>         [email protected]
>         leftfirewall=yes
>         right=example.com
>         rightsubnet=192.168.1.0/27
>         rightrsasigkey=/etc/ipsec.d/public/ns.example.com
>         # phase 2
>         esp=aes-sha-modp1024!
>         lifetime=1h
>
> root@go:~# cat /usr/sbin/monitor-ipsec.sh
> #!/bin/ash
>
> main()
> {
>     local SLEEP_SECONDS=60
>     while [[ 0 == 0 ]]; do
>         monitor_vpn_ip_port example.com 192.168.1.1 22
>         sleep $SLEEP_SECONDS
>     done
> }
>
> monitor_vpn_ip_port()
> {
>     local CONN_NAME=$1
>     local IP=$2
>     local PORT=$3
>
>     nc -w 10 -z $IP $PORT || ( \
>         echo "$IP $PORT did not respond, resetting connection $CONN_NAME";
> \
>         ipsec down $CONN_NAME; ipsec up $CONN_NAME; )
> }
>
> # now start running the script by calling main() with all parameters.
> main $*
>
> ####################################################
>
> OpenBSD site:
> [ns]~$ sudo cat /etc/ipsec.conf.go
>
> local_network="192.168.1.0/27"
> remote_network="172.16.1.0/24"
> go_ip="go.example.com"
>
> # Between the networks
> ike passive esp from $local_network to $remote_network peer $go_ip\
>         main auth hmac-sha enc aes group modp1024 lifetime 3h \
>         quick auth hmac-sha enc aes group modp1024 lifetime 1h \
>         srcid example.com dstid go.example.com
>
> dmesg:
> OpenBSD 5.7-current (GENERIC.MP) #903: Thu Apr  2 13:47:34 MDT 2015
>     [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> real mem = 6416760832 (6119MB)
> avail mem = 6218432512 (5930MB)
> mpath0 at root
> ....

Reply via email to