Hello again,

1. FYI, I can confirm that my Android 11 Samsung Galaxy A22 5G & Tab S6 Lite devices connected successfully over IKEv2, together with Win10 laptop, all at the same time (two over the same NAT and one over 4G ISP).

2. I would like to test the interoperability of ECDSA certs with IKEv2, Win 10, Android and maybe even iOS devices when I get some for testing ... also a Linux desktop client comes to mind ... but I miss the reference material and Google is not revealing much ...

Thank for the help with certs. :-)

Kind regards,
Mirsad

Command output: ipsec showstates

Every 1.0s: ipsec showstates domac: Fri Jan 14 20:48:31 2022

000 #11: "MYCONN-ikev2-cp"[9] 94.253.210.164:48431 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); EXPIRE in 26274s; newest; idle; 000 #12: "MYCONN-ikev2-cp"[9] 94.253.210.164:48431 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); LIVENESS in 24s; EXPIRE in 26274s; newest; eroute owner; IKE SA #11; idle; 000 #12: "MYCONN-ikev2-cp"[9] 94.253.210.164 [email protected] [email protected] [email protected] [email protected] Traffic: ESPin=5MB ESPout=7MB ESPmax=0B 000 #16: "MYCONN-ikev2-cp"[13] 95.168.121.8:10515 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); EXPIRE in 28693s; newest; idle; 000 #17: "MYCONN-ikev2-cp"[13] 95.168.121.8:10515 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); LIVENESS in 13s; EXPIRE in 28693s; newest; eroute owner; IKE SA #16; idle; 000 #17: "MYCONN-ikev2-cp"[13] 95.168.121.8 [email protected] [email protected] [email protected] [email protected] Traffic: ESPin=130KB ESPout=114KB ESPmax=0B 000 #18: "MYCONN-ikev2-cp"[14] 94.253.210.164:4500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); EXPIRE in 28774s; newest; idle; 000 #19: "MYCONN-ikev2-cp"[14] 94.253.210.164:4500 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); LIVENESS in 4s; EXPIRE in 28774s; newest; eroute owner; IKE SA #18; idle; 000 #19: "MYCONN-ikev2-cp"[14] 94.253.210.164 [email protected] [email protected] [email protected] [email protected] Traffic: ESPin=32KB ESPout=212KB ESPmax=0B

Here is the requested ip xfrm state:

root@domac:~# ip xfrm state
src 94.253.210.164 dst 161.53.235.3
        proto esp spi 0x36cacf34 reqid 16457 mode tunnel
        replay-window 0 flag af-unspec
        auth-trunc hmac(sha1) 0x35a2f61689251af851fd7d84d718eef34b8aaf65 96
        enc cbc(aes) 0x80a8c387a21e62723a5d4c439b3650679cd345b59025d982842842892a403b98
        encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
        anti-replay esn context:
         seq-hi 0x0, seq 0x2c3, oseq-hi 0x0, oseq 0x0
         replay_window 128, bitmap-length 4
         ffffffff ffffffff ffffffff ffffffff
src 161.53.235.3 dst 94.253.210.164
        proto esp spi 0x5c13a8d6 reqid 16457 mode tunnel
        replay-window 0 flag af-unspec
        auth-trunc hmac(sha1) 0x15e970d4399c87a75a7a67fd608ce7a97b1cb9c9 96
        enc cbc(aes) 0xaa30d8c7c1a5c47713a1e52e4037b4b62490986b1174e24062cf5a27e979b5f3
        encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
        anti-replay esn context:
         seq-hi 0x0, seq 0x0, oseq-hi 0x0, oseq 0x2f8
         replay_window 128, bitmap-length 4
         00000000 00000000 00000000 00000000
src 95.168.121.8 dst 161.53.235.3
        proto esp spi 0x62b4187f reqid 16453 mode tunnel
        replay-window 0 flag af-unspec
        aead rfc4106(gcm(aes)) 0xe623603bff4f28862c581e45e8f50d6613839afc2b69e121048c6cff5d835715c9f579e8 128
        encap type espinudp sport 10515 dport 4500 addr 0.0.0.0
        anti-replay esn context:
         seq-hi 0x0, seq 0x4ca, oseq-hi 0x0, oseq 0x0
         replay_window 128, bitmap-length 4
         ffffffff ffffffff ffffffff ffffffff
