Disclaimer – Статья не более чем заметка для самого себя. Вопросы Почему Фря, почему Strongswan – не обсуждаются.
Что такое IPSec\IKEv2 гугль знает все. В данной конфигурации strongswan мы получаем максимальную совместимость со всеми платформами IOS/Mac OS/Windows/Android без установки сторонних приложений и клиентов.
Уточню, я уже использую сертификаты LetsEncrypt c Apache/Nginx/Postfix/Dovecote поэтому буду использовать их с StrongSwan.
pkg install strongswan
в /etc/rc.conf добавляем
strongswan_enable="YES" # gateway_enable="YES"
создаем симлинки на существующие сертификаты letsencrypt
cd /usr/local/etc/ipsec.d/cacerts ln -sf /usr/local/etc/letsencrypt/live/site.com/chain.pem chain.pem cd ../certs/ ln -sf /usr/local/etc/letsencrypt/live/site.com/fullchain.pem fullchain.pem cd /usr/local/etc/ipsec.d/private ln -sf /usr/local/etc/letsencrypt/live/site.com/privkey.pem privkey.pem
приводим файл /usr/local/etc/ipsec.conf к виду
# ipsec.conf - strongSwan IPsec configuration file # basic configuration config setup # strictcrlpolicy=yes # uniqueids = no charondebug = ike 3, cfg 3 conn %default dpdaction=clear dpddelay=35s dpdtimeout=2000s fragmentation=yes rekey=no keyexchange=ikev2 auto=add reauth=no compress=yes left=%any leftsubnet=0.0.0.0/0 leftcert=fullchain.pem leftfirewall=yes leftsendcert=always right=%any rightsourceip=192.168.103.0/24 rightdns=213.133.98.98,213.133.99.99,213.133.100.100 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=mx2.sat-expert.com # Android IPsec Hybrid RSA conn IKEv1-Xauth keyexchange=ikev1 rightauth=xauth auto=add
ipsec.secrets к виду
root@mx2/usr/local/etc> cat ipsec.secrets # filename of private key located in /usr/local/etc/ipsec.d/private/ : RSA privkey.pem # syntax is `username : EAP "plaintextpassword"` usr1 : EAP "password1" usr2 : EAP "password2" usr3 : EAP "password3" #user2 : XAUTH "password2" root@mx2/usr/local/etc>
в правила pf добавляем правила нат-а для впн подсети
table <it> persist { 192.168.103.0/24 } ext_if="em0" nat on $ext_if inet from <it> to any port != smtp -> ($ext_if)
на фв не забываем открыть UDP порты 500/4500
запускаем strongswan и смотрим что у нас происходит
ipsec start –nofork
Пока можем настроить удаленный клиент.
Пример для IOS
Пример для Mac OS
пробуем коннектится удаленным клиентом. если все нормально – запускаем strongswan как сервис.
service strongswan start
в противном случае смотрим лог и пользуемся tcpdump
Удачи 🙂