В данной статье рассмотрен пример интеграции АСР LANBilling (далее АСР) с BNG Ericsson SmartEdge100 (далее SE100) с целью организации гибкого и управляемого шлюза для доступа в сеть Интернет. Возможных сервисных моделей предоставления услуг на базе SE100 существует несколько, однако мы остановимся на одном набирающем с каждым днем популярность варианте: Dynamic CLIPS с динамической выдачей IP-адресов и авторизацией по DHCP option 82. Примерная схема рассматриваемой сервисной модели отражена на Рис. 1, при этом роль и RADIUS и DHCP-сервера в нашем случае выполняет АСР, что значительно упрощает администрирование эскплуатируемых механизмов.
Рисунок 1 (Схема рассматриваемой модели)
Справочно: Более подробную информацию про CLIPS и его настройку можно узнать в статье «Clips HOWTO».
1. Базовая настройка АСР
Предполагается, что была выполнена установка и базовая настройка АСР. В противном случае необходимо обратиться к нашей документации, подробно описывающей данные процессы, а так же общую архитектуру системы: Документация.
2. Настройка DHCP-сервера
Роль DHCP-сервера в рамках АСР выполняет агент LBinet. Все настройки агента, в том числе создание пулов адресов и управление ими, осуществляются с помощью web-интерфейса через экранную форму редактирования свойств RADIUS-агента в разделе DHCP-сервер. Установка агента и базовая настройка выполняются типовым образом согласно документации по базовой настройке в пункте 1. Описание основных сценариев функционирования и специфичных параметров настройки отражено в документации по LBinet: пункт "Установка DHCP-агента LBinet".
3. Настройка RADIUS-агента
Роль RADIUS в рамках АСР выполняет агент 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 к унифицированному в АСР формату, для этого в таблицу 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-атрибутов
Для корректного взаимодействия АСР и 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 атрибутов, которые необходимо добавить с соответствующими значениями в меню «Свойства» - «RADIUS-атрибуты» на вкладке «Агент» (Рис. 4):
«IP-Interface-Name» - определяет имя multibind-интерфейса, к которому будут динамически привязываться абонентские circuit. Следует так же отметить, что SE100 перепишет поле GIADDR в DHCP-запросе на IP-адрес данного интерфейса перед тем, как срелеить DCHP-пакет на сервер с DHCP-агентом АСР. Это в частности требуется для корректного ответа от DHCP-агента в сторону SE100 именно на IP-адрес multibind-интерфейса, а не IP-адрес, с которого пришел DHCP-запрос.
Примечание: На сервере с АСР должны быть добавлены маршруты до соответствующих IP-префиксов multibind-интерфейсов, если они находятся на расстоянии более одного L3 хопа от сервера с АСР.
В нашем случае значение атрибута: CLIENTS.
«DHCP-Max-Leases» - для корректной работы Dynamic CLIPS значение данного атрибута всегда должно быть равно 1 (архитектурное требование SE100).
«Context-Name» - определяет имя контекста (другими словами, это полноценный виртуальный маршрутизатор), с которым взаимодейтсвуют агенты АСР. Если в настройке порта SE100 была указана явная привязка сервиса clips к конкретному контексту, атрибут Context-Name не является обязательным в ответе от RADIUS-агента.
Рисунок 4 (Атрибуты)
На рисунке 4 можно заметить наличие двух аттрибутов, которые еще не упоминались ранее в рамках этой статьи:
«Qos-Policing-Profile-Name» - значение: qos-default-in.
«Qos-Metering-Profile-Name» - значение: qos-default-out.
Данные атрибуты определяют имена default-профилей полисинга для входящего и исходящего потока трафика соответственно, в последствии переопределяются значениями в RADIUS-атрибутах классового полисинга, о которых пойдет речь далее.
Для корректной работы механизма ограничения потока абонентского трафика до нужной величины требуется наличие в ответе от RADIUS-агента четырех (не считая двух default-значений, описанных выше) атрибутов классового полисинга на каждое каждое конкретное значение скорости в тарифе. Атрибуты классового полисинга заводятся в меню «Свойства» - «RADIUS-атрибуты» на вкладке «Скорость». В нашем случае был создан тариф со значением скорости 6144 Кбит/с. Исходя из сказанного выше, заводим следущие атрибуты и привязываем их к значению скорости 6144 (Рис. 5):
«police-class-rate» - значение: «police-class-rate LCLASS rate-absolute 6144».
«meter-class-rate» - значение: «meter-class-rate LCLASS rate-absolute 6144».
«police-class-burst» - значение: «police-class-burst LCLASS 921600».
«meter-class-burst» - значение: «meter-class-burst LCLASS 921600».
Рисунок 5 (Скорость)
Во всех рассматриваемых выше случаях (Рис. 4, Рис. 5) RADIUS-атрибуты привязывались к RADIUS Code Access-Accept, однако в АСР существует возможность привязки атрибутов к RADIUS Code Access-Reject. Логика работы RADIUS-агента будет такова: если абонент существует в хранилище АСР, но по каким-либо причинам (например, имеется блокировка по балансу) на его запрос авторизации дается Access-Reject, агент ответит Access-Accept, но с атрибутами, которые привязаны в АСР к RADIUS Code Access-Reject. Данный механизм очень удобно использовать, например, для передачи профиля редиректа на SE100 (Рис. 6).
Рисунок 6 (Передача профиля)
Примечание: Необходимо к Access-Reject так же привязать архитектурно обязательные для SE100 атрибуты (IP-Interface-Name, DHCP-Max-Leases) с точно такими же значениями, как и для Access-Accept.
Рисунок 7 (Редактирование атрибута)
SE100 пересылает значение IP-адреса в атрибуте Assigned-IP-Address, с целью корректной интерпритации RADIUS-агентом данного значения требуется произвести замену атрибута Assigned-IP-Address на Framed-IP-Address. Для этого заходим в меню «Объекты» - «Агенты» - «Словарь RADIUS-атрибутов», открываем меню редактирования атрибута Assigned-IP-Address и в списке «Заменить атрибут» выбираем Framed-IP-Address (Рис. 7).
5. Настройка LBInventory
Модуль LBInventory является составной частью ядра АСР, однако требует отдельного лицензирования. Все механизмы авторизации по DHCP option 82 и механизмы выдачи адреса DHCP option 82 работают только при наличии лицензии на данный модуль.
В нашем случае присутствует один L2-коммутатор, формирующий DHCP option 82 на клиентских портах. Создадим данное устройство в LBInventory, для этого требуется выполнить следующие действия (Рис. 8):
а) зайти в меню «Объекты» - «Inventory» - «Редактировать устройства»;
б) нажать кнопку добавить, ввести имя и нажать сохранить;
в) зайти в редактирование созданного устройства;
г) добавить опцию Agent-Remote-Id (правая верхняя часть окна) со значением MAC-адреса коммутатора (MAC-адрес вводится без разделителей в нижнем регистре);
д) добавить требуемое количество портов на вкладке «Порты устройства»;
е) нажать кнопку «Сохранить».
Рисунок 8 (Свойства оборудования)
6. Завершение настройки АСР
Для завершения настройки АСР требуется создать учетную запись и привязать её к ранее созданному устройству и порту. О том, как это сделать, можно прочесть в стандартной документации: в разделе "Учетные записи".
7. Настройка CoA (Change of Authorization)
Механизм CoA в АСР реализован внутри RADIUS агента начиная со сборки 2.0.21, для его включения необходимо внести изменения в таблицу agent_options:
insert into agent_options set id=:sysid, name='radius-enable-coa', value='1';
где :sysid = id агента RADIUS.
Cообщения CoA отправляются на UDP порт 3799 NAS устаройства с использованием secret указанного в разделе «Серверы доступа». В качестве идентификатора используется атрибут Acct-Session-Id. Для сброса сессии используется стандартное сообщение Disconnect-Request, при изменении скорости отправляется запрос CoA-Request, включающий в себя набор RADIUS атрибутов привязанных к скорости.
Более сложные механизмы могут быть реализованы через внешний скрипт управления. Путь к скрипту handler указывается в конфигурационном файле RADIUS-агента (например, handler = /usr/local/billing/handler.sh). Текст handler можно написать на любом скриптовом языке программирования, минимальный рабочий пример на shell можно скачать по ссылке.
8. Настройка SE100
Для рассматриваемого нами сценария на SE100 был создан отдельный контекст LBILL. Ниже приведены основные конфигурационные директивы данного контекста:
context LBILL ! interface CLIENTS multibind ip address 10.199.1.1/16 dhcp relay 65535 giaddr 10.199.1.1 ! interface DOWNL description To_Test_Client_Vlan_22 ip address 172.1.1.1/24 ! interface UPL ip address 192.168.12.16/24 ip source-address telnet ssh radius dhcp-server ! policy access-list LGROUP seq 10 permit ip 10.199.0.0 0.0.255.255 class LCLASS ! aaa authentication administrator local aaa authentication subscriber radius aaa accounting subscriber radius aaa accounting event dhcp radius accounting server 192.168.12.12 encrypted-key XXXXXXXXXX radius coa server 192.168.12.12 encrypted-key XXXXXXXXX port 3799 ! radius server 192.168.12.12 encrypted-key XXXXXXXXXXX radius max-retries 5 radius timeout 30 service ssh server service telnet server ! dhcp relay server 192.168.12.12 ! end ! ! ! ! ! ** End Context **
Так же следует отметить необходимые настройки за пределами контекста LBILL, а именно конфигурацию физического порта:
port ethernet 2/2 no shutdown encapsulation dot1q bind interface tmgmt test_priv dot1q pvc 10 bind interface UPL LBILL dot1q pvc 22 encapsulation multi bind interface DOWNL LBILL service clips dhcp maximum 8000 context LBILL
и конфигурацию default-политик:
qos policy qos-default-in policing radius-guided rate 64 burst 9600 ip access-group LGROUP LBILL class LCLASS rate 102400 burst 15036000 rate-calculation exclude layer-2-overhead ! qos policy qos-default-out metering radius-guided rate 64 burst 9600 ip access-group LGROUP LBILL class LCLASS rate 102400 burst 15036000 rate-calculation exclude layer-2-overhead
Подробная расшифровка семантики фрагментов конфигурации SE100 выходит за пределы данной статьи, так как это будет как минимум дублированием информации статьи «Clips HOWTO», да и чтение официальной документации делает многие механизма более ясными и понятными.
9. Заключение
И в заключение хотелось бы отметить, что материал данной статьи не является сбором постулатов, которые необходимо безоговорочно выполнять шаг за шагом, а всего лишь является попыткой показать существующие в АСР LANBilling механизмы и компоненты, которые можно использовать для поддержки со стороны АСР сценария Dynamic CLIPS на базе Ericsson SmartEdge, надеюсь статья окажется полезной.
С уважением,
Руководитель отдела внедрений ООО «Сетевые Решения»
Разживин Виталий