Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

FreeRadiusDataSource работает с внешним сервером FreeRADIUS через внутренний сервис MonitorResponderEngine, и скрипт-связку netams4связку netams4-freeradius-bridge.pl

Применение

Данный тип источника данных должен применяться для обеспечения работы пользователей в сети передачи данных, где доступ клиентов осуществляется при авторизации RADIUS-сервером, в частности при использовании беспроводного радио-доступа (Wi-Fi), авторизации через пару "логин-пароль" (PEAP/EAP-MSCHAPv2). Клиенты (саппликанты) для такой авторизации встроены в подавляющее большинство современный WiFi-устройств. Данный метод проверен на клиентах (ПК Windows, устройства iOS) и беспроводной сети на базе точек доступа Ubiquiti UniFi, но должен работать при применении любых других точек доступа, поддерживающих (автономно, или через контроллер) авторизацию по RADIUS (802.1x).

...

Необходимо создать и запустить источник данных FreeRadiusDataSource, и настроить соответствующую связку с FreeRADIUS и DHCP (ниже)

Механика работы

Беспроводной клиент (ноутбук) при подключении к беспроводной сети через встроенный саппликант производит авторизацию с FreeRADIUS-сервером, передавая указанные в настройках логин-пароль. FreeRADIUS согласно своим настройкам запускает скрипт-связку netams4-freeradius-bridge.pl, который получает все текущие атрибуты (в том числе имя (логин) пользователя), упаковывает их в MIME64, отправляет в сторону процесса NETAMS/jserver запрос (аналогично клиенту n4ctl, через локальный UDP-сокет, порт 20003). 

Запрос на стороне NETAMS4/jserver получается службой MonitorResponderEngine, которая выполняет следующие действия:

  • проверяет, есть ли в настройках источник данных типа FreeRadiusDataSource, и запущен ли он
  • распаковывает из MIME64 запрос (набор AVPairs)
  • вызывает процедуры authorization либо accounting для источника данных
     
Источник данных для операции запроса авторизации (authorization) проверяет наличие какой-либо активной услуги, ассоциированной с пришедшим параметром username. Имя проверяется либо по указанному в параметрах контракта логину (web username), либо по отдельно указанному имени доступа к услуге (для тех услуг, которые это предусматривают в своих параметрах). Если имя найдено, то авторизация возвращает обратно по цепочке FreeRadiusDataSource - MonitorResponderEngine - netams4-freeradius-bridge.pl - FreeRADIUS открытый пароль для данного логина (открытый-потому что он используется при построеннии ответа NTLM в сторону саппликанта). Если логин не найден, либо услуга с данным логином уже активна (дабы предотвратить множественные подключения под одним логином), возвращается состояние ошибки, и продолжение авторизации клиента оканчивается неудачей. 
Для данных аккаунтинга (start) происходит прописывание MAC-адреса абонента в параметры учетного объекта (acctunit). Внимание: поскольку беспроводная сеть работает на уровне 2, информации об IP-адресе клиента данные от RADIUS-сервера не содержат! Для аккаунтинга (update) происходит передача статистики (счетчиков) трафика в биллинг. Внимание: у оборудования Ubiquiti UniFi аккаунтинг сломан и всегда передает неправильные значения. Для завершения аккаунтинга (stop) происходит обнуления параметров MAC и IP address учетного объекта, и дополнительно оповещение ядра биллинга о событии LOGOFF.
Как вы обратили внимание, в данной схеме информация об IP-адресе абонента в биллинг не передается. Это связано с тем, что адрес абонент получает уже после того, как прошла авторизация в беспроводной сети, и беспроводная сеть (и соответственно FreeRADIUS с источником данных) об адресе не знают. Так как адрес абонент получает по DHCP, есть возможность совершить действие при назначении адреса DHCP-сервером (при использовании ISC DHCPD), а именно уведомить ядро биллинга о таком назначении. Для этого вызывается утилита n4ctl с параметром setip и MAC-и IP-адресом абонента; при получении данной информации биллинг ищет в списке учетных объектов соответствующий данному MAC-адресу (только что прописан через RADIUS ACCT сообщение), и прописывает динамический IP адрес абонента, заодно вызывая событие LOGIN в ядре биллинга.

Настройка