Перейти к содержанию

Сервер 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, когда не удаётся установить само подключение к интерфейсу управления или пароль отклонён.

Страница монитора

Панель над графиками показывает то, что сохранил опрос; открытие страницы никогда не подключается к интерфейсу управления. Она показывает версию сервера и сообщает ли он о себе как о подключённом, число клиентов и список клиентов, находящихся сейчас в сессии, с их адресом и трафиком.

Включение интерфейса управления

  1. Интерфейс управления — отдельный слушатель, по умолчанию выключенный: добавьте это в конфигурацию сервера (server.conf или, под другим именем, as.conf в OpenVPN Access Server) и перезапустите его. Привяжите его к адресу, доступному хосту DumbMonit, или к 127.0.0.1 и обращайтесь к нему через SSH-туннель или через релейный агент на той же машине.

    management 0.0.0.0 7505
    
  2. Необязательно, но рекомендуется: у интерфейса управления нет собственной учётной записи, только общий пароль. Поместите его в файл, читаемый только процессом OpenVPN, и добавьте как третий аргумент.

    management 0.0.0.0 7505 /etc/openvpn/management-password
    
  3. В DumbMonit введите адрес сервера, например «vpn.lan» (порт 7505), и пароль управления, если он задан.

  4. DumbMonit только читает: он отправляет version, state и status 3, но никогда signal, kill или client-kill. Он не может отключить клиента, изменить настройку или остановить сервер.

Warning

Любой, кто достигает порта управления и знает пароль, может отключать клиентов, читать все их реальные IP-адреса и перенастраивать работающий сервер: не выставляйте его в публичную сеть, закройте правилом межсетевого экрана, разрешающим только хост DumbMonit, и задайте пароль.

Учётные данные

Учётные данные Поля
Без пароля Только для интерфейса управления, запущенного без аргумента с файлом пароля.
Пароль управления Общий пароль, заданный третьим аргументом директивы «management» сервера.

Адрес: имя хоста или IP, при желании с :port; порт по умолчанию — 7505, соглашение из собственной документации OpenVPN, а не стандарт, который навязывает сервер. Параметры: порт (7505) и тайм-аут на один обмен (10 с).

Отказ в соединении или отсутствие ответа считаются недоступностью сервера. Неверный пароль отображается как ошибка учётных данных; ни то ни другое не будит никого ночью. Подключение — обычный TCP: читаемые данные не секретны, но пароль, если он задан, при каждой проверке проходит по сети открытым текстом — обращайтесь к интерфейсу только из доверенной сети или через релейный агент на той же машине, что и сервер.