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

Pour un certain nombre de raisons, il était nécessaire d'établir une connexion VPN entre le réseau dans VMWare Cloud Director et une machine Ubuntu distincte dans le cloud. Ce message n'est pas destiné à être une description complète, c'est juste un petit guide pratique.



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



Le seul article de 2015 sur ce sujet, " Site à site VPN IPSEC entre NSX Edge et Linux strongSwan ", a été trouvé sur le réseau .



Malheureusement, nous n'avons pas pu l'utiliser directement, car Je voulais un cryptage plus sécurisé, pas un certificat auto-signé, et la configuration décrite ne fonctionnerait pas derrière NAT.



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



Comme base, j'ai pris une configuration que j'utilise depuis longtemps, qui vous permet de vous connecter à partir de presque n'importe quel système d'exploitation, et j'ai simplement ajouté une pièce qui vous permet de vous connecter à NSX Edge.



Étant donné que l'installation et la configuration à part entière du serveur Strongswan sortent du cadre de cet article, je me permets de me référer à de bons éléments sur ce sujet .



Alors, passons directement aux paramètres.



Le schéma de connexion ressemblera à ceci:





  VMWare   33.33.33.33    192.168.1.0/24
  Linux   22.22.22.22    10.10.10.0/24
   Let's encrypt    vpn.linux.ext
PSK   : ChangeMeNow!


Configuration de NSX Edge:



Texte
Enabled: yes
Enable perfect forward secrecy (PFS): yes
Name: VPN_strongswan (,   )
Local Id: 33.33.33.33
Local Endpoint: 33.33.33.33
Local Subnets: 192.168.1.0/24
Peer Id: vpn.linux.ext
Peer Endpoint: 22.22.22.22
Peer Subnets: 10.10.10.0/24
Encryption Algorithm: AES256
Authentication: PSK
Pre-Shared Key: ChangeMeNow!
Diffie-Hellman Group: 14 (2048 bit —      .   ,   )
Digest Algorithm: SHA256
IKE Option: IKEv2
IKE Responder Only: no
Session Type: Policy Based Session


Captures d'écran




Personnalisation 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 config, 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 ce petit article sera utile et permettra à quelqu'un de gagner quelques heures.



All Articles