Обслуживая большое количество проектов, мы пришли к необходимости простого управления OpenVPN (сертификатами и маршрутами для пользователей), подразумевая под этим веб-интерфейс вместо того, чтобы ходить по серверам/контейнерам и выполнять в них вручную команды. Поскольку существующие для этого решения (вроде Pritunl и OpenVPN AS) — коммерческие, несколько лет назад мы создали (и используем по сей день) свой интерфейс.
Недавно мы его переписали с Python на Go и обновили внешний вид*, что и навело на мысль поделиться разработкой с более широким сообществом. Итак, встречайте ovpn-admin!
* За первоначальный вариант на Python благодарю коллегу @vitaliy-sn, а за нескучные обои обновлённый интерфейс — erste.
Возможности и интерфейс
Ovpn-admin — это Open Source-проект, реализующий веб-интерфейс для управления OpenVPN. В настоящий момент утилита поддерживает только Linux и умеет:
добавлять пользователей (генерировать сертификаты для них);
отзывать/восстанавливать сертификаты пользователей;
выдавать готовый файл конфига;
отдавать метрики для Prometheus: срок действия сертификатов, количество пользователей (всего/подключенных), информация о подключенных пользователях;
(опционально) прописывать CCD (
client-config-dir
) для каждого пользователя;(опционально) работать в режиме master/slave (синхронизация сертификатов и CCD с другим сервером);
(опционально) задавать/менять пароль для дополнительной авторизации в OpenVPN.
Вот как выглядит интерфейс ovpn-admin:
![Список пользователей и возможные действия с ними Список пользователей и возможные действия с ними](https://habrastorage.org/getpro/habr/upload_files/b0a/9f8/6fb/b0a9f86fbffc6f8a7140ef6d25e032d6.png)
![Окно добавления кастомных маршрутов для пользователя Окно добавления кастомных маршрутов для пользователя](https://habrastorage.org/getpro/habr/upload_files/792/3e8/ab8/7923e8ab8b724b9da62459d6972073c4.png)
![Пример панели на основе метрик, полученных от ovpn-admin Пример панели на основе метрик, полученных от ovpn-admin](https://habrastorage.org/getpro/habr/upload_files/ea5/745/117/ea574511798a03994ba37eb87b6d914f.png)
Как попробовать
Ovpn-admin можно установить в систему или запускать в Docker-контейнере. Инструкции описаны в README проекта.
Исходный код проекта распространяется на условиях свободной лицензии (Apache License 2.0). Будем рады новым фичам, а также, конечно, ожидаем ваши issues и просто обсуждения на GitHub или в комментариях к этому посту.
Планы по развитию
Что бы хотелось улучшить в проекте? На данный момент у нас такой список доделок:
добавить возможность дополнительной авторизации через OTP;
добавить Helm-чарт как вариант установки;
добавить группы пользователей;
уйти от вызова утилиты
easyrsa
для генерации сертификатов;уйти от вызова
bash
.
P.S.
Читайте также в нашем блоге:
«Наш рецепт отказоустойчивого VPN-сервера на базе tinc, OpenVPN, Linux»;
-
другие Open Source-проекты: