RDP IPoE BRAS (EcoNAT)

EcoBRAS начинает новую сессию после переключения сервиса (скорости/доступа), текущий включенный сервис приходит в RADIUS-Accounting в атрибуте Cisco-Service-Info.

Создайте тип устройства Econat, укажите в поле Обработчик активации сервисов: ru.bitel.bgbilling.modules.inet.dyn.device.radius.CoAServiceActivator, а в поле Обработчик процессора протокола: ru.bitel.bgbilling.modules.inet.dyn.device.rdp.EconatProtocolHandler.

В конфигурации данного типа устройства укажите:

# Порт для отправки PoD и CoA-запросов (по умолчанию - порт, заданный в устройстве в поле Хост/порт)
radius.port=3799
# Режим поиска сервиса (аккаунта) договора: по IP-адресу (если в аккаунте указан статический адрес)
radius.servSearchMode=7
# Нужно ли проверять пароль: 0 - нет (например, для IPoE), 1 (по умолчанию) - да.
radius.password.verification=0
# Берем адрес из Access-Request
radius.address.fromRequest=1
# Какие адреса выдавать при ответе Access-Accept в состоянии disable:
# 0 (по умолчанию) - из radius.disable.ipCategories, 1 - так же, как если бы не было ошибки (в том числе привязанные к сервису в договоре)
radius.disable.mode=0
 
# При выдаче 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;Idle-Timeout=4200
# Шаблон опций-параметров сессий, значения макросов указываются в конфигурации опции
radius.inetOption.1.template=cisco-SSG-Account-Info=QU;;$in;;D;;$out
 
# Какие адреса выдавать при ответе Access-Accept в состоянии disable:
# 0 (по умолчанию) - из radius.disable.ipCategories, 1 - так же, как если бы не было ошибки (в том числе привязанные к сервису в договоре)
radius.disable.mode=0
# Коды ошибок, при которых вместо reject выдавать accept с заданными атрибутами
radius.disable.accessCodes=1,2,3,4,10,11,12,20,44
# Атрибуты, выдаваемые при ответе Access-Accept в состоянии disable
radius.disable.1,2,3,4,11,20,44,62.attributes=Acct-Interim-Interval=90;cisco-SSG-Service-Info=AserviceBlock;Session-Timeout=86400
radius.disable.10,12.attributes=Acct-Interim-Interval=90;cisco-SSG-Service-Info=AserviceNomoney;Session-Timeout=86400
radius.disable.attributes=Acct-Interim-Interval=90;cisco-SSG-Service-Info=AserviceBlock
# Атрибуты, отправляемые в CoA при необходимости ограничить доступ
sa.radius.disable.attributes=Acct-Interim-Interval=90;cisco-SSG-Service-Info=AserviceNomoney
# Атрибуты, отправляемые в CoA при необходимости включить доступ
sa.radius.enable.attributes=Acct-Interim-Interval=600;cisco-SSG-Service-Info=Aservice300m
 
# При наличии данных сервисов в RADIUS-Accounting считаем, что у сессии состояние отключено (доступ ограничен)
radius.serviceName.disable=serviceNomoney,serviceBlock
# Логирование CoA/PoD-запросов (контекстное меню сессии - RADIUS-лог)
sa.radius.log=1
# Атрибуты сессии, которые отправляются в CoA (для того, чтобы Econat идентифицировал, для какой сессии запрос)
sa.radius.connection.attributes=User-Name
 
# Не сбрасывать сессию при включении/отключении доступа (а менять параметры, отправлять CoA)
sa.radius.connection.withoutBreak=1
# при значении 1 InetAccess при вызове для изменения состояния метода connectionModify из
# CoAServiceActivator/ISGServiceActivator/SmartEdgeServiceActivator сразу поменяет состояние в БД (вызовет e.setConnectionStateModified( true ),
# рекомендуется для CoAServiceActivator)
# Для Econat не работает, т.к. после CoA создаётся новая сессия
sa.radius.connection.stateModify=0
 
# Параметры активации сервисов
# длина паузы, если возникла ошибка
#sa.error.pause=60
# количество заданий за раз
sa.batch.size=4
# время (сек) ожидания завершения всех заданий (при асинхронной работе)
sa.batch.wait=10
# пауза (сек) после обработки заданий
#sa.batch.pause=0
# время (сек) ожидания новой задачи перед вызовом disconnect.
#sa.batch.waitNext=5

Статические IP-адреса

Если поиск абонента будет происходить по IP-адресу, указанному в сервисе договора, то в конфигурации типа сервиса нужно указать:

# Сервисы данного типа учавствуют в поиске по IP-адресу при RADIUS-аутентификации
serv.search.address=1

При изменении данного параметра в существующем типе сервиса, с которым сервисы договора уже заведены, требуется перезапуск InetAccess/InetAccounting.

Адреса, выданные по DHCP

Для того, чтобы биллинг находил абонента по IP-адресу, ранее выданному ему по DHCP (с помощью InetDhcpProcessor и, возможно, DHCP Option 82), нужно:

  1. В inet-access.xml и inet-accounting.xml нужно заменить radiusProcessor с "ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor" на "ru.bitel.bgbilling.modules.inet.radius.InetRadiusHelperProcessor";

  2. В конфигурации корневого устройства (Access+Accounting) указать в параметре radius.key.deviceTypeIds ID типа устройства Econat:

    # Типы устройств с аутентификацией по IP-адресу ()
    radius.key.deviceTypeIds=