Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Jan 2006 18:10:18 +0200
From:      Oleg Tarasov <subscriber@osk.com.ua>
To:        freebsd-net@freebsd.org
Subject:   Duplicate SAD entries lead to ESP tunnel malfunction
Message-ID:  <83462512.20060126181018@osk.com.ua>

next in thread | raw e-mail | index | archive | help
Hello,

I run FreeBSD 6.0 and installed latest ported version of ipsec-tools.

A had to create two IPSEC tunnels to two different hosts. On one host
runs FreeBSD too, on another host is located hardware router DI-804HV
(D-Link). That router is supposed to support IPSEC tunnelling and
seems to work fine.

When IPSEC tunnel is established two SAD entries are created - one per
direction. This is normal functioning.

In my case sometimes there are two more created. Some connection
problem occurs causing both sides to reestablish tunnel. Both sides
report that tunnel is established successfully but no packets can pass
through tunnel. Dumping SAD entries using
 setkey -D
shows that there are two SAD entries for both address pairs.

How can this happen anyway?

Flushing SAD entries helps tunnel to return its functionality - after
this tunnel is established successfully and works properly.

=======================================================================
central# setkey -D
172.21.0.222 172.21.0.224
        esp mode=tunnel spi=230854012(0x0dc28d7c) reqid=0(0x00000000)
        E: 3des-cbc  dabdc3b8 ea8f9519 c755b2da 57d348f5 a319f839 555e5759
        A: hmac-md5  8139183d b8c06aea 65ac6a72 4c93f714
        seq=0x00003c46 replay=4 flags=0x00000000 state=mature
        created: Jan 26 17:58:29 2006   current: Jan 26 18:58:41 2006
        diff: 3612(s)   hard: 28800(s)  soft: 23040(s)
        last: Jan 26 18:58:35 2006      hard: 0(s)      soft: 0(s)
        current: 2689960(bytes) hard: 0(bytes)  soft: 0(bytes)
        allocated: 15430        hard: 0 soft: 0
        sadb_seq=5 pid=5501 refcnt=2
172.21.0.224 172.21.0.222
        esp mode=tunnel spi=192143459(0x0b73e063) reqid=0(0x00000000)
        E: 3des-cbc  5b75d9dc b2cba7c5 be08b863 e11e3c79 b993f636 d76b4437
        A: hmac-md5  69759773 cfeb1fe1 e0dac25f 5360851e
        seq=0x000030fd replay=4 flags=0x00000000 state=mature
        created: Jan 26 17:58:29 2006   current: Jan 26 18:58:41 2006
        diff: 3612(s)   hard: 28800(s)  soft: 23040(s)
        last: Jan 26 18:58:35 2006      hard: 0(s)      soft: 0(s)
        current: 1781854(bytes) hard: 0(bytes)  soft: 0(bytes)
        allocated: 12541        hard: 0 soft: 0
        sadb_seq=4 pid=5501 refcnt=1
