CoA/PoD на примере MPD

Материал из BiTel WiKi

Перейти к: навигация, поиск

CoA

На самом верхнем уровне добавляется устройство с типом Access+Accounting (или ProcessGroup) со следующей конфигурацией:

#типы устройств - Nas-ов
radius.deviceTypeIds=1
 
#количество потоков на worker'а
accounting.worker.1.thread.count=1
#тарификатор:
#минимальная сумма трафика, при которой тарифицировать соединение
accounting.worker.1.tariffication.1.minDeltaAmount=0
#пауза между заданиями тарификации
accounting.worker.1.tariffication.1.delay=10
#максимальное количество тарифицируемых соединений за задание
accounting.worker.1.tariffication.1.batchSize=100
#трекер (обработка сессий без наработки):
#пауза между заданиями трекинга
accounting.worker.1.tracking.1.delay=20
#максимальное количество проверенных соединений за задание
accounting.worker.1.tracking.1.batchSize=100
 
#количество потоков на worker'а
accounting.worker.2.thread.count=1
#сброс в базу трафиков и наработки
#минимальная наработка, при которой сбрасывать соединения в базу
accounting.worker.2.flushing.1.minDeltaAccount=0
#пауза между заданиями сброса в базу
accounting.worker.2.flushing.1.delay=20
#максимальное количество сброшенных соединений в базу за задание
accounting.worker.2.flushing.1.batchSize=500
 
#количество потоков на worker'а
accounting.worker.3.thread.count=1
#завершатель соединений
#пауза между заданиями
accounting.worker.3.finishing.1.delay=20
#максимальное количество сброшенных соединений в базу за задание
accounting.worker.3.finishing.1.batchSize=500
 
#при выдаче access-accept добавлять запись в базу
#необходимо, если используется reject-to-accept и по старт пакету нельзя определить в каком состоянии соединение
connection.start.fromAccept=1
#таймаут перевода соединения в статус suspended при остутствии радиус пакетов
connection.suspend.timeout=900
#таймаут закрытия соединения при остутствии радиус пакетов (не складывается с connection.suspend.timeout)
connection.close.timeout=900
 
#атрибуты, выдаваемые при авторизации по реалму default (default - реалм по умолчанию)
radius.realm.default.attributes=
#категории ip адресов из ресурсов, из которых будут выдаваться адреса ("пул", указывается во вкладке "IP ресурсы")
radius.realm.default.ipCategories=4
 
#коды ошибок, при которых вместо reject выдавать accept с заданными атрибутами
#(пользователю выдается серый адрес и устанавливается HTTP-редирект)
radius.disable.accessCodes=1,2,3,4,10,11,12
#атрибуты, выдаваемые при rejectToAccept
radius.disable.attributes=mpd-limit=out#1=all shape 32000 pass;mpd-limit=in#1=all rate-limit 32000 pass
#категории ip адресов из ресурсов, из которых будут выдаваться адреса для отключенных ("пул", указывается во вкладке "IP ресурсы")
radius.disable.ipCategories=3
#атрибуты, при наличии которых соединение должно считаться в состоянии DISABLE (т.е. с ограниченным доступом)
#radius.disable.pattern.attributes=
 
#привязка кодов опций модуля к атрибутам
#данные атрибуты будут выдаваться в AccessAccept при удачной авторизации и при наличии активных опций в тарифе или сервисе
nas.radius.inetOption.1.attributes=mpd-limit=out#1=all shape 128000 pass;mpd-limit=in#1=all rate-limit 10000000 pass
nas.radius.inetOption.2.attributes=mpd-limit=out#1=all shape 128000 pass;mpd-limit=in#1=all rate-limit 10000000 pass
nas.radius.inetOption.3.attributes=mpd-limit=out#1=all shape 512000 pass;mpd-limit=in#1=all rate-limit 10000000 pass
 
#----------------------------
#параметры активации сервисов
#----------------------------
#длина паузы, если возникла ошибка
#sa.error.pause=60
#количество заданий за раз
#sa.batch.size=20
#время (сек) ожидания завершения всех заданий (при асинхронной работе)
#sa.batch.wait=5
#пауза (сек) после обработки заданий
#sa.batch.pause=0
#время (сек) ожидания новой задачи перед вызовом disconnect.
#sa.batch.waitNext=5
 
#----------------------------------------
#параметры обработчика активации сервисов
#----------------------------------------
#откуда при отправке CoA брать атрибуты опций (по умолчанию - те же атрибуты, что выдаются при удачной авторизации)
#sa.radius.option.attributesPrefix=nas.radius.inetOption.
#sa.radius.connection.attributes=NAS-Port, Acct-Session-Id, User-Name, Framed-IP-Address, NAS-IP-Address, NAS-Identifier
#атрибуты CoA запроса для прекращения доступа (используется при sa.radius.connection.withoutBreak=1)
#sa.radius.disable.attributes={@radius.disable.attributes}
#фиксированные атрибуты, добавляемые в запрос перед отправкой CoA
#sa.radius.coa.attributes=
#добавлять ли при отправке CoA атрибуты реалма (для default - из radius.realm.default.attributes)
#sa.radius.realm.addAttributes=0
#фиксированные атрибуты, добавляемые в запрос перед отправкой PoD
#sa.radius.pod.attributes=

Уровнем ниже добавляем устройство типа MPD, то есть наш NAS. Указываем IP-адрес (соответствует атрибуту Nas-Ip-Address), идентификатор (соответствует атрибуту NAS-Identifier) и секрет радиуса. Конфигурация устройства:

#хост для отправки PoD и CoA запросов (по умолчанию - хост, заданный в параметрах устройства Хост/порт)
#radius.host=<хост устройства>
#порт для отправки PoD и CoA запросов (по умолчанию - порт, заданный в параметрах устройства Хост/порт)
#radius.port=<порт устройства>
#идентификатор - Nas-Identifier (по умолчанию - значение из поля Идентификатор параметров устройства)
#radius.identifier=<идентификатор устройства>
#используемый secret для общения по radius-протоколу (по умолчанию - значение из поля Community/secret параметров устройства)
#radius.secret=<community/sercret устройства>

Далее необходимо создать тип сервиса во вкладке "Типы сервисов". В настройках типа сервиса указывается, какие поля будут доступны при добавлении/редактировании сервиса на договоре. В нашем случае это устройство (нас) и логин/пароль.

Тип сервиса

Если нет необходимости привязывать сервис договора к определенному устройству (насу или группе насов), то можно указать в конфиге типа сервиса устройство Access+Accounting, чтобы оно привязывалось автоматически к каждому созданному сервису:

const.device.id=<постоянный код устройства для всех сервисов данного типа>

Работающий nas.inspector.class

Нам на версии BGBilling 5.1 и MPD 5.6 помогла такая конфигурация NAS:

dialup.workmode=1
nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.PodNasConnectionInspector
nas.inspector.radius.port=1700
nas.inspector.radius.secret=PASSWORD
nas.inspector.radius.attributes=User-Name;Framed-IP-Address;Acct-Session-Id
nas.inspector.kill.max_messages=20
nas.inspector.sleep_time=15
nas.inspector.coa.timeout=15
nas.inspector.coa.retries=10
nas.inspector.coa.threads=10
...
Личные инструменты