IKEv2 туннель между MikroTik и StrongSwan: EAP ms-chapv2 и доступ к сайтам
Введение
Идея статьи возникла из желания пропускать определенные сайты через VPN-туннель напрямую через маршрутизатор, так как дома большое количество устройств, а пускать весь трафик через VPN неудобно в связи с низкой пропускной способностью туннеля. Статья написана сразу после создания конфигурации. Настройка будет проходить в Winbox MikroTik.
Конфигурация StrongSwan
Здесь я рассмотрю только основные конфигурационные файлы StrongSwan, без углубления в настройку данного демона.
/etc/ipsec.conf
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
uniqueids=never
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
/etc/ipsec.secrets
# This file holds shared secrets or RSA private keys for authentication.
# RSA private key for this host, authenticating it to any other host
# which knows the public part.
# this file is managed with debconf and will contain the automatically created $
include /var/lib/strongswan/ipsec.secrets.inc
: RSA "server-key.pem"
user1 : EAP "password1"
user2 : EAP "password2"
iptables на VPS
-A FORWARD -s 10.10.10.0/24 -o eth0 -p tcp -m policy --dir in --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -s 10.10.10.0/24 -m policy --dir in --pol ipsec --proto esp -j ACCEPT
-A FORWARD -d 10.10.10.0/24 -m policy --dir out --pol ipsec --proto esp -j ACCEPT
-A FORWARD -j DROP
Импорт сертификатов и настройка IPSec MikroTik
Импорт сертификатов
Для добавления сертификатов, необходимо перенести их в память вашего MikroTik в раздел Files.
System -> Certificates
Импортируем открытый ключ корневого сертификата вашего центра сертификации на VPS на котором установлен StrongSwan.
Последовательно импортируем открытый и закрытый ключи авторизации используемые в конфигурации StrongSwan.
Настройка клиента IPsec
IP -> IPsec
Импортируем закрытый ключ авторизации StrongSwan, для использования в клиенте.
Далее, последовательно настраиваем профиль VPN-клиента.
Вместо “VPS IP” указываем адрес вашего сервера, где развернут StrongSwan.
В разделе IPsec Idenity настраиваем профиль авторизации, указываем учётные данные и сертификат импортированный ранее.
После выполнения этого шага туннель между MikroTik и StrongSwan будет поднят автоматически.
В разделе IP -> Addresses при успешной авторизации, появится IP адрес выданный StrongSwan.
Настройка маршрутизации трафика и списка ресурсов
IP -> Firewall
В разделе NAT создаем правило перенаправления трафика.
В данном случае я использовал списки адресов.
local – подсеть маршрутизатора.
List1 – список сайтов.
Перенаправляем трафик на шлюз(IP адрес выданный StrongSwan)
Настройка списков
IP -> Firewall
В разделе Address Lists необходимо добавить следующие списки:
local – подсеть маршрутизатора, в моем случае 192.168.1.0/24
List1 – список сайтов. Например habr.com, можно добавить сайт по fqdn, ip адрес будет определён автоматически.
List1 – список сайтов. Например habr.com, можно добавить сайт по fqdn, ip адрес будет определён автоматически.
Заключение
В данной статье я постарался подробно описать настройку туннеля между MicroTik и StrongSwan. Очень жду фидбека и вашей конструктивной критики.