В силу ряда причин, потребовалось организовать VPN-соединение между сетью в VMWare Cloud Director и отдельной машиной Ubuntu в облаке. Заметка не претендует на полноценное описание, это просто небольшое howto.

В сети нашлась единственная статья 2015 года на эту тему «Site to Site IPSEC VPN between NSX Edge and Linux strongSwan».
К сожалению, напрямую её использовать не получилось, т.к. хотелось шифрования понадёжнее, не самоподписанного сертификата, да и за NAT-ом описываемый конфиг не заработал бы.
Поэтому, пришлось сесть и покопаться в документации.
За основу я взял давно используемый мной конфиг, позволяющий подключаться практически из любой ОС и просто добавил к нему кусок, позволяющий подключиться к NSX Edge.
Поскольку установка и полноценная настройка сервера Strongswan выходят за рамки заметки, позволю себе сослаться на неплохой материал на эту тему.
Итак, перейдём непосредственно к настройкам.
Схема соединения у нас будет выглядеть вот так:

Настройка со стороны NSX Edge:
Настройка со стороны Strongswan:
после этого достаточно перечитать конфиг, запустить соединение и проверить, что оно установлено:
Надеюсь, эта небольшая заметка окажется полезной и сэкономит кому-нибудь пару часов.

В сети нашлась единственная статья 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.ext PSK с обеих сторон: ChangeMeNow!
Настройка со стороны NSX Edge:
Текст
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
Скриншоты



Настройка со стороны 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!"
после этого достаточно перечитать конфиг, запустить соединение и проверить, что оно установлено:
ipsec update ipsec rereadsecrets ipsec up linux-nsx-psk ipsec status
Надеюсь, эта небольшая заметка окажется полезной и сэкономит кому-нибудь пару часов.
