Категория > Новости > Сильный лебедь. Делаем VPN на strongSwan и автоматизируем подключение в iOS - «Новости»
Сильный лебедь. Делаем VPN на strongSwan и автоматизируем подключение в iOS - «Новости»25-12-2021, 00:00. Автор: Audley |
|
мануала по его настройке, предполагая, что у тебя установлена Ubuntu 20.04. Если у тебя другой Linux, команды могут отличаться, но принцип и конфиги будут по большей части те же. Первый шаг стандартный для установки чего угодно: sudo apt updateТеперь ставим нужные пакеты: libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins libtss2-tcti-tabrmd-devКогда все скачается, перейдем к настройке. Генерируем сертификатыСоздаем каталоги для сертификатов и ключей: mkdir -p~/pki/{cacerts,certs,private}Убираем у этой папки лишние права — для надежности: chmod 700 ~/pkiГенерируем корневой ключ RSA: pki --gen --type rsa --size4096 --outform pem >~/pki/private/ca-key.pemИ корневой сертификат: --dn "CN=VPN root CA" --outform pem ~/pki/cacerts/ca-cert.pemЧисло 3650 — это десять лет (в днях), которые будет работать сертификат. Можешь изменить это значение на свое усмотрение. Корневые сертификаты готовы, теперь нам нужен сертификат для нашего сервера. Делаем приватный ключ: pki --gen --type rsa --size4096 --outform pem >~/pki/private/server-key.pemИ сам сертификат. Обрати внимание, что IP в трех местах нужно изменить на IP твоего сервака. --cacert~/pki/cacerts/ca-cert.pem --cakey~/pki/private/ca-key.pem --dn "CN=NNN.NNN.NNN.NNN" --san@NNN.NNN.NNN.NNN --sanNNN.NNN.NNN.NNN --flagserverAuth --flagikeIntermediate --outform pem ~/pki/certs/server-cert.pemС этим закончили, можем перемещать ключи и сертификаты из домашнего каталога в папку настроек strongSwan: sudo cp -r~/pki/*/etc/ipsec.d/ Настраиваем strongSwanНа всякий случай переименуем старый файл с настройками, если он есть: sudo mv/etc/ipsec.conf{,.original}Откроем его sudo nano /etc/ipsec.confДобавляем раздел config setup charondebug="ike 1, knl 1, cfg 0" uniqueids=noДальше добавляем настройки туннеля IKEv2 (не забудь подставить свой IP): conn ikev2-vpn auto=add compress=no type=tunnel keyexchange=ikev2 fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no left=%any leftid=NNN.NNN.NNN.NNN 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 ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!Здесь забиты адреса гугловского DNS ( Сохраняем конфиг и выходим из nano (Ctrl-X, Y, Enter). Сервер VPN мы настроили, осталось создать креды, с которыми клиент сможет авторизоваться. За них отвечает файл sudo nano /etc/ipsec.secretsДобавляем в него строчку :RSA "server-key.pem"Двоеточие и пробел после него важны, не убирай их! Дальше задаем логин и пароль пользователя. Замени их своей комбинацией. Хороший стойкий пароль можешь создать в парольном менеджере. логин :EAP "пароль"Сохраняй файл, и перезапустим strongSwan, чтобы он прочитал новые конфиги: sudo systemctl restart strongswan-starter Настраиваем сетьНаш VPN уже работает и готов принимать соединения, но сетевой трафик до него пока не доходит. Нужно настроить файрвол и IP-форвардинг. Разрешаем пропускать трафик OpenSSH, а также UDP на портах 500 и 4500: sudo ufw allow OpenSSHsudo ufw enablesudo ufw allow 500,4500/udpОсталось сделать так, чтобы входящие пакеты IPSec обрабатывались нашей службой. Узнаем адрес нашего сетевого интерфейса: ip route show defaultПосмотри, что будет написано после слова Открываем файл с настройками правил файрвола: sudo nano /etc/ufw/before.rulesВ самом начале файла, до секции *nat-A POSTROUTING -s 10.10.10.0/24 -o ИНТЕРФЕЙС -m policy --pol ipsec --dir out -j ACCEPT-A POSTROUTING -s 10.10.10.0/24 -o ИНТЕРФЕЙС -j MASQUERADECOMMIT*mangle-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o ИНТЕРФЕЙС -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360COMMIT*filter...А в конце -A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPTЗакрываем, сохраняем. Теперь открываем файл с настройками службы файрвола: sudo nano /etc/ufw/sysctl.confДобавляем в конец вот такие строки: net/ipv4/ip_forward=1net/ipv4/conf/all/accept_redirects=0net/ipv4/conf/all/send_redirects=0net/ipv4/ip_no_pmtu_disc=1Выключаем и включаем файрвол для применения настроек: sudo ufw disablesudo ufw enableЕсли система запросит подтверждение, жми Y. Настраиваем подключениеНам нужно забрать с сервера свой сертификат, с которым мы будем подключаться. Он лежит в файле по такому пути: /etc/ipsec.d/cacerts/ca-cert.pemМожешь вывести его командой Для подключения к VPN тебе понадобятся три вещи: IP твоего сервера, файл с сертификатом и пара из логина и пароля, которые ты задал в файле Настройки в разных ОС выполняются немного по‑разному. В macOS тебе нужно:
В Windows процесс немного другой:
На iOS установка схожа с тем, что мы делали на macOS. Но поскольку я обещал продемонстрировать возможность автоматически включать и выключать VPN, мы вместо этого создадим файл с профилем, который заодно будет содержать и все настройки. На Android, увы, strongSwan не поддерживается на уровне ОС, поэтому тебе придется скачать клиентское приложение и настроить его. Впрочем, эта статья ориентирована на пользователей iOS, так что я не предполагаю, что речь о твоем основном телефоне. Куем профиль для iOSА теперь самая важная часть нашего приключения, ради которой все и затевалось. Мы создадим кастомный профиль для iOS, где пропишем, при каких условиях устройство должно подключаться к VPN. Не волнуйся — полностью полагаться на автоматизацию необязательно, и при желании ты сможешь деактивировать такое поведение в настройках, чтобы включать и выключать VPN вручную. Перейти обратно к новости |