LANBilling и Dynamic CLIPS на Ericsson SmartEdge100
В данной статье рассмотрен пример интеграции LANBilling с BNG Ericsson SmartEdge100 (далее SE100) с целью организации гибкого и управляемого шлюза для доступа в сеть Интернет. Возможных сервисных моделей предоставления услуг на базе SE100 существует несколько, однако мы остановимся на одном набирающем с каждым днем популярность варианте: Dynamic CLIPS с динамической выдачей IP-адресов и авторизацией по DHCP option 82. Примерная схема рассматриваемой сервисной модели отражена на Рис. 1, при этом роль и RADIUS и DHCP-сервера в нашем случае выполняет LANBilling, что значительно упрощает администрирование эксплуатируемых механизмов.

Рисунок 1 (Схема рассматриваемой модели)
Справочно: Более подробную информацию про CLIPS и его настройку можно узнать в статье «Clips HOWTO».
1. Базовая настройка LANBilling
Предполагается, что была выполнена установка и базовая настройка LANBilling. В противном случае необходимо обратиться к нашей документации, подробно описывающей данные процессы, а так же общую архитектуру системы: Документация.
2. Настройка DHCP-сервера
Роль DHCP-сервера в рамках LANBilling выполняет агент LBinet. Все настройки агента, в том числе создание пулов адресов и управление ими, осуществляются с помощью web-интерфейса через экранную форму редактирования свойств RADIUS-агента в разделе DHCP-сервер. Установка агента и базовая настройка выполняются типовым образом согласно документации по базовой настройке в пункте 1.
3. Настройка RADIUS-агента
Роль RADIUS в рамках LANBilling выполняет агент Lbarcd (далее RADIUS-агент). RADIUS-агент, как это было описано выше в пункте 2, работает в симбиозе с агентом LBInet под одним sysid, поэтому создания дополнительных агентов в этом случае не требуется. Основная часть настроек является типовой (за исключением настроек LBInet) и описана в стандартной документации. Из параметров, требующих особого внимания, следует отметить (Рис. 2):

Рисунок 2 (Настройка агентов)
«Тайм-аут зависшей сессии (сек)» - интервал в секундах между временем обработки последнего Accounting-Update пакета и текущим временем, при превышении которого сессия считается устаревшей. По умолчанию 1 день, можно выставлять любые меньшие значения данного параметра, большие значения использовать крайне не рекомендуется.
«Запускать script_stop для зависших сессий» - необходим для запуска внешнего скрипта с целью принудительного разрыва устаревших сессий или отправки Disconnect-Request через внутренний механизм CoA.
«Запускать script_stop при изменении текущей скорости» - необходим для запуска внешнего скрипта с целью изменения скорости доступа или отправки через внутренний механизм CoA скоростных атрибутов для изменения текущей скорости без разрыва сессии.
Далее необходимо завести SE100 в качестве сервера доступа. Для этого из экранной формы редактирования RADIUS-агента необходимо перейти в раздел «Серверы доступа» и добавить новый сервер доступа с соответствующим IP-адресом и radius secret key (Рис. 3).

Рисунок 3 (Управление серверами доступа)
В связи с тем, что в составе RADIUS-агента имеется встроенный DHCP-сервер, функционирующий только в случае использования сервисной модели с аутентификацией по протоколу 802.1х (другими словами, только при наличии RADIUS-сессии), а так же код поддержки механизма DHCP2RADIUS, в случае применения агента LBInet требуется отключить DHCP-сервер, встроенный в RADIUS-агент. Сделать это можно путем внесения в таблицу agent_options двух конфигурационных директив radius-uses-lbinet=1 и enable-dhcp-request=0:
insert into agent_options set id=:sysid, name='radius-uses-lbinet', value=1; insert into agent_options set id=:sysid, name='enable-dhcp-request', value=0;
где :sysid = id агента RADIUS.
В рамках RADIUS-агента существует возможность аутентификации по нескольким различным критериям (login, ip, mac, opt82). Для явного включения механизма аутентификации абонентов по DHCP option 82 (имеется ввиду авторизация по VSA Agent-Remote-Id и VSA Agent-Circuit-Id, которые формирует SE100 на основании информации, извлеченной из DHCP option 82) и отключения всех остальных механизмов, требуется добавление в таблицу agent_options конфигурационной директивы radius_auth_method=opt82:
insert into agent_options set id=:sysid, name='radius_auth_method', value='opt82';
где :sysid = id агента RADIUS.
RADIUS-агент по умолчанию в ответе отсылает атрибут Acct-Interim-Interval со значением 60 (величина интервала в секундах между генерацией SE100 промежуточных Accounting-UPDATE пакетов), однако с архитектурной точки зрения для SE100 данное значение является минимальным и не рекомендуется к использованию, поэтому требуется увеличить значение данного атрибута путем добавления в таблицу agent_options конфигурационной директивы interim_update_time=600:
insert into agent_options set id=:sysid, name='interim_update_time', value='600';
где :sysid = id агента RADIUS.
Приводим значение атрибута Mac-Addr к унифицированному в LANBilling формату, для этого в таблицу agent_options добавляем конфигурационную директиву macregex="/(..)-(..)-(..)-(..)-(..)-(..)/\\1\\2\\3\\4\\5\\6/i":
insert into agent_options set id=:sysid, name='macregex', value='/(..)-(..)-(..)-(..)-(..)-(..)/\\1\\2\\3\\4\\5\\6/i';
где :sysid = id агента RADIUS.
4. Настройка RADIUS-атрибутов
Для корректного взаимодействия LANBilling и SE100 требуется проверить наличие некоторых VSA в словаре RADIUS-агента. Для этого необходимо зайти через web-интерфейс в меню «Объекты» - «Агенты» - «Словарь RADIUS-атрибутов» и добавить перечисленные ниже VSA в словарь, если обнаружится их отсутствие (в последней ревизии сборки Lanbilling 2.0-base-006 данные атрибуты уже присутствуют с словаре):
| Название | Номер | Вендор | Тип |
|---|---|---|---|
| Redback-Agent-Remote-Id | 96 | 2352 | octet |
| Redback-Agent-Circuit-Id | 97 | 2352 | octet |
| IP-Interface-Name | 104 | 2352 | string |
| DHCP-Max-Leases | 3 | 2352 | int |
| Assigned-IP-Address | 132 | 2352 | ipaddr |
| Context-Name | 4 | 2352 | string |
| Qos-Policing-Profile-Name | 87 | 2352 | string |
| Qos-Metering-Profile-Name | 88 | 2352 | string |
| Dynamic-QoS-Param | 192 | 2352 | string |
| NAT-Policy-Name | 105 | 2352 | string |
| Forward-Policy | 92 | 2352 | string |
| HTTP-Redirect-Profile-Name | 107 | 2352 | string |
Рассматриваемый нами сценарий требует наличия в ответе от RADIUS-агента ряда архитектурно обязательных для SE100 атрибутов, которые необходимо добавить с соответст