Z powodu kilku przyczyn konieczne było zorganizowanie połączenia VPN między siecią w VMWare Cloud Director a oddzielną maszyną Ubuntu w chmurze. Notatka nie pretenduje do pełnego opisu, jest to po prostu mały przewodnik.

W sieci znalazłem jedyny artykuł z 2015 roku na ten temat „».
Niestety, nie udało się go użyć bezpośrednio, ponieważ chciałem bardziej niezawodnego szyfrowania, a nie certyfikatu samopodpisanego, i za NAT-em opisana konfiguracja by nie zadziałała.
Dlatego musiałem usiąść i przejrzeć dokumentację.
Za podstawę wziąłem konfigurację, której od lat używam, umożliwiającą połączenie z praktycznie każdej platformy i po prostu dodałem do niej fragment, który pozwala na połączenie z NSX Edge.
Ponieważ instalacja i pełna konfiguracja serwera Strongswan wykraczają poza zakres tej notatki, pozwolę sobie odwołać się do .
Przejdźmy zatem bezpośrednio do ustawień.
Schemat połączenia będzie wyglądał następująco:

z strony VMWare adres zewnętrzny 33.33.33.33 i wewnętrzna sieć 192.168.1.0/24
z strony Linux adres zewnętrzny 22.22.22.22 i wewnętrzna sieć 10.10.10.0/24
będzie także potrzebna konfiguracja certyfikatu Let's Encrypt dla adresu vpn.linux.ext
PSK z obu stron: ChangeMeNow!Konfiguracja po stronie NSX Edge:
Tekst
Włączone: tak
Włącz doskonałą tajność (PFS): tak
Nazwa: VPN_strongswan (dowolne, według własnego wyboru)
Lokalny Id: 33.33.33.33
Lokalny punkt końcowy: 33.33.33.33
Lokalne podsieci: 192.168.1.0/24
Id partnera: vpn.linux.ext
Punkt końcowy partnera: 22.22.22.22
Podsieci partnera: 10.10.10.0/24
Algorytm szyfrowania: AES256
Autoryzacja: PSK
Klucz pre-shared: ChangeMeNow!
Grupa Diffiego-Hellmana: 14 (2048 bitów – akceptowalny kompromis między szybkością a bezpieczeństwem. Ale jeśli chcesz, możesz ustawić większą)
Algorytm haszujący: SHA256
Opcja IKE: IKEv2
Tylko responder IKE: nie
Typ sesji: Sesja oparta na polityce Zrzuty ekranu


Konfiguracja po stronie 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=1hipsec.secret
# /etc/ipsec.secrets
: RSA privkey.pem
# Create VPN users accounts
# ВНИМАНИЕ! После логина сначала пробел, потом двоеточие.
user1 : EAP "stongPass1"
user2 : EAP "stongPass2"
%any 33.33.33.33 : PSK "ChangeMeNow!"po tym wystarczy przeczytać konfigurację, uruchomić połączenie i sprawdzić, czy zostało nawiązane:
ipsec update
ipsec rereadsecrets
ipsec up linux-nsx-psk
ipsec status Mam nadzieję, że ta mała notatka okaże się przydatna i zaoszczędzi komuś kilka godzin.
Źródło: habr.com
