Windows 7 und 8.1 können unter Ubuntu 22 keine Verbindung zum strongSwan 5.9 VPN-Server herstellen

Windows 7 und 8.1 können unter Ubuntu 22 keine Verbindung zum strongSwan 5.9 VPN-Server herstellen

Ich habe einen VPN-Server auf Oracle OCI mit Ubuntu 22.04 und strongSwan 5.9.5 eingerichtet. Als ich versuchte, eine Verbindung von verschiedenen Roadwarriors aus herzustellen, funktionierte Android gut, Win10 funktionierte gut, sogar das alte Blackberry10 funktionierte gut, aber nicht für Win7- und Win8.1-Laptops: Sie blieben in der ersten Phase hängen:

mytestcloud charon[968]: 05[NET] received packet: from <MYIP>[500] to 10.0.0.64[500] (616 bytes)
mytestcloud charon[968]: 05[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
mytestcloud charon[968]: 05[IKE] received MS NT5 ISAKMPOAKLEY v9 vendor ID
mytestcloud charon[968]: 05[IKE] received MS-Negotiation Discovery Capable vendor ID
mytestcloud charon[968]: 05[IKE] received Vid-Initial-Contact vendor ID
mytestcloud charon[968]: 05[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
mytestcloud charon[968]: 05[IKE] <MYIP> is initiating an IKE_SA
mytestcloud charon[968]: 05[IKE] <MYIP> is initiating an IKE_SA
mytestcloud charon[968]: 05[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
mytestcloud charon[968]: 05[IKE] local host is behind NAT, sending keep alives
mytestcloud charon[968]: 05[IKE] remote host is behind NAT
mytestcloud charon[968]: 05[IKE] sending cert request for "C=<MYCOUNTRY>, O=<MYFIRM>, CN=<MYNAME>"
mytestcloud charon[968]: 05[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(CHDLESS_SUP) N(MULT_AUTH) ]
mytestcloud charon[968]: 05[NET] sending packet: from 10.0.0.64[500] to <MYIP>[500] (345 bytes)
mytestcloud charon[968]: 08[IKE] sending keep alive to <MYIP>[500]
mytestcloud charon[968]: 09[JOB] deleting half open IKE_SA with <MYIP> after timeout

Meine ipsec.conf ist:

config setup
    charondebug="ike 1, knl 1, cfg 1"
    strictcrlpolicy=no
    # uniqueids = no

conn %default
   ikelifetime=24h
   keylife=24h
   keyexchange=ikev2
   dpdaction=clear
   dpdtimeout=3600s
   dpddelay=3600s
   compress=yes
   leftfirewall=yes
   left=%any
   leftsubnet=0.0.0.0/0
   right=%any
   rightsourceip=192.168.2.100/28
#   rightdns=8.8.8.8, 8.8.4.4
#   leftsendcert=always
#   fragmentation=yes
#   rightsendcert=never
#   forceencaps=yes
   rekey=no
   auto=add
   ike=aes256-sha1-modp1024,3des-sha1-modp1024!
   esp=aes256-sha1,3des-sha1!

conn roadwarrior
   leftauth=pubkey
   leftcert=VPNCert.pem
   leftid=<SERVERIP>
   rightauth=pubkey

Der Status ist (Win10-Laptop ist verbunden):

ubuntu@mytestcloud:~$ sudo ipsec statusall
Status of IKE charon daemon (strongSwan 5.9.5, Linux 5.15.0-1025-oracle, aarch64):
  uptime: 36 minutes, since Dec 12 09:05:21 2022
  malloc: sbrk 2605056, mmap 0, used 1670848, free 934208
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 2
  loaded plugins: charon pkcs11 aes des rc2 sha2 sha1 md4 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp curve25519 xcbc cmac hmac ccm gcm drbg curl attr kernel-netlink resolve socket-default farp stroke vici updown eap-identity eap-aka eap-aka-3gpp2 eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-tls eap-ttls eap-peap eap-tnc xauth-generic tnc-tnccs dhcp counters
Virtual IP pools (size/online/offline):
  192.168.2.100/28: 11/1/0
Listening IP addresses:
  10.0.0.64
Connections:
 roadwarrior:  %any...%any  IKEv2, dpddelay=3600s
 roadwarrior:   local:  [<SERVERIP>] uses public key authentication
 roadwarrior:    cert:  "C=<MYCOUNTRY>, O=<MYFIRM>, CN=<SERVERIP>"
 roadwarrior:   remote: uses public key authentication
 roadwarrior:   child:  0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear
Security Associations (1 up, 0 connecting):
 roadwarrior[3]: ESTABLISHED 7 minutes ago, 10.0.0.64[150.136.154.215]...<MYIP>[C=<MYCOUNTRY>, O=<MYFIRM>, CN=Win10]
 roadwarrior[3]: IKEv2 SPIs: 250f9e9db620a7e7_i 29b6ebbdb66a922a_r*, rekeying disabled
 roadwarrior[3]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
 roadwarrior{1}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c084f973_i 5daafdba_o
 roadwarrior{1}:  AES_CBC_256/HMAC_SHA1_96, 30958 bytes_i (122 pkts, 80s ago), 14517 bytes_o (50 pkts, 80s ago), rekeying disabled
 roadwarrior{1}:   0.0.0.0/0 === 192.168.2.100/32

Ich vermute, es handelt sich um eine Art Fragmentierungsproblem, denn nach dem Hinzufügen

fragmentation=no

in ipsec.conf fällt das Win10-Gerät auf die gleiche Weise. Ich habe alles hinzugefügt, was nötig ist, glaube ich; ich meine

net/ipv4/ip_no_pmtu_disc=1

in sysctl.conf und

FORWARD -t mangle --match policy --pol ipsec --dir in -o enp0s3 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360

in iptables-Regeln. Bitte beachten Sie, dass ich eine fast identische Konfiguration in Ubuntu 16.04 / strongSwan 5.2.2 auf AWS problemlos verwenden kann. Kleine Unterschiede sind Standard-Chiffre-Suiten und unterschiedliche Serverzertifikate. Kann ich also irgendwie eine Verbindung dieser Windows-Monster erzwingen?

Antwort1

Das Problem scheint die Fragmentierung von Paketen zu sein. Einerseits glaube ich, dass Oracle die Fragmentierung in seinen öffentlichen Schnittstellen fest einprogrammiert hat; andererseits unterstützen ältere Windows-Betriebssysteme (Windows 7, Windows 8/8.1, Windows 10 vor 1803, Ubuntu 16) keine Fragmentierung. Es gibt also keine Möglichkeit, Clients auf solchen Betriebssystemen zu verwenden, um strongSwan zu verbinden, das auf Oracle OCI läuft. Es gibt drei Workarounds, um diese Einschränkung zu umgehen:

  1. Verabschieden Sie sich von Legacy-Clients (für die Benutzer nicht sehr beeindruckend).
  2. Cloud-Anbieter wechseln – ich habe strongSwan auf Amazon AWS und DigitalOcean getestet: alles funktioniert einwandfrei.
  3. VPN-Typ ändern – persönlich bin ich mit dieser Lösung gelandet: WireGuard hat mit Oracle OCI keine Probleme. Und ich habe als nette Ergänzung das Problem mit DNS-Lecks gelöst.

verwandte Informationen