Учёт RADIUS и успешный вход: что доказывает каждый
Access-Accept сообщает, что сеанс может начаться. Записи Start, Interim-Update и Stop говорят, что произошло дальше; идентификатор сеанса связывает их.
В любом обсуждении тарификации VPN смешиваются два вопроса: имел ли этот пользователь право подключиться и что он на самом деле сделал. На первый отвечает аутентификация. Второй требует записей учёта, которые начинаются, обновляются и заканчиваются. Успешный вход доказывает первое и ничего не говорит о втором, поэтому рабочая настройка аутентификации RADIUS всё равно может дать пустой отчёт об использовании.
Два разных вопроса
Аутентификация решает, может ли соединение начаться, и возвращает вердикт вместе с атрибутами, такими как пул адресов или группа. Учёт записывает последовавшую услугу как последовательность событий, привязанных к одному сеансу.
Они идут по одному протоколу и обычно к одному серверу, и именно поэтому люди предполагают, что одно подразумевает другое.
Ничто в запросе доступа не несёт длительность сеанса, и ничто в записи Stop не решает заново, следовало ли пускать пользователя. Если рассматривать их как отдельные договоры, работа интеграции становится видимой: одному пути нужно решение, другому жизненный цикл с началом, серединой и концом.
Что дают три типа записей
Запись Start открывает сеанс, Interim-Update сообщает об активности, пока он открыт, а Stop закрывает его. Все три несут идентификатор сеанса, чтобы получатель мог связать их с одним событием услуги.
Этот идентификатор единственная надёжная связь между ними, потому что одно и то же имя пользователя может иметь несколько сеансов подряд или параллельно. Проектируйте хранение вокруг него, а не вокруг имени учётной записи.
Подтвердить запись не то же самое, что хорошо её сохранить. Спецификация учёта запрещает подтверждение, когда запись не удалось записать, поэтому ответ действительно сообщает, что получатель взял ответственность. Он не сообщает, что последующая задача отчётности, панель или выгрузка для биллинга использовали её правильно.
Почему имя пользователя не сеанс
Один человек подключается утром с ноутбука, а днём с телефона, и оба сеанса несут одно и то же имя учётной записи. Запись Start, пришедшая без соответствующего Stop, нельзя закрыть, найдя имя и выбрав самую старую открытую строку.
Этот короткий путь то, как отчёты об использовании получают невозможные длительности.
Держите идентичность сервера сетевого доступа рядом с идентификатором сеанса, потому что два сервера могут назначить одно и то же значение в разных контекстах, и объединение только по идентификатору может связать несвязанные сеансы. Когда сеанс завершается некорректно, политика сверки должна решить, как его закрыть, и это решение относится к проектированию, а не к ручной правке базы раз в месяц.
Где PAM уместен, а где нет
Плагин аутентификации OpenVPN вызывает этапы аутентификации и управления учётными записями PAM. Этап учётной записи проверяет право на доступ; его название не означает учёт использования, и плагин не управляет хуками открытия и закрытия сеанса PAM.
Некоторые модули PAM RADIUS могут отправлять записи учёта через эти хуки сеанса, и это работает только тогда, когда приложение действительно вызывает их.
Поэтому добавление такого модуля в стек аутентификации не создаёт событий отключения. Если нужен полный жизненный цикл, выбирайте интеграцию, которой он принадлежит: плагин или поддерживаемую сборку, которая выдаёт Start, Interim-Update и Stop при изменении состояния соединения. Проверьте её статус поддержки и документированное поведение при недоступности получателя, потому что плагин, молча теряющий записи, выглядит так же, как тот, что никогда их не отправлял. Спецификация учёта определяет семантику записей, которую интеграция обязана соблюдать.
Приёмочный прогон, который доказывает договор
Проверьте обычные подключение и отключение, затем повторное подключение под той же учётной записью, затем клиента, который исчезает, не отключаясь.
Проследите один идентификатор сеанса от создания через подтверждение до хранения и проверьте направление, единицы и интерфейс счётчиков. Непомеченное число байтов невозможно проверить позже.
Наконец, убедитесь, что сеанс, который сервер был вынужден закрыть по тайм-ауту, представлен так, как понимает отчёт. Договор, покрывающий только корректные отключения, это договор, который подводит в те дни, когда он нужнее всего.