IPSec-Tunnel zwischen Strongswan hinter NAT und VMWare NSX Edge

Aufgrund verschiedener Gründe war es notwendig, eine VPN-Verbindung zwischen dem Netzwerk in VMWare Cloud Director und einer separaten Ubuntu-Maschine in der Cloud einzurichten. Diese Notiz erhebt nicht den Anspruch auf eine vollständige Beschreibung, sondern ist lediglich ein kleines How-To.

IPSec-Tunnel zwischen Strongswan hinter NAT und VMWare NSX Edge

Es fand sich nur ein einziger Artikel aus dem Jahr 2015 zu diesem Thema „Site-to-Site IPSEC VPN zwischen NSX Edge und Linux strongSwan».

Leider konnte ich ihn nicht direkt verwenden, da ich eine sicherere Verschlüsselung ohne selbstsigniertes Zertifikat wollte und die beschriebene Konfiguration hinter NAT nicht funktionieren würde.

Deshalb musste ich mich hinsetzen und die Dokumentation durchforsten.

Ich habe als Grundlage eine bereits lange von mir verwendete Konfiguration genommen, die es ermöglicht, sich praktisch von jedem Betriebssystem aus zu verbinden, und habe nur einen Abschnitt hinzugefügt, der die Verbindung zum NSX Edge ermöglicht.

Da die Installation und die umfassende Konfiguration des Strongswan-Servers den Rahmen dieser Notiz sprengen, erlaube ich mir, auf ein gutes Material zu diesem Thema Bezug zu nehmen.

Kommen wir also direkt zu den Einstellungen.

Das Schema der Verbindung wird wie folgt aussehen:

IPSec-Tunnel zwischen Strongswan hinter NAT und VMWare NSX Edge

von VMWare die externe Adresse 33.33.33.33 und das interne Netzwerk 192.168.1.0/24
von Linux die externe Adresse 22.22.22.22 und das interne Netzwerk 10.10.10.0/24
zudem ist ein Let's Encrypt-Zertifikat für die Adresse vpn.linux.ext erforderlich
PSK von beiden Seiten: ChangeMeNow!

Konfiguration auf der NSX Edge-Seite:

Text

Enabled: yes
Enable perfect forward secrecy (PFS): yes
Name: VPN_strongswan (beliebig, nach Ihrer Wahl)
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 — akzeptabler Kompromiss zwischen Geschwindigkeit und Sicherheit. Aber wenn Sie möchten, können Sie auch mehr einstellen)
Digest Algorithm: SHA256
IKE Option: IKEv2
IKE Responder Only: no
Session Type: Policy Based Session

Screenshots
IPSec-Tunnel zwischen Strongswan hinter NAT und VMWare NSX Edge
IPSec-Tunnel zwischen Strongswan hinter NAT und VMWare NSX Edge

Konfiguration auf der Strongswan-Seite:

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!"

Nach diesem Schritt reicht es, die Konfiguration zu überprüfen, die Verbindung zu starten und sicherzustellen, dass sie hergestellt wurde:

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

Ich hoffe, diese kleine Notiz erweist sich als nützlich und spart jemandem ein paar Stunden.

Quelle: habr.com

60GB SSD 8Gb DDR4