Я установлю 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 encrypt
server-cert = /etc/letsencrypt/live/333271.simplecloud.ru/fullchain.pem
server-key = /etc/letsencrypt/live/333271.simplecloud.ru/privkey.pem
# указываем подсеть для внутренней адресации в туннеле
ipv4-network = 192.168.155.0
# заворачиваем в туннель все dns запросы и резолвим их через 1.1.1.1
tunnel-all-dns = true
dns = 1.1.1.1
# заворачиваем весь трафик в VPN туннель
route = default
# эти 2 подсети отправляем мимо туннеля
no-route = 192.168.13.0/255.255.255.0
no-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
