Архивы: pf

Установка StrongSwan на FreeBSD c максимальной совместимостью IKEv2

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

Удачи 🙂