Сервер OpenVPN
Процесс сервера OpenVPN предоставляет собственный канал управления — интерфейс управления (management interface): локальный TCP-слушатель, отдельный от самого VPN и предназначенный для инструмента мониторинга, а не для VPN-клиента. DumbMonit читает его как любой клиент управления: версию сервера, сообщает ли он о себе как о подключённом, и каждого клиента, находящегося сейчас в сессии, с его реальным и виртуальным адресом и его трафиком. Ничего, что могло бы изменить состояние сервера или отключить клиента, никогда не отправляется.
Клиенты по природе недолговечны: ноутбук, ушедший в спящий режим, просто исчезает из следующего считывания. DumbMonit не пытается помнить, кто был подключён пять минут назад; он сообщает только о тех, кто подключён сейчас, плюс число клиентов как метрику, которую стоит строить на графике во времени.
Что отслеживается
Заголовок раздела «Что отслеживается»Все метрики имеют префикс dumbmonit_openvpn_.
| Метрика | Что | Метки |
|---|---|---|
server_info | значение 1 | version |
server_up | 1, когда интерфейс управления сообщает о сервере CONNECTED, иначе 0 | state |
server_state_age_seconds | время с момента, как сервер перешёл в текущее состояние | |
clients_connected | число клиентов, находящихся сейчас в сессии | |
client_bytes_received, client_bytes_sent | трафик одного клиента (счётчики) | common_name, real_address |
client_connected_seconds | время с начала сессии этого клиента | common_name, real_address |
real_address никогда не содержит исходный порт клиента: он меняется при
каждом переподключении за NAT и без пользы умножал бы число рядов. Подробный ряд
получают не более 256 клиентов; clients_connected остаётся точным и сверх этого числа.
Применяются встроенные правила: Monitor unreachable, когда не удаётся установить само подключение к интерфейсу управления или пароль отклонён.
Страница монитора
Заголовок раздела «Страница монитора»Панель над графиками показывает то, что сохранил опрос; открытие страницы никогда не подключается к интерфейсу управления. Она показывает версию сервера и сообщает ли он о себе как о подключённом, число клиентов и список клиентов, находящихся сейчас в сессии, с их адресом и трафиком.
Включение интерфейса управления
Заголовок раздела «Включение интерфейса управления»-
Интерфейс управления — отдельный слушатель, по умолчанию выключенный: добавьте это в конфигурацию сервера (server.conf или, под другим именем, as.conf в OpenVPN Access Server) и перезапустите его. Привяжите его к адресу, доступному хосту DumbMonit, или к 127.0.0.1 и обращайтесь к нему через SSH-туннель или через релейный агент на той же машине.
management 0.0.0.0 7505 -
Необязательно, но рекомендуется: у интерфейса управления нет собственной учётной записи, только общий пароль. Поместите его в файл, читаемый только процессом OpenVPN, и добавьте как третий аргумент.
management 0.0.0.0 7505 /etc/openvpn/management-password -
В DumbMonit введите адрес сервера, например «vpn.lan» (порт 7505), и пароль управления, если он задан.
-
DumbMonit только читает: он отправляет version, state и status 3, но никогда signal, kill или client-kill. Он не может отключить клиента, изменить настройку или остановить сервер.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Без пароля | Только для интерфейса управления, запущенного без аргумента с файлом пароля. |
| Пароль управления | Общий пароль, заданный третьим аргументом директивы «management» сервера. |
Адрес: имя хоста или IP, при желании с :port; порт по умолчанию — 7505,
соглашение из собственной документации OpenVPN, а не стандарт, который
навязывает сервер. Параметры: порт (7505) и тайм-аут на один обмен (10 с).
Отказ в соединении или отсутствие ответа считаются недоступностью сервера. Неверный пароль отображается как ошибка учётных данных; ни то ни другое не будит никого ночью. Подключение — обычный TCP: читаемые данные не секретны, но пароль, если он задан, при каждой проверке проходит по сети открытым текстом — обращайтесь к интерфейсу только из доверенной сети или через релейный агент на той же машине, что и сервер.