On Mon, 22 Feb 2016, Jakub wrote:
I am trying to configure Mac OS IKEv2 with libreswan (v3.13 or v3.16) using
X.509 certificates on both sides.
After adding ike=3des-sha1;modp1024 to v3.16 config (apparently the default has
changed) and using Remote ID (the CN of server
cert) and Local ID (the CN of client cert) I could get as far as server sending
cert and client sending it's own cert back in the
response. Server than says missing payload(s) (ISAKMP_NEXT_v2AUTH):
Most often, a missing payload means the response is an "error response"
and then usually there is a notify payload describing what is wrong.
But that's not the case here:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | exchange type:
ISAKMP_v2_AUTH (0x23)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags:
ISAKMP_FLAG_v2_IKE_INIT (0x8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | message ID: 00 00 00 01
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 364 (0x16c)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing version=2.0 packet
with exchange type=ISAKMP_v2_AUTH (35)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | I am receiving an IKE Request
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | I am the IKE SA Original
Responder
So IKE_INIT request came in, you responded, then an IKE_AUTH request
came in. So far so good....
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | ICOOKIE: 52 7c 82 69 58 e1
5c ca
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | RCOOKIE: c8 2c 93 b8 13 3a
31 95
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | found hash chain 4
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | parent v2 peer and cookies
match on #3
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | v2 state object #3 found, in
STATE_PARENT_R1
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | found state #3
We found the state.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Unpacking clear payload for
svm: respond to IKE_AUTH
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2SK)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | ***parse IKEv2 Encryption
Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2IDi (0x23)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 336 (0x150)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2SK (len=336)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | selected state microcode
respond to IKE_AUTH
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing connection
"RoadWarrior-IKEv2"[2] 89.100.95.78
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now lets proceed with state
specific processing
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | calling processor respond to
IKE_AUTH
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing connection
"RoadWarrior-IKEv2"[2] 89.100.95.78
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | calculated auth: f3 0f 49 7d
10 10 79 cd 78 71 c2 20
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | provided auth: f3 0f 49 7d
10 10 79 cd 78 71 c2 20
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | authenticator matched
Auth on packet ok.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2IDi)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Identification
Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2N (0x29)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 33 (0x21)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | id_type: ID_USER_FQDN (0x3)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2IDi (len=33)
Read the first payload, which was the IDi
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2N)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Notify Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2N (0x29)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 8 (0x8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Protocol ID: PROTO_RESERVED
(0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | SPI size: 0 (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Notify Message Type:
v2N_INITIAL_CONTACT (0x4000)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2N (len=8)
Read initial contact notify payload.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2N)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Notify Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2IDr (0x24)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 8 (0x8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Protocol ID: PROTO_RESERVED
(0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | SPI size: 0 (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Notify Message Type:
v2N_MOBIKE_SUPPORTED (0x400c)
mobike notify
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2N (len=8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2IDr)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Identification
Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2CP (0x2f)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 37 (0x25)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | id_type: ID_FQDN (0x2)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2IDr (len=37)
IDr payload.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2CP)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Configuration
Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2N (0x29)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 36 (0x24)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | ikev2_cfg_type:
IKEv2_CP_CFG_REQUEST (0x1)
CP request payload.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2CP (len=36)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2N)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Notify Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2N (0x29)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 8 (0x8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Protocol ID: PROTO_RESERVED
(0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | SPI size: 0 (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Notify Message Type:
v2N_ESP_TFC_PADDING_NOT_SUPPORTED (0x400a)
another notify payload.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2N (len=8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2N)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Notify Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2SA (0x21)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 8 (0x8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Protocol ID: PROTO_RESERVED
(0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | SPI size: 0 (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Notify Message Type:
v2N_NON_FIRST_FRAGMENTS_ALSO (0x400b)
another notify.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2N (len=8)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2SA)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Security
Association Payload:
Then the SA payload, TSi/TSr payloads
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2TSi (0x2c)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 40 (0x28)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2SA (len=40)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2TSi)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Traffic Selector
Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2TSr (0x2d)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 64 (0x40)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | number of TS: 2 (0x2)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2TSi (len=64)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | Now let's proceed with payload
(ISAKMP_NEXT_v2TSr)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | **parse IKEv2 Traffic Selector
Payload:
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | next payload type:
ISAKMP_NEXT_v2NONE (0x0)
Then it says this is the last payload.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | flags: none (0x0)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | length: 64 (0x40)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | number of TS: 2 (0x2)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | processing payload:
ISAKMP_NEXT_v2TSr (len=64)
Feb 22 16:12:42 dublin.dev.router pluto[5691]: "RoadWarrior-IKEv2"[2]
89.100.95.78 #3: missing payload(s) (ISAKMP_NEXT_v2AUTH). Mes
sage dropped.
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | ikev2_parent_inI2outR2_tail
returned STF_FAIL with v2N_INVALID_SYNTAX
Feb 22 16:12:42 dublin.dev.router pluto[5691]: | #3 complete v2 state
transition from STATE_PARENT_R1 with v2N_INVALID_SYNTAX
And we feel there is a missing AUTH payload. And if I read:
https://tools.ietf.org/html/rfc7296#section-1.2
I don't see any valid IKE_AUTH request that would not have an AUTH
payload. So it looks like we are rejecting for the right reason.
and after few retries fails. I don't know how to debug it on Mac OS since logs
are no longer written to racoon.log.
So that must mean the new iOS code is used. I'll forward this message
to an Apple contact and see what they say. I've CC:ed the swan list
because we don't really use github for bugs/emails, so please move
this discussion there.
Paul
conn %default
# This may come handy if fragmented IP packets are dropped or DF'ed
ike_frag=yes
# x509
authby=rsasig
leftcert="dublin.dev.vpn.example.com - example.com"
leftsendcert=always
leftid=%fromcert
rightid=%fromcert
# Perfect Forward Secrecy - off since M$ and Apple have it disabled by
default, wonder why...
pfs=no
# we cannot rekey for %any, let client rekey
rekey=no
# Timeouts
## Set ikelifetime and keylife to same defaults windows has
ikelifetime=8h
keylife=1h
rekeymargin=3m
keyingtries=3
# Dead node detection
dpddelay=4
dpdtimeout=30
dpdaction=clear
# ID
left=%eth0
right=%any
# listen for auto keying connections
auto=add
conn RoadWarrior-IKEv2
ikev2=insist
ike=3des-sha1;modp1024
rightaddresspool=10.224.1.97-10.224.1.128
# Subnet that is accessible for the client (NOTE: leftsubnets= does not
work with rightaddresspool...)
leftsubnet=10.0.0.0/8
conn RoadWarrior-IKEv1-L2TP
ikev2=no
leftprotoport=udp/l2tp
rightprotoport=udp/%any
conn v6neighbor-hole-in
left=::1
leftsubnet=::0/0
leftprotoport=58/34560
rightprotoport=58/34816
rightsubnet=::0/0
right=::0
connaddrfamily=ipv6
authby=never
type=passthrough
auto=route
priority=1
conn v6neighbor-hole-out
left=::1
leftsubnet=::0/0
leftprotoport=58/34816
rightprotoport=58/34560
rightsubnet=::0/0
right=::0
connaddrfamily=ipv6
authby=never
type=passthrough
auto=route
priority=1
Thanks you.
—
Reply to this email directly or view it on
GitHub.[AC3V-QZzu5Ul-rtCP2EynYO7hdDPJZlWks5pmzaggaJpZM4HfwV3.gif]
_______________________________________________
Swan mailing list
[email protected]
https://lists.libreswan.org/mailman/listinfo/swan