Tunnel IPSec entre Strongswan derrière NAT et VMWare NSX Edge

Pour diverses raisons, il a été nécessaire d'organiser une connexion VPN entre le réseau dans VMWare Cloud Director et une machine Ubuntu distincte dans le cloud. Cette note ne prétend pas être une description exhaustive, mais simplement un petit guide pratique.

Tunnel IPSec entre Strongswan derrière NAT et VMWare NSX Edge

Sur le réseau, j'ai trouvé l'unique article de 2015 à ce sujet «Site à Site IPSEC VPN entre NSX Edge et Linux strongSwan».

Malheureusement, je n'ai pas pu l'utiliser directement, car je souhaitais un chiffrement plus solide, pas de certificat auto-signé, et le configuration décrite ne fonctionnerait pas derrière NAT.

Par conséquent, j'ai dû m'asseoir et plonger dans la documentation.

J'ai pris comme base une configuration que j'ai utilisée depuis longtemps, permettant de se connecter depuis presque tous les systèmes d'exploitation, et j'y ai simplement ajouté un morceau permettant de se connecter à NSX Edge.

Puisque l'installation et la configuration complète du serveur Strongswan dépassent le cadre de cette note, je me permets de renvoyer à un bon matériel à ce sujet.

Alors, passons directement aux configurations.

Le schéma de la connexion sera le suivant :

Tunnel IPSec entre Strongswan derrière NAT et VMWare NSX Edge

du côté de VMWare l'adresse externe 33.33.33.33 et le réseau interne 192.168.1.0/24
du côté de Linux l'adresse externe 22.22.22.22 et le réseau interne 10.10.10.0/24
il faudra également configurer un certificat Let's Encrypt pour l'adresse vpn.linux.ext
PSK des deux côtés : ChangeMeNow!

Configuration du côté de NSX Edge :

Texte

Activé : oui
Activer la parfaite confidentialité des clés (PFS) : oui
Nom : VPN_strongswan (choisissez ce que vous voulez)
Id local : 33.33.33.33
Point de terminaison local : 33.33.33.33
Sous-réseaux locaux : 192.168.1.0/24
Id de pair : vpn.linux.ext
Point de terminaison de pair : 22.22.22.22
Sous-réseaux de pair : 10.10.10.0/24
Algorithme de chiffrement : AES256
Authentification : PSK
Clé partagée préalablement : ChangeMeNow!
Groupe Diffie-Hellman : 14 (2048 bits — un compromis acceptable entre vitesse et sécurité. Mais si vous le souhaitez, vous pouvez en mettre un plus élevé)
Algorithme de résumé : SHA256
Option IKE : IKEv2
Répondant IKE uniquement : non
Type de session : Session basée sur la politique

Captures d'écran
Tunnel IPSec entre Strongswan derrière NAT et VMWare NSX Edge
Tunnel IPSec entre Strongswan derrière NAT et VMWare NSX Edge

Configuration du côté de Strongswan :

ipsec.conf

# /etc/ipsec.conf
config setup

conn %default
	dpdaction=clear
	dpddelay=35s
	dpdtimeout=300s

	fragmentation=yes
	rekey=no

	ike=aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
	esp=aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1024,3des-sha1-modp1024,aes128-aes256-sha1-sha256,aes128-sha1,3des-sha1!

	left=%any
	leftsubnet=10.10.10.0/24
        leftcert=certificate.pem
	leftfirewall=yes
	leftsendcert=always

	right=%any
	rightsourceip=192.168.1.0/24
	rightdns=77.88.8.8,8.8.4.4

	eap_identity=%identity

# IKEv2
conn IPSec-IKEv2
	keyexchange=ikev2
	auto=add

# BlackBerry, Windows, Android
conn IPSec-IKEv2-EAP
	also="IPSec-IKEv2"
	rightauth=eap-mschapv2

# macOS, iOS
conn IKEv2-MSCHAPv2-Apple
	also="IPSec-IKEv2"
	rightauth=eap-mschapv2
	leftid=vpn.linux.ext

# Android IPsec Hybrid RSA
conn IKEv1-Xauth
	keyexchange=ikev1
	rightauth=xauth
	auto=add

# VMWare IPSec VPN
conn linux-nsx-psk
	authby=secret
	auto=start
	leftid=vpn.linux.ext
	left=10.10.10.10
	leftsubnet=10.10.10.0/24
	rightid=33.33.33.33
	right=33.33.33.33
	rightsubnet=192.168.1.0/24
	ikelifetime=28800
	keyexchange=ikev2
	lifebytes=0
	lifepackets=0
	lifetime=1h

ipsec.secret

# /etc/ipsec.secrets
: RSA privkey.pem

# Create VPN users accounts
# ВНИМАНИЕ! После логина сначала пробел, потом двоеточие.

user1 : EAP "stongPass1"
user2 : EAP "stongPass2"
%any 33.33.33.33 : PSK "ChangeMeNow!"

Après cela, il suffit de relire la configuration, de démarrer la connexion et de vérifier qu'elle est établie :

ipsec update
ipsec rereadsecrets
ipsec up linux-nsx-psk
ipsec status

J'espère que cette petite note sera utile et fera gagner quelques heures à quelqu'un.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster