Тема VPN серверов всё актуальнее день ото дня. Покажу, как быстро настроить VPN сервер OpenConnect. В чём его особенности, я рассказывал в отдельной заметке, не буду повторяться. Кратко поясню, что это VPN с использованием TLS шифрования, что делает его похожим на HTTPS трафик. Сразу скажу, что это не означает, что его нельзя отличить от реального трафика к веб сайтам. Можно, но пока такая блокировка не особо практикуется, так что можно пользоваться.Я установлю OpenConnect на Debian 12 с использованием сертификатов от Let's Encrypt и аутентификацией пользователей через связку логин/пароль. Это максимально простая настройка, в которой вы получаете полнофункциональный VPN сервер с возможностью управления маршрутизации клиентов централизованно на сервере.Подготовимся и получим сертификаты:# apt install certbot# certbot certonly -d 333271.simplecloud.ru --standaloneВ директории /etc/letsencrypt/live/333271.simplecloud.ru будут файлы fullchain.pem и privkey.pem, которые нам понадобятся позже. Устанавливаем OpenConnect из пакетов:# apt install ocservРисуем ему примерно такой конфиг /etc/ocserv/ocserv.conf. Показываю только те параметры, что поменял. Остальное отставил по умолчанию, как было:# включаем аутентификацию по данным из файлаauth = "plain[passwd=/etc/ocserv/passwd]"# указываем сертификат от let's encryptserver-cert = /etc/letsencrypt/live/333271.simplecloud.ru/fullchain.pemserver-key = /etc/letsencrypt/live/333271.simplecloud.ru/privkey.pem# указываем подсеть для внутренней адресации в туннелеipv4-network = 192.168.155.0# заворачиваем в туннель все dns запросы и резолвим их через 1.1.1.1tunnel-all-dns = truedns = 1.1.1.1# заворачиваем весь трафик в VPN туннельroute = default# эти 2 подсети отправляем мимо туннеляno-route = 192.168.13.0/255.255.255.0no-route = 10.20.1.0/255.255.255.0Файл конфигурации хорошо прокомментирован, нетрудно разобраться. Здесь я весь трафик отправляю в туннель. А вот такая настройка:route = 10.10.10.0/255.255.255.0route = 1.2.3.4/255.255.255.255Отправит в туннель только указанные подсети. Теперь создаём файл с учётками и добавляем пользователя zerox:# ocpasswd -c /etc/ocserv/passwd zeroxПерезапускаем службу и проверяем её работу:# systemctl restart ocserv# systemctl status ocservЛоги смотрим либо в /var/log/syslog, либо в systemd, если syslog отключен:# journalctl -f -u ocservВ завершении важная настройка, которую некоторые либо забывают, либо не понимают, что это такое и для чего. По умолчанию на сервере не работает перенаправление пакетов с одного сетевого интерфейса на другой. В данном случае с VPN интерфейса на WAN. Нам нужно включить эту настройку. Для этого раскомментируем в файле /etc/sysctl.conf параметр:net.ipv4.ip_forward = 1И применим его:# sysctl -pТеперь нам нужно настроить NAT, чтобы клиенты VPN сети могли выходить в интернет. Сам OpenConnect эти вопросы не решает. Для этого воспользуемся старым добрым iptables:# apt install iptables# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEEth0 - WAN интерфейс, который смотрит в интернет. Теперь идём на клиент, качаем клиентское приложение:⇨ https://gui.openconnect-vpn.net/download/Запускаем приложение, добавляем новый профиль, указав единственный параметр gateway с url сервера. В моём случае https://333271.simplecloud.ru. Далее подключаемся с использованием созданного пользователя и пароля. Нужно не забыть настроить hook в certbot на перезапуск сервера после обновления сертификата:post_hook = systemctl restart ocservНу и не забудьте применить правила файрвола после перезапуска сервера. Подробно не останавливаюсь на этих вопросах, так как уже лимит на объём заметки исчерпан.Получился удобный многофункциональный VPN сервер для решения различных прикладных задач маршрутизации трафика и доступа к корпоративным ресурсам.Если кто-то пользуется данным сервером, скажите, сталкивались ли с блокировками протокола этого VPN сервера на уровне провайдеров.#vpn