IPSec Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Strongswan Π·Π° NAT ΠΈ VMWare NSX Edge

Π’ силу ряда ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ VPN-соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠ΅Ρ‚ΡŒΡŽ Π² VMWare Cloud Director ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ машиной Ubuntu Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ° Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ описаниС, это просто нСбольшоС howto.

IPSec Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Strongswan Π·Π° NAT ΠΈ VMWare NSX Edge

Π’ сСти нашлась СдинствСнная ΡΡ‚Π°Ρ‚ΡŒΡ 2015 Π³ΠΎΠ΄Π° Π½Π° эту Ρ‚Π΅ΠΌΡƒ Β«Site to Site IPSEC VPN between NSX Edge and Linux strongSwanΒ».

К соТалСнию, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‚.ΠΊ. Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅, Π½Π΅ самоподписанного сСртификата, Π΄Π° ΠΈ Π·Π° NAT-ΠΎΠΌ описываСмый ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π» Π±Ρ‹.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΠ΅ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π—Π° основу я взял Π΄Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ практичСски ΠΈΠ· любой ОБ ΠΈ просто Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊ Π½Π΅ΠΌΡƒ кусок, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ NSX Edge.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ установка ΠΈ полноцСнная настройка сСрвСра Strongswan выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ, позволю сСбС ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° эту Ρ‚Π΅ΠΌΡƒ.

Π˜Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ нСпосрСдствСнно ΠΊ настройкам.

Π‘Ρ…Π΅ΠΌΠ° соСдинСния Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

IPSec Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Strongswan Π·Π° NAT ΠΈ 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!

Настройка со стороны 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

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹
IPSec Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Strongswan Π·Π° NAT ΠΈ VMWare NSX Edge
IPSec Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Strongswan Π·Π° NAT ΠΈ VMWare NSX Edge

Настройка со стороны 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

НадСюсь, эта нСбольшая Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° окаТСтся ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈ сэкономит ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠ°Ρ€Ρƒ часов.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com