В СКАТ DPI используются RADIUS-атрибуты вендора, которые необходимо добавить в dictionary.xml InetAccess и InetAccounting, если они там отсутствуют:
<vendor name="VasExperts" code="43823"> <attribute name="VasExperts-Service-Profile" code="1" type="string" /> <attribute name="VasExperts-Policing-Profile" code="2" type="string" /> <attribute name="VasExperts-Enable-Service" code="3" type="string" /> <attribute name="VasExperts-Restrict-User" code="7" type="integer" /> </vendor>
VasExperts-Service-Profile - имя профиля услуги fastDPI,
VasExperts-Enable-Service - включение/выключении услуги по ее коду,
VasExperts-Policing-Profile - имя профиля policy,
VasExperts-Restrict-User - флаг блокировки абонента.
- 1 - бонусная программа
- 2 - реклама
- 3 - блокировка рекламы
- 4 - черный список
- 5 - белый список
- 6 - уведомление
- 7 - кэширование
- 8 - пройдена ddos защита
- 9 - сбор netflow статистики для биллинга
- 10 - услуга защиты от DDOS
- 11 – CGNAT
Например, для того, чтобы включить отправку Netflow для сессии, то в Access-Accept (radius.realm.default.attributes=) необходимо выдать "VasExperts-Enable-Service=9:on":
radius.realm.default.attributes=Acct-Interim-Interval=900;VasExperts-Enable-Service=9:on
Если для услуги необходимо включить настроенный профиль, то указываем VasExperts-Service-Profile=<код услуги>:<имя профиля услуги>:
radius.realm.default.attributes=Acct-Interim-Interval=900;VasExperts-Enable-Service=9:on;VasExperts-Service-Profile=11:nat_profile;VasExperts-Service-Profile=5:white_list
Скорость регулируем, указывая имя профиля policy: VasExperts-Policing-Profile=rate_10M.
Настройка типа устройства
Создайте тип устройства "СКАТ DPI", укажите CoAServiceActivator в поле "Обработчик активации сервисов" и CoAProtocolHandler в поле "Обработчик процессора протокола". В конфигурации типа устройства укажите:
# Режим поиска сервиса (аккаунта) договора: 0 (по умолчанию) - по логину, 1 - по интерфейсу на устройстве (в предобработке должны быть # проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или INTERFACE_ID), 2 - по VLAN на устройстве (в предобработке # должны быть проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или VLAN_ID), 4 - по VLAN на устройстве или # дочернем устройстве (в предобработке должны быть проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или VLAN_ID), # 5 - по MAC-адресу на устройстве (в предобработке должна быть проставлена опция MAC_ADDRESS), 6 - по MAC-адресу на # устройстве или дочернем устройстве (в предобработке должна быть проставлена опция MAC_ADDRESS). #radius.servSearchMode=0 # Нужно ли проверять пароль: 0 - нет (например, для IPoE), 1 (по умолчанию) - да. #radius.password.verification=1 # Порт для отправки PoD и CoA-запросов (по умолчанию - порт, заданный в устройстве в поле Хост/порт) radius.port=3799 # При выдаче Access-Accept добавлять запись в базу. # Hеобходимо, если используется Reject-To-Accept и по Start-пакету нельзя определить в каком состоянии соединение connection.start.fromAccept=1 # Таймаут перевода соединения в статус suspended при отсутствии радиус пакетов сессии connection.suspend.timeout=3600 # Таймаут закрытия соединения при отcутствии радиус пакетов сессии (не складывается с connection.suspend.timeout) connection.close.timeout=3600 # При закрытии соединения по таймауту, 0 (по умолчанию) - просто закрыть, # 1 - попытаться сбросить также на NAS'е (вызвать connectionClose у обработчика активации сервисов) #connection.close.timeout.forceClose=1 # Атрибуты, выдаваемые при авторизации по реалму default (default - реалм по умолчанию) # Acct-Interim-Interval - требуемый интервал между Accounting-Update запросами по сессии от NAS'а radius.realm.default.attributes=Acct-Interim-Interval=900 #radius.realm.default.attributes=Acct-Interim-Interval=900;VasExperts-Enable-Service=9:on # Коды ошибок авторизации, при которых отвечать Access-Accept в состоянии disable (rejectToAccept) radius.disable.accessCodes= # Какие адреса выдавать при ответе Access-Accept в состоянии disable: # 0 (по умолчанию) - из radius.disable.ipCategories, 1 - так же, как если бы не было ошибки (в том числе привязанные к сервису в договоре) #radius.disable.mode=0 # Атрибуты, выдаваемые при ответе Access-Accept в состоянии disable radius.disable.attributes=Acct-Interim-Interval=900;VasExperts-Restrict-User=1 # Атрибуты, отправляемые в CoA при необходимости ограничить доступ sa.radius.disable.attributes=VasExperts-Restrict-User=1 # Атрибуты, отправляемые в CoA при необходимости включить доступ sa.radius.enable.attributes=VasExperts-Restrict-User=0 # Id фиктивного сервиса, к которому будут привязываться сессии, по которым нормальный сервис не был найден (код ошибки: 1, логин не найден). # Необходим, если в radius.disable.accessCodes присутствует код 1 #radius.disable.servId= # Шаблон опций-параметров сессий (1 - опция-папка, в которой содержатся опции-Service-Profile, 2 - опция-папка, в которой содержаться опции-Policing-Profile) # В конфигурации опций, соответственно, указано serviceProfile= и policingProfile= #radius.inetOption.1.template=VasExperts-Service-Profile=$serviceProfile;VasExperts-Policing-Profile=$policingProfile radius.inetOption.1.template=VasExperts-Service-Profile=$serviceProfile radius.inetOption.2.template=VasExperts-Policing-Profile=$policingProfile # Атрибуты сессии, которые отправляются в CoA (для того, чтобы СКАТ идентифицировал, для какой сессии запрос) sa.radius.connection.attributes=Acct-Session-Id # Не сбрасывать сессию при включении/отключении доступа (а менять параметры, отправлять CoA) sa.radius.connection.withoutBreak=1 # Префикс набора опций для ServiceActivator (используем тот же набор, что используется для выдачи в Access-Accept) sa.radius.option.attributesPrefix=radius.inetOption. # Проверка на повторную аутентификацию при Access-Request. Бывает нужна в случаях, когда NAS сбрасывает (теряет) сессию, но # Stop-пакет не присылает и клиент пытается подключиться повторно, но у него стоит ограничение на максимум одну сессию. При совпадении # callingStationId с одной из активных сессий и установленным параметром: 1 - осуществляется попытка закрытия старой сессии (connectionClose), # 2 - попытка закрытия сессии (connectionClose) и завершение ее в базе, не дожидаясь стоп пакета, 3 - завершение в базе. #radius.connection.checkDuplicate=0 # Должен ли поиск по логину идти без учета регистра. По умолчанию - нет (0). #radius.username.ignoreCase=0 # Параметры активации сервисов # длина паузы, если возникла ошибка #sa.error.pause=60 # количество заданий за раз #sa.batch.size=20 # время (сек) ожидания завершения всех заданий (при асинхронной работе) #sa.batch.wait=5 # пауза (сек) после обработки заданий #sa.batch.pause=0 # время (сек) ожидания новой задачи перед вызовом disconnect. #sa.batch.waitNext=5
О выдаче IP-адреса и других параметрах при работе с RADIUS читайте здесь.
IPoE
Схема аналогична Cisco IP Subscriber c инициацией сессии по IP-пакету - Unclassified source MAC address (For Layer 2-connected IP subscribers, a new IP session is triggered when an IP packet with an unclassified source MAC address (which means that an IP session does not yet exist for that MAC address) is received). Абонент получает динамический или статический адрес по DHCP от InetAccess-сервера биллинга, далее в InetAccess от СКАТ приходит Access-Request с User-Name=<IP-адрес абонента>, биллинг находит по указанному <IP-адрес абонента> и выдает параметры доступа в RADIUS-ответе СКАТ'у.
Для работы необходимо настроить InetDhcpProcessor, чтобы InetAccess выступал DHCP-сервером и абонент получал IP-адрес от биллинга.
В inet-access.xml и inet-accounting.xml необходимо вместо:
<!-- Cоздание процессора radius-пакетов --> <bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor"/>
указать:
<!-- Cоздание процессора radius-пакетов --> <bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusHelperProcessor"/>
В конфигурации корневого устройства указать в параметре radius.key.deviceTypeIds ID типа устройства СКАТ DPI:
radius.key.deviceTypeIds=<ID типа устройства СКАТ DPI>
Чтобы отключить проверку пароля при RADIUS-аутентификации, в типе устройства "СКАТ DPI" укажите:
# Нужно ли проверять пароль: 0 - нет (например, для IPoE), 1 (по умолчанию) - да. radius.password.verification=0
Статический IP-адрес
Если абонентам назначается статический IP-адрес, то в этом случае биллинг не обязательно должен быть DHCP-сервером (но может им быть и выдавать одни и те же адреса, указанные в сервисе договора). Адрес (или подсеть) должен быть указан в сервисе на договоре абонента. Для того, чтобы для сервисов работал поиск по IP-адресу, в конфигурации типа сервиса нужно указать:
# Для сервисов данного типа работает поиск по статическому IP-адресу при аутентификации serv.search.address=1
Чтобы при RADIUS-аутентификации поиск происходил по IP-адресу, в конфигурации типа устройства СКАТ DPI укажите:
# Поиск сервиса по IP-адресу radius.serviceSearchMode=7