On 12/10/19 2:58 PM, Paul Wouters wrote:

Dec 10 07:04:14 [pluto] "Richmond_Home" #1: initiating v2 parent SA

Dec 10 07:04:14 [pluto] "Richmond_Home" #2: IKE SA authentication request rejected by peer: AUTHENTICATION_FAILED

Do you have a log of the peer for this? Only that end knows why it
rejected this.

Here's what I see on the peer end at that point:

----
Dec 10 17:03:27 [pluto] "Richmond_Home" #2: ERROR: asynchronous network error report on eno2 (sport=500) for message to x.x.x.x port 500, complainant x.x.x.x: Connection refused [errno 111, origin ICMP type 3 code 3 (not authenticated)] Dec 10 17:03:28 [pluto] "Richmond_Home" #2: STATE_PARENT_I1: retransmission; will wait 0.5 seconds for response
----

It repeats the re-transmission a few times, then re-starts the loop of the same error. Other than that, nothing else out of the ordinary or anything specific to authentication.


Dec 10 07:04:21 [pluto] "Richmond_Home" #3: processing IKE_SA_INIT request: SA,KE,Ni,N,N,N (message arrived 0 seconds ago)

Interestingly, while this end's attempt is failing, the other end is
starting its own attempt to this end.

Dec 10 07:04:21 [pluto] "Richmond_Home" #3: Authenticated using authby=secret

Which seems to succeed here.

OK, so that sort of makes sense since both ends have auto=start in ipsec.config.

proposals 1:ESP:ENCR=AES_GCM_C_256;ESN=DISABLED[first-match] 2:ESP:ENCR=AES_GCM_C_128;ESN=DISABLED 3:ESP:ENCR=AES_CBC_256;INTEG=HMAC_SHA2_512_256;INTEG=HMAC_SHA2_256_128;ESN=DISABLED 4:ESP:ENCR=AES_CBC_128;INTEG=HMAC_SHA2_512_256;INTEG=HMAC_SHA2_256_128;ESN=DISABLED 5:ESP:ENCR=AES_CBC_128;INTEG=HMAC_SHA1_96;ESN=DISABLED Dec 10 07:04:21 [pluto] "Richmond_Home" #3: ERROR: netlink response for Add SA [email protected] included errno 38: Function not implemented

It negotiated AES_GCM_C wit 256bit key with no ESN. Which should be fine
and be accepted by the kernel. yet it is not? Very strange.

I'm wondering if there's something with the way that encryption algorithm is compiled in an Atom-specfic kernel? In the kernel, all the cryptography settings on both ends match, other that things like AVX and NI instructions which the Atom lacks.

And the log when ikev2=no returned to the ipsec.conf file and the connection establishes:

Dec 10 07:09:18 [pluto] "Richmond_Home" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel mode {ESP=>0x21824963 <0x4640938b xfrm=AES_CBC_128-HMAC_SHA1_96 NATOA=none NATD=none DPD=passive}

And here it installed AES-CBC with a 128 bit key and sha1.

So in theory, it could be that your kernel does not support AES_GCM. It
would be weird but consistent with the logs. But it still does not
answer why the authentication failed for IKEv2. For that we need to see
the logs of that remote server.

That's somewhat what I was leaning towards. CONFIG_CRYPTO_AES_X86_64 is set in the kernel on both ends. Or is there a different kernel config needed for AES-GCM? Nothing pops out at me. Regardless, I don't quite understand why the error only happens on one end. The peer of this machine has two other IPSec connections and doesn't error out with nearly the same settings.

One other difference between this connection and others my server is connecting to is this endpoint has a dynamic gateway so I can't add a static rightnexthop while all the other connections are fully static. Not sure if that's an influence or not.

It could also lead to selecting a different (wrong?) PSK if you have
multiple different ones. Setting leftid/rightid explicitely and not
depending on the IP address as ID might stabilize that better.

The left= and right= are both static IP's on each end. Only on one end, the nexthop is omitted because it uses a dynamic gateway while the peer is static. I wouldn't expect it to select the wrong PSK because of that. That, and I don't get why it would only happen with IKEv2.

--
Peter Rofner
Richmond Nursery Inc.
http://www.richmondnursery.com
_______________________________________________
Swan mailing list
[email protected]
https://lists.libreswan.org/mailman/listinfo/swan

Reply via email to