src 161.53.235.3 dst 95.168.121.8
        proto esp spi 0xcb62e254 reqid 16453 mode tunnel
        replay-window 0 flag af-unspec
        aead rfc4106(gcm(aes)) 0x48cecea37cd4b5be49d7bd4e2e9e3dc269eb97eb3b61020b3c1f5094eaed65cbf58217fc 128
        encap type espinudp sport 4500 dport 10515 addr 0.0.0.0
        anti-replay esn context:
         seq-hi 0x0, seq 0x0, oseq-hi 0x0, oseq 0x47a
         replay_window 128, bitmap-length 4
         00000000 00000000 00000000 00000000
src 94.253.210.164 dst 161.53.235.3
        proto esp spi 0x792eba17 reqid 16437 mode tunnel
        replay-window 0 flag af-unspec
        aead rfc4106(gcm(aes)) 0x8c010ba482454b9ccc37ebb6518bc057418fe46f6fdd53382675916dccb67323ac01e0e2 128
        encap type espinudp sport 48431 dport 4500 addr 0.0.0.0
        anti-replay esn context:
         seq-hi 0x0, seq 0x48ac, oseq-hi 0x0, oseq 0x0
         replay_window 128, bitmap-length 4
         ffffffff ffffffff ffffffff ffffffff
src 161.53.235.3 dst 94.253.210.164
        proto esp spi 0xc9e906e1 reqid 16437 mode tunnel
        replay-window 0 flag af-unspec
        aead rfc4106(gcm(aes)) 0xf7f336578771e8355fb07a30163847a66b4c808422257d4ec7a9d3f68649c74ec6eebf54 128
        encap type espinudp sport 4500 dport 48431 addr 0.0.0.0
        anti-replay esn context:
         seq-hi 0x0, seq 0x0, oseq-hi 0x0, oseq 0x4a4e
         replay_window 128, bitmap-length 4
         00000000 00000000 00000000 00000000
root@domac:~#

I still can't interpret what is "transport" in `ip xfrm policy` when I have 3 IKEv2 tunnel conns?

Kind regards,
Mirsad

On 1/14/2022 5:30 PM, Mirsad Goran Todorovac wrote:
Hi, Paul!

Yes, it seems that I have been naively using the same client cert for all connecting devices, interpreting literally what is given on libreswan Wiki: https://libreswan.org/wiki/VPN_server_for_remote_clients_using_IKEv2#Example_certificate_generation_with_certutil

1. I have overlooked the comment ("#") sign before rightid parameter in ikev2.conf 2. I was lazy enough to think that I will get away with the same single certificate for all clients, as took literally the generic name win7client.example.org ... OMG.

I have just tested the minimum setup with two devices and two different certificates, and it appears to work :-)

There should be a note about this requirement on the Wiki for us one-track-minds ;-)

Thank you very much. You have saved the day before the weekend :-)

Kind regards,
Mirsad

P.S.

Here is the request ip xfrm state; ip xfrm policy; but I think it is obsoleted now: https://domac.alu.hr/mtodorov/ikev2-20220114-xfrm-state+policy-01.log

On 1/14/2022 4:21 PM, Paul Wouters wrote:
On Fri, 14 Jan 2022, Mirsad Goran Todorovac wrote:

Subject: Re: [Swan] Libreswan 4.6: connection IKEv2 win10 to Linux freezes
    soon after Android device connects

Are you using the same single certificate or ID/PSK ? In that case the
second connection would replace the first one.

 Less than 10 seconds from initiating IKEv2 connection from the Android  tablet (Samsung Galaxy Tab S6 Lite), the connection was severed. But both
 ends still think it is connected:

It might be useful to see "ip xfrm state" and "ip xfrm policy" just
after this has happened. Then we can see if there is truly one set of
IPsec kernel state, 2 sets, or a buggy 1.5 set or something ?

 The session log is here (only the interesting event, not the entire night
 of testing): https://domac.alu.hr/mtodorov/ikev2-20220113-03.log

 After I reconnected Windows 10, the Android device appears kicked out ...

This log only shows the windows connect, not the android one before. So
I cannot see if they use the same cert/ID ?

