[strongSwan] OS X IPSec/L2TP and strongSwan results in INVALID_HASH_INFORMATION

Benoit Foucher benoit at bittrap.com
Thu Dec 9 10:43:10 CET 2010


Hi,

More investigations on this one and I found the reason of this INVALID_HASH_INFORMATION error. As you might have guessed strongSwan and raccoon aren't computing the hash on the same data, strongSwan includes the NAT-OA in the hash computation, raccoon doesn't. If I change strongSwan's code to not include it in the hash computation I can establish the IPsec connection. 

Specifically, in pluto/ipsec_doi.c (around line 5145), I move the following code:

		/* Compute reply HASH(2) and insert in output */
		(void)quick_mode_hash12(r_hashval, r_hash_start, md->rbody.cur
			, st, &st->st_msgid, TRUE);

before this block:

		if ((st->nat_traversal & NAT_T_WITH_NATOA)
		&& (st->nat_traversal & LELEM(NAT_TRAVERSAL_NAT_BHND_ME))
		&& (st->st_esp.attrs.encapsulation == ENCAPSULATION_MODE_TRANSPORT))
		{
			/** Send NAT-OA if our address is NATed and if we use Transport Mode */
			if (!nat_traversal_add_natoa(ISAKMP_NEXT_NONE, &md->rbody, md->st))
			{
				return STF_INTERNAL_ERROR;
			}
		}

Could you confirm whether or not this is a raccoon or strongSwan issue?

Now, the IPSec SA is established but there's still one issue with the routing :(. My strongSwan server receives the L2TP packets on port 1701 but the replies aren't getting back through the tunnel (I can see the l2tp udp packets with tcpdump). I suspect this is because the xfrm policies are bogus. Here's the configuration I'm using 

conn rwl2tp
        esp=aes128-sha1
        ike=aes128-sha-modp1024
        keyexchange=ikev1
        keyingtries=3
        type=transport
        left=10.1.1.1
        leftsubnet=17.12.21.19/32
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
        rightsubnetwithin=0.0.0.0/0
        authby=psk
        pfs=no
        auto=add

17.12.21.19 is the public IP address of the strongSwan server. The NAT address is 10.1.1.1. 

The xfrm policy that get installed are with the public IP address:

  src 17.12.21.19/32 dst 93.18.20.78/32 proto udp sport 1701 dport 65139 
          dir out priority 1792 ptype main 
          tmpl src 0.0.0.0 dst 0.0.0.0
                  proto esp reqid 16452 mode transport
  src 93.18.20.78/32 dst 17.12.21.19/32 proto udp sport 65139 dport 1701 
          dir in priority 1792 ptype main 
          tmpl src 0.0.0.0 dst 0.0.0.0
                  proto esp reqid 16452 mode transport

I guess that's why the L2TP traffic isn't going back through the tunnel, shouldn't the policies instead use the 10.1.1.1 address? Is this a problem with raccoon requiring letsubnet to be set to 17.12.21.19/32 and not checking for the NAT-OA address sent by pluto?

Thanks for your help!

Cheers,
Benoit.

On Dec 3, 2010, at 3:59 PM, Benoit Foucher wrote:

> Hi,
> 
> Ok, next issue :). I'm trying to setup an OS X client IPSec/L2TP connection to strongSwan 4.5.0.
> 
> The strongSwan server and the OS X client are both behind a NAT. I managed to find the configuration to get the tunnel establishment to pass phase 1 but it fails in phase 2. The OS X client (raccoon) fails to match its computed HASH(2) with strongSwan's hash passed with the STATE_QUICK_R0 message. I've attached the strongSwan debug traces and raccoon debug traces to this email. Any ideas why raccoon and strongSwan don't agree on the hash value?
> 
> Someone reported a similar issue last month and indicated that things were working when the strongSwan server was NOT behind a NAT but failed when it was behind a NAT.
> 
> Here's the config I'm using:
> 
> conn rw
>        esp=aes128-sha1
>        ike=aes128-sha-modp1024
>        keyexchange=ikev1
>        keyingtries=3
>        type=transport
>        left=%defaultroute
>        leftsubnet=aa.aa.aa.aa/32
>        leftprotoport=17/1701
>        right=%any
>        rightprotoport=17/%any
>        rightsubnetwithin=0.0.0.0/0
>        authby=psk
>        pfs=no
>        compress=no
>        auto=add
> 
> Cheers,
> Benoit.
> 
> <racoon.log><pluto2.log>





More information about the Users mailing list