12
Ноя

Установка и настройка Strongswan на Centos 6 IKEv2

Устанавливаем репозиторий EPEL
yum install epel-release

Устанавливаем StrongSwan

yum install strongswan

Будем считать что у вас уже есть сертификат от Let’s Encrypt certificates, вам необходимо создать симлинки к ним в каталог strongswan

ln -s /etc/letsencrypt/live/hd.zp.ua/fullchain.pem /etc/strongswan/ipsec.d/certs/fullchain.pem
ln -s /etc/letsencrypt/live/hd.zp.ua/privkey.pem /etc/strongswan/ipsec.d/private/privkey.pem
ln -s /etc/letsencrypt/live/hd.zp.ua/chain.pem /etc/strongswan/ipsec.d/cacerts/chain.pem

Вместо hd.zp.ua ваш домен

Конфиг strongswan

Редактируем конфиг /etc/strongswan/ipsec.conf

config setup
  uniqueids=no
  charondebug = ike 3, cfg 3

conn %default
  dpdaction=clear
  dpddelay=35s
  dpdtimeout=2000s

  keyexchange=ikev2
  auto=add
  rekey=no
  reauth=no
  fragmentation=yes
  compress=yes

  ### left - local (server) side
  # filename of certificate chain located in /etc/strongswan/ipsec.d/certs/
  leftcert=fullchain.pem
  leftsendcert=always
  leftsubnet=0.0.0.0/0,::/0

  ### right - remote (client) side
  eap_identity=%identity
  rightsourceip=10.1.1.0/24
  rightdns=8.8.8.8

  conn ikev2-mschapv2
  rightauth=eap-mschapv2

  conn ikev2-mschapv2-apple
  rightauth=eap-mschapv2
  leftid=hd.zp.ua

Пользователи для подключения у нас содержатся в этом файле /etc/strongswan/ipsec.secrets

#filename of private key located in /etc/strongswan/ipsec.d/private/
: RSA privkey.pem

# syntax is `username : EAP "plaintextpassword"`
rusty : EAP "IAmRustyTheMoodle"

Открываем порты для IKEv2 трафика

iptables -I INPUT -p udp --dport 500 -j ACCEPT
iptables -I INPUT -p udp --dport 4500 -j ACCEPT
iptables -I INPUT -p esp -j ACCEPT

Настроим преобразование адреса источника, так чтобы VPN трафик, исходящий из VPN сервера в Интернет, выглядел бы так, что сервер является его источником

iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE

Поскольку речь идет про дополнительные заголовки, могут возникнуть проблемы с IP фрагментацией. Для того чтобы этого избежать, нужно указать MSS используемый при установке TCP соединения, чтобы сегмент вмещал в себя пакет целиком. Но у меня работает и без этого

iptables -t mangle -I FORWARD -p tcp -m policy --pol ipsec --dir in --syn -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
iptables -t mangle -I FORWARD -p tcp -m policy --pol ipsec --dir out --syn -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360

В /etc/sysctl.conf добавляем

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Применяем изменения sysctl -p

Добавляем в автозапуск
chkconfig strongswan on
service strongswan start
[[email protected] ~]# swanctl -L
ikev2-mschapv2: IKEv2
local: %any
remote: %any
local public key authentication:
id: CN=hd.zp.ua
certs: CN=hd.zp.ua
remote EAP authentication:
ikev2-mschapv2: TUNNEL
local: 0.0.0.0/0 ::/0
remote: dynamic
ikev2-mschapv2-apple: TUNNEL
local: 0.0.0.0/0 ::/0
remote: dynamic
[[email protected] ~]# strongswan listcerts

List of X.509 End Entity Certificates

subject: "CN=hd.zp.ua"
issuer: "C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3"
validity: not before Oct 25 02:14:09 2019, ok
not after Jan 23 01:14:09 2020, ok (expires in 71 days)
serial: 03:d4:fb:ce:a0:31:ed:a1:23:9d:32:8c:76:70:de:8f:95:a8
altNames: hd.zp.ua
flags: serverAuth clientAuth
OCSP URIs: http://ocsp.int-x3.letsencrypt.org
certificatePolicies:
2.23.140.1.2.1
1.3.6.1.4.1.44947.1.1.1
CPS: http://cps.letsencrypt.org
authkeyId: a8:4a:6a:63:04:7d:dd:ba:e6:d1:39:b7:a6:45:65:ef:f3:a8:ec:a1
subjkeyId: 07:8a:72:e1:e6:3f:87:86:3f:36:fe:f7:a4:ee:ca:09:86:70:a1:56
pubkey: RSA 4096 bits, has private key
keyid: bf:1f:3c:ae:f0:65:16:6b:35:fa:32:6f:c7:d0:3a:34:c7:2c:31:62
subjkey: 07:8a:72:e1:e6:3f:87:86:3f:06:fe:f7:a4:ee:ca:09:86:70:a1:56
Комментариев нет

Leave a Comment