В сети нашлась единственная статья 2015 года на эту тему Site to Site IPSEC VPN between NSX Edge and Linux strongSwan.
К сожалению, напрямую её использовать не получилось, т.к. хотелось шифрования понадёжнее, не самоподписанного сертификата, да и за NAT-ом описываемый конфиг не заработал бы.
Поэтому, пришлось сесть и покопаться в документации.
За основу я взял давно используемый мной конфиг, позволяющий подключаться практически из любой ОС и просто добавил к нему кусок, позволяющий подключиться к NSX Edge.
Поскольку установка и полноценная настройка сервера Strongswan выходят за рамки заметки, позволю себе сослаться на неплохой материал на эту тему.
Итак, перейдём непосредственно к настройкам.
Схема соединения у нас будет выглядеть вот так:
со стороны 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.extPSK с обеих сторон: ChangeMeNow!
Настройка со стороны NSX Edge:
Enabled: yesEnable perfect forward secrecy (PFS): yesName: VPN_strongswan (любое, по вашему выбору)Local Id: 33.33.33.33Local Endpoint: 33.33.33.33Local Subnets: 192.168.1.0/24Peer Id: vpn.linux.extPeer Endpoint: 22.22.22.22Peer Subnets: 10.10.10.0/24Encryption Algorithm: AES256Authentication: PSKPre-Shared Key: ChangeMeNow!Diffie-Hellman Group: 14 (2048 bit приемлемый компромисс между скоростью и безопасностью. Но если хотите, можете поставить больше)Digest Algorithm: SHA256IKE Option: IKEv2IKE Responder Only: noSession Type: Policy Based Session
Настройка со стороны Strongswan:
# /etc/ipsec.confconfig setupconn %defaultdpdaction=cleardpddelay=35sdpdtimeout=300sfragmentation=yesrekey=noike=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=%anyleftsubnet=10.10.10.0/24 leftcert=certificate.pemleftfirewall=yesleftsendcert=alwaysright=%anyrightsourceip=192.168.1.0/24rightdns=77.88.8.8,8.8.4.4eap_identity=%identity# IKEv2conn IPSec-IKEv2keyexchange=ikev2auto=add# BlackBerry, Windows, Androidconn IPSec-IKEv2-EAPalso="IPSec-IKEv2"rightauth=eap-mschapv2# macOS, iOSconn IKEv2-MSCHAPv2-Applealso="IPSec-IKEv2"rightauth=eap-mschapv2leftid=vpn.linux.ext# Android IPsec Hybrid RSAconn IKEv1-Xauthkeyexchange=ikev1rightauth=xauthauto=add# VMWare IPSec VPNconn linux-nsx-pskauthby=secretauto=startleftid=vpn.linux.extleft=10.10.10.10leftsubnet=10.10.10.0/24rightid=33.33.33.33right=33.33.33.33rightsubnet=192.168.1.0/24ikelifetime=28800keyexchange=ikev2lifebytes=0lifepackets=0lifetime=1h
# /etc/ipsec.secrets: RSA privkey.pem# Create VPN users accounts# ВНИМАНИЕ! После логина сначала пробел, потом двоеточие.user1 : EAP "stongPass1"user2 : EAP "stongPass2"%any 33.33.33.33 : PSK "ChangeMeNow!"
после этого достаточно перечитать конфиг, запустить соединение и проверить, что оно установлено:
ipsec updateipsec rereadsecretsipsec up linux-nsx-pskipsec status
Надеюсь, эта небольшая заметка окажется полезной и сэкономит кому-нибудь пару часов.