- PVSM.RU - https://www.pvsm.ru -
Обслуживая большое количество проектов, мы пришли к необходимости простого управления OpenVPN (сертификатами и маршрутами для пользователей), подразумевая под этим веб-интерфейс вместо того, чтобы ходить по серверам/контейнерам и выполнять в них вручную команды. Поскольку существующие для этого решения (вроде Pritunl и OpenVPN AS) — коммерческие, несколько лет назад мы создали (и используем по сей день) свой интерфейс.
Недавно мы его переписали с Python на Go и обновили внешний вид*, что и навело на мысль поделиться разработкой с более широким сообществом. Итак, встречайте ovpn-admin [1]!
* За первоначальный вариант [2] на Python благодарю коллегу @vitaliy-sn [3], а за нескучные обои обновлённый интерфейс — erste [4].
Ovpn-admin — это Open Source-проект, реализующий веб-интерфейс для управления OpenVPN. В настоящий момент утилита поддерживает только Linux и умеет:
добавлять пользователей (генерировать сертификаты для них);
отзывать/восстанавливать сертификаты пользователей;
выдавать готовый файл конфига;
отдавать метрики для Prometheus: срок действия сертификатов, количество пользователей (всего/подключенных), информация о подключенных пользователях;
(опционально) прописывать CCD (client-config-dir
) для каждого пользователя;
(опционально) работать в режиме master/slave (синхронизация сертификатов и CCD с другим сервером);
(опционально) задавать/менять пароль для дополнительной авторизации в OpenVPN.
Вот как выглядит интерфейс ovpn-admin:
Ovpn-admin можно установить в систему или запускать в Docker-контейнере. Инструкции описаны в README [5] проекта.
Исходный код проекта распространяется на условиях свободной лицензии (Apache License 2.0). Будем рады новым фичам [6], а также, конечно, ожидаем ваши issues [7] и просто обсуждения [8] на GitHub или в комментариях к этому посту.
Что бы хотелось улучшить в проекте? На данный момент у нас такой список доделок:
добавить возможность дополнительной авторизации через OTP;
добавить Helm-чарт как вариант установки;
добавить группы пользователей;
уйти от вызова утилиты easyrsa
для генерации сертификатов;
уйти от вызова bash
.
Читайте также в нашем блоге:
«Наш рецепт отказоустойчивого VPN-сервера на базе tinc, OpenVPN, Linux [9]»;
другие Open Source-проекты:
Автор: Илья Сосновский
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/openvpn/362539
Ссылки в тексте:
[1] ovpn-admin: https://github.com/flant/ovpn-admin
[2] первоначальный вариант: https://github.com/vitaliy-sn/openvpn-easyrsa-web-ui/tree/dev
[3] @vitaliy-sn: https://www.pvsm.ru/users/vitaliy-sn
[4] erste: https://github.com/erste
[5] README: https://github.com/flant/ovpn-admin/blob/master/README.md
[6] новым фичам: https://github.com/flant/ovpn-admin/pulls
[7] issues: https://github.com/flant/ovpn-admin/issues
[8] обсуждения: https://github.com/flant/ovpn-admin/discussions
[9] Наш рецепт отказоустойчивого VPN-сервера на базе tinc, OpenVPN, Linux: https://habr.com/ru/company/flant/blog/338628/
[10] elasticsearch-extractor — утилита для извлечения индексов из снапшотов Elasticsearch: https://habr.com/ru/company/flant/blog/532538/
[11] Представляем k8s-image-availability-exporter для обнаружения пропавших образов в Kubernetes: https://habr.com/ru/company/flant/blog/495358/
[12] Представляем shell-operator: создавать операторы для Kubernetes стало ещё проще: https://habr.com/ru/company/flant/blog/447442/
[13] Источник: https://habr.com/ru/post/543986/?utm_source=habrahabr&utm_medium=rss&utm_campaign=543986
Нажмите здесь для печати.