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

Pour un certain nombre de raisons, il était nécessaire d'organiser une connexion VPN entre le réseau dans VMWare Cloud Director et une machine Ubuntu distincte dans le cloud. La note ne prétend pas ê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 sur ce sujet datant de 2015 a été trouvé sur Internet »VPN IPSEC site à site entre NSX Edge et Linux strongSwan».

Malheureusement, il n'a pas été possible de l'utiliser directement, car... Je voulais un cryptage plus fiable, pas un certificat auto-signé, et la configuration décrite n'aurait pas fonctionné derrière NAT.

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

Comme base, j'ai pris une configuration que j'utilisais depuis longtemps, qui me permet de me connecter depuis presque n'importe quel OS, et j'y ai simplement ajouté un élément qui me permet de me connecter à NSX Edge.

Étant donné que l'installation et la configuration complète du serveur Strongswan dépassent le cadre de cette note, permettez-moi de me référer à bon matériel sur ce sujet.

Passons donc directement aux paramètres.

Notre schéma de connexion ressemblera à ceci :

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

со стороны 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 à partir 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
Tunnel IPSec entre Strongswan derrière NAT et VMWare NSX Edge
Tunnel IPSec entre Strongswan derrière NAT et VMWare NSX Edge

Configuration depuis 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 cette petite note sera utile et fera gagner quelques heures à quelqu'un.

Source: habr.com

Ajouter un commentaire