Введение
Идея статьи возникла из желания пропускать определенные сайты через 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=neverconn 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 будет поднят автоматически.
Вывод в разделе Log при успешной авторизацииВ разделе 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. Очень жду фидбека и вашей конструктивной критики.