172.21.0.222 172.21.0.225
        esp mode=tunnel spi=1241514000(0x4a000010) reqid=0(0x00000000)
        E: 3des-cbc  71061694 cf98e926 fed56e44 ca6437fd d681a362 36342bd0
        A: hmac-md5  8c62152f 272b19d5 dcda82db 4772d15c
        seq=0x00000000 replay=4 flags=0x00000000 state=mature
        created: Jan 26 18:49:30 2006   current: Jan 26 18:58:41 2006
        diff: 551(s)    hard: 28800(s)  soft: 23040(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=3 pid=5501 refcnt=1
172.21.0.222 172.21.0.225
        esp mode=tunnel spi=1207959568(0x48000010) reqid=0(0x00000000)
        E: 3des-cbc  17aab273 2df4dca8 7871aa0c b3342a68 35221d02 bbbabbf6
        A: hmac-md5  4f708fc1 1762371d 95e55918 1a167a31
        seq=0x000000a7 replay=4 flags=0x00000000 state=mature
        created: Jan 26 17:58:03 2006   current: Jan 26 18:58:41 2006
        diff: 3638(s)   hard: 28800(s)  soft: 23040(s)
        last: Jan 26 18:58:30 2006      hard: 0(s)      soft: 0(s)
        current: 18656(bytes)   hard: 0(bytes)  soft: 0(bytes)
        allocated: 167  hard: 0 soft: 0
        sadb_seq=2 pid=5501 refcnt=2
172.21.0.225 172.21.0.222
        esp mode=tunnel spi=220625554(0x0d267a92) reqid=0(0x00000000)
        E: 3des-cbc  a446d441 856a0ed3 0f8d8ad8 065a6b27 da756609 98fa670e
        A: hmac-md5  7f14777f e5131500 8c345030 d90900d2
        seq=0x00000003 replay=4 flags=0x00000000 state=mature
        created: Jan 26 18:49:30 2006   current: Jan 26 18:58:41 2006
        diff: 551(s)    hard: 28800(s)  soft: 23040(s)
        last: Jan 26 18:49:56 2006      hard: 0(s)      soft: 0(s)
        current: 144(bytes)     hard: 0(bytes)  soft: 0(bytes)
        allocated: 3    hard: 0 soft: 0
        sadb_seq=1 pid=5501 refcnt=1
172.21.0.225 172.21.0.222
        esp mode=tunnel spi=90138890(0x055f690a) reqid=0(0x00000000)
        E: 3des-cbc  4f77a3d4 7d2e446c a0e54ee5 ed482e15 e6e4b75b d723803c
        A: hmac-md5  ebc9281a 780016ce 295ad45a 9d969b46
        seq=0x0000009e replay=4 flags=0x00000000 state=mature
        created: Jan 26 17:58:03 2006   current: Jan 26 18:58:41 2006
        diff: 3638(s)   hard: 28800(s)  soft: 23040(s)
        last: Jan 26 18:00:44 2006      hard: 0(s)      soft: 0(s)
        current: 9480(bytes)    hard: 0(bytes)  soft: 0(bytes)
        allocated: 158  hard: 0 soft: 0
        sadb_seq=0 pid=5501 refcnt=1

=======================================================================
central# setkey -D -P
192.168.0.0/24[any] 192.168.82.0/24[any] any
        in ipsec
        esp/tunnel/172.21.0.224-172.21.0.222/require
        created: Jan 26 15:20:00 2006  lastused: Jan 26 18:59:06 2006
        lifetime: 0(s) validtime: 0(s)
        spid=16390 seq=3 pid=5513
        refcnt=1
192.168.1.0/24[any] 192.168.82.0/24[any] any
        in ipsec
        esp/tunnel/172.21.0.225-172.21.0.222/require
        created: Jan 26 15:20:00 2006  lastused: Jan 26 18:49:56 2006
        lifetime: 0(s) validtime: 0(s)
        spid=16392 seq=2 pid=5513
        refcnt=1
192.168.82.0/24[any] 192.168.0.0/24[any] any
        out ipsec
        esp/tunnel/172.21.0.222-172.21.0.224/require
        created: Jan 26 15:20:00 2006  lastused: Jan 26 18:59:06 2006
        lifetime: 0(s) validtime: 0(s)
        spid=16389 seq=1 pid=5513
        refcnt=1
192.168.82.0/24[any] 192.168.1.0/24[any] any
        out ipsec
        esp/tunnel/172.21.0.222-172.21.0.225/require
        created: Jan 26 15:20:00 2006  lastused: Jan 26 18:58:30 2006
        lifetime: 0(s) validtime: 0(s)
        spid=16391 seq=0 pid=5513
        refcnt=1

=======================================================================
/var/log/racoon.log

Jan 26 17:41:39 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.225[0]->172.21.0.222[0] spi=120109393(0x
728b951)
Jan 26 17:41:39 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.222[0]->172.21.0.225[0] spi=1157627920(0
x45000010)
Jan 26 17:55:59 central racoon: INFO: purged IPsec-SA proto_id=ESP spi=1157627920.
Jan 26 17:55:59 central racoon: INFO: purging ISAKMP-SA spi=d1637c3987692522:b339bd2ace610860.
Jan 26 17:55:59 central racoon: INFO: keeping IPsec-SA spi=1090519056 - found valid ISAKMP-SA spi=f6907895966fed7d:f17fc
ca46153f83f.
Jan 26 17:55:59 central racoon: INFO: Unknown IPsec-SA spi=120109393, hmmmm?
Jan 26 17:55:59 central racoon: INFO: purged IPsec-SA spi=120109393.
Jan 26 17:55:59 central racoon: INFO: keeping IPsec-SA spi=85976071 - found valid ISAKMP-SA spi=f6907895966fed7d:f17fcca
46153f83f.
Jan 26 17:55:59 central racoon: INFO: purged ISAKMP-SA spi=d1637c3987692522:b339bd2ace610860.
Jan 26 17:56:00 central racoon: INFO: respond new phase 1 negotiation: 172.21.0.222[500]<=>172.21.0.225[500]
Jan 26 17:56:00 central racoon: INFO: begin Identity Protection mode.
Jan 26 17:56:00 central racoon: WARNING: SPI size isn't zero, but IKE proposal.
Jan 26 17:56:00 central racoon: INFO: ISAKMP-SA deleted 172.21.0.222[500]-172.21.0.225[500] spi:d1637c3987692522:b339bd2
ace610860
Jan 26 17:56:00 central racoon: INFO: ISAKMP-SA established 172.21.0.222[500]-172.21.0.225[500] spi:34637a9c843982ca:b55
cb815ad6bd124
Jan 26 17:56:00 central racoon: INFO: respond new phase 2 negotiation: 172.21.0.222[0]<=>172.21.0.225[0]
Jan 26 17:56:01 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.225[0]->172.21.0.222[0] spi=76313686(0x4
8c7456)
Jan 26 17:56:01 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.222[0]->172.21.0.225[0] spi=1191182352(0
x47000010)
Jan 26 17:58:03 central racoon: INFO: respond new phase 2 negotiation: 172.21.0.222[0]<=>172.21.0.225[0]
Jan 26 17:58:03 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.225[0]->172.21.0.222[0] spi=90138890(0x5
5f690a)
Jan 26 17:58:03 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.222[0]->172.21.0.225[0] spi=1207959568(0
x48000010)
Jan 26 17:58:29 central racoon: INFO: respond new phase 2 negotiation: 172.21.0.222[0]<=>172.21.0.224[0]
Jan 26 17:58:29 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.224[0]->172.21.0.222[0] spi=192143459(0x
b73e063)
Jan 26 17:58:29 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.222[0]->172.21.0.224[0] spi=230854012(0x
dc28d7c)
Jan 26 18:49:30 central racoon: INFO: respond new phase 1 negotiation: 172.21.0.222[500]<=>172.21.0.225[500]
Jan 26 18:49:30 central racoon: INFO: begin Identity Protection mode.
Jan 26 18:49:30 central racoon: WARNING: SPI size isn't zero, but IKE proposal.
Jan 26 18:49:30 central racoon: INFO: ISAKMP-SA established 172.21.0.222[500]-172.21.0.225[500] spi:7a61b69ba520e1c9:a6b
d1e28db6d3794
Jan 26 18:49:30 central racoon: INFO: respond new phase 2 negotiation: 172.21.0.222[0]<=>172.21.0.225[0]
Jan 26 18:49:30 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.225[0]->172.21.0.222[0] spi=220625554(0x
d267a92)
Jan 26 18:49:30 central racoon: INFO: IPsec-SA established: ESP/Tunnel 172.21.0.222[0]->172.21.0.225[0] spi=1241514000(0
x4a000010)
=======================================================================
/usr/local/etc/racoon/racoon.conf

path include "/usr/local/etc/racoon" ;
path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;
path certificate "/usr/local/etc/cert" ;
padding
{
        maximum_length 20;      # maximum padding length.
        randomize off;          # enable randomize length.
        strict_check off;       # enable strict check.
        exclusive_tail off;     # extract last one octet.
}

listen
{
        isakmp 172.21.0.222 [500];
}

timer
{
        # These value can be changed per remote node.
        counter 5;              # maximum trying count to send.
        interval 20 sec;        # maximum interval to resend.
        persend 1;              # the number of packets per a send.

        # timer for waiting to complete each phase.
        phase1 30 sec;
        phase2 15 sec;
}

remote 172.21.0.224
{
        exchange_mode main,aggressive;
        doi ipsec_doi;
        situation identity_only;

        my_identifier address 172.21.0.222;
        peers_identifier address 172.21.0.224;

        nonce_size 16;
        lifetime time 86400 sec;        # sec,min,hour
        initial_contact on;
        support_mip6 on;
        proposal_check obey;    # obey, strict or claim

        proposal {
                encryption_algorithm 3des;
                hash_algorithm md5;
                authentication_method pre_shared_key ;
                dh_group 1 ;
        }
}


remote 172.21.0.225
{
        exchange_mode main,aggressive;
        doi ipsec_doi;
        situation identity_only;

        my_identifier address 172.21.0.222;
        peers_identifier address 172.21.0.225;

        nonce_size 16;
        lifetime time 86400 sec;        # sec,min,hour
        initial_contact on;
        support_mip6 on;
        proposal_check obey;    # obey, strict or claim

        proposal {
                encryption_algorithm 3des;
                hash_algorithm md5;
                authentication_method pre_shared_key ;
                dh_group 1 ;
        }
}

sainfo anonymous
{
        pfs_group 1;
        lifetime time 28800 sec;
        encryption_algorithm 3des ;
        authentication_algorithm hmac_md5;
        compression_algorithm deflate ;
}

==============================================================
/etc/ipsec.conf

flush;
spdflush;
spdadd 192.168.82.0/24 192.168.0.0/24 any -P out ipsec esp/tunnel/172.21.0.222-172.21.0.224/require;
spdadd 192.168.0.0/24 192.168.82.0/24 any -P in ipsec esp/tunnel/172.21.0.224-172.21.0.222/require;

spdadd 192.168.82.0/24 192.168.1.0/24 any -P out ipsec esp/tunnel/172.21.0.222-172.21.0.225/require;
spdadd 192.168.1.0/24 192.168.82.0/24 any -P in ipsec esp/tunnel/172.21.0.225-172.21.0.222/require;

==============================================================

-- 
Best regards,
 Oleg Tarasov                          mailto:subscriber@osk.com.ua





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?83462512.20060126181018>