Jan 14 06:57:13.958547: "MYCONN-ikev2-cp"[2] 94.253.210.164 #83: sent IKE_SA_INIT reply {cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=MODP2048} Jan 14 06:57:14.150677: "MYCONN-ikev2-cp"[2] 94.253.210.164 #83: processing decrypted IKE_AUTH request: SK{IDi,CERT,CERTREQ,AUTH,CP,SA,TSi,TSr,N,N,N,N} Jan 14 06:57:14.154771: "MYCONN-ikev2-cp"[2] 94.253.210.164 #83: ignoring CERTREQ payload that is not ASN1 Jan 14 06:57:14.156179: "MYCONN-ikev2-cp"[2] 94.253.210.164 #83: established IKE SA; authenticated using RSA with SHA1 and peer certificate 'CN=win7client.alu.hr, O=ALU-UNIZG' issued by CA 'CN=ALU-UNIZG CA, O=ALU-UNIZG' Jan 14 06:57:14.176596: "MYCONN-ikev2-cp"[2] 94.253.210.164 #84: proposal 1:ESP=AES_GCM_C_256-DISABLED SPI=cf38d849 chosen from remote proposals 1:ESP:ENCR=AES_GCM_C_256;ENCR=AES_GCM_C_128;ESN=DISABLED[first-match] 2:ESP:ENCR=AES_CBC_256;ENCR=AES_CBC_128;INTEG=HMAC_SHA2_512_256;INTEG=HMAC_SHA2_384_192;INTEG=HMAC_SHA2_256_128;INTEG=HMAC_SHA1_96;ESN=DISABLED Jan 14 06:57:14.178323: "MYCONN-ikev2-cp"[2] 94.253.210.164 #84: established Child SA using #83; IPsec tunnel [0.0.0.0-255.255.255.255:0-65535 0] -> [192.168.101.10-192.168.101.10:0-65535 0] {ESPinUDP=>0xcf38d849 <0x476cc068 xfrm=AES_GCM_16_256-NONE NATD=94.253.210.164:46855 DPD=active}

The CERTREQ is a little odd but apparently harmless. Did you get a
different IP on the android before, or did you also hand out
192.168.101.10 there?

 On average, we will have only one user on the VPN for the most times, but  two accountants could accidentally kick out each other, couldn't they?

Two different connections, even from the same network, should not kick
each other out with IKEv2. It does happen for IKEv1 L2TP based connections using IPsec transport mode behind the same NAT router, but IKEv2 uses tunnel
mode as your log line above shows as well.

 BTW, Android L2TP connection tested with 4.5 USE_DH2=true did not connect  from Android, while it did from Windows 10. I would like to have them all
 running stable and symmetrically.

whether you compile USE_DH2 in or not should not make a difference,
unless you are changing the ike= or esp=/phase2alg= line to include
modp1024 (which you shouldn't).

 conn MYCONN-ikev2-cp
         # The server's actual IP goes here - not elastic IPs
         left=161.53.235.3
         leftcert=vpn.alu.hr
         [email protected]
         leftsendcert=always
         leftsubnet=0.0.0.0/0
         leftrsasigkey=%cert
         # Clients
         right=%any
         # your addresspool to use - you might need NAT rules if providing
 full internet to clients
         rightaddresspool=192.168.101.10-192.168.101.253
         # optional rightid with restrictions
         rightid="O=ALU-UNIZG,CN=win7client.alu.hr"

Wait, you cannot specify a rightid to be one client ? That would mean
you are using the same certificate on both clients. In that case,
libreswan assumes it is the same client reconnecting again and per
default it does not allow a client to be connected multiple times at
once.

You should leave out rightid=

Paul

--
Mirsad Goran Todorovac
CARNet sistem inženjer
Grafički fakultet | Akademija likovnih umjetnosti
Sveučilište u Zagrebu
--
CARNet system engineer
Faculty of Graphic Arts | Academy of Fine Arts
University of Zagreb, Republic of Croatia
tel. +385 (0)1 3711 451
mob. +385 91 57 88 355

_______________________________________________
Swan mailing list
[email protected]
https://lists.libreswan.org/mailman/listinfo/swan

Reply via email to