1. Общее описание
2. Примеры конфигураций:
2.1 Cisco Systems.
2.2 Linux PoPToP.
2.3 FreeBSD mpd.
2.4 Asterisk + VoIP RADIUS.
1. Общее описание
В любой системе, работающей по протоколу RADIUS, учавствуют как
минимум три объекта: пользователь, запрашивающий услугу, сервер
доступа(NAS) ее обеспечивающий и RADIUS сервер (агент в терминах АСР).
Существенным недостатком протокола является его односторонность:
RADIUS сервер может отвечать на запросы NAS'а, но не может выступать
инициатором запроса. Когда пользователь успешно прошел аутентификацию,
RADIUS сервер выдает в ответном пакете максимальную длительность
сессии (session timeout). По истечении этого времени сервер доступа
обязан текущую сессию разорвать. Других способов повлиять на сессию у
RADIUS сервера нет.
Этого вполне достаточно в случае предоставления услуги временного
типа, когда существующий лицевой счет абонента используется для оплаты
этой единственной услуги. Если же предоставляемая услуга носит
объемный характер, либо она оказывается в рамках конвергентной
биллинговой системы, то на момент аутентификации пользователя
становится невозможным определить время, когда баланс учетной записи
иссякнет, а значит не может быть вычислена максимальная длительность
сессии.
В системе LANBilling эта проблема решена следующим образом: при
аутентификации пользователю выдается условно бесконечный таймаут
сессии. Если тарификация услуги осуществляется RADIUS агентом (он же
выполняет функции RADIUS сервера), то от сервера доступа в
обязательном порядке требуется поддержка промежуточных пакетов
эккаунтинга (alive updates). Наличие промежуточного эккаунтинга
позволяет RADIUS серверу поддерживать баланс абонента в актуальном
состоянии. Когда состояние лицевого счета достигнет отметки
блокирования доступа к услуге, агент, обслуживающий данную учетную
запись, запускает внешние скрипты, определяемые конфигурацией агента.
Сначала запускается скрипт vg_off для этой учетной записи.
Затем для каждой активной сессии (если таковые имеются) запускается
script_stop, призванный разорвать текущее соединение. В параметрах
скрипту script_stop передаются Session id, логин, выданный ip (в
случае VoIP RADIUS session id и login). Данный скрипт должен
реализовывать управление NAS'ом, вызвав принудительное завершение
сессии, используя переданные ему параметры. Подобный механизм
позоволяет также выполнить отключение сессии менеджером через
административную консоль, не производя блокировку учетной записи.
Применение внешних скриптов предоставляет необходимую гибкость в
работе с различными серверами доступа, которые должны поддерживать
какой-либо механизм внешнего управления (rsh, snmp, ssh, telnet, POD и
пр.).
2. Примеры конфигураций
Ниже приведены примеры скриптов принудительного разрыва сессии
(script_stop) для некоторых наиболее часто используемых серверов
доступа.
2.1 Cisco Systems
Пример конфигурации устройства с использованием RADIUS сервера:
!
access-list 11 permit 192.168.0.2
access-list 11 deny any
!
snmp-server community snmp_passwd rw 11
!
Этот способ менее универсален, так как зависит от версии MIB.
Приведенный ниже скрипт тестировался на cisco-7500 IOS 12.3(7)T. Поиск
и разрыв нужной сессии производится по ip адресу (3ий параметр).
Скрипт прерывания сессии: