Основная информация, которую должна содержать конфигурация NASа - это его идентификатор, IP-адрес и секрет (необходим для шифрования пароля пользователя, должен совпадать на RADIUS-клиенте и сервере).
Кроме того, к нему должны быть привязаны услуги, определены параметры инспектора (осуществляет управление NASом с целью проверки активности соединения, либо его завершения).
Настройка сервера доступа происходит в два шага.
Сначала кнопкой Новый элемент создаётся новый NAS, ему прописывается идентификатор (что будет приходить от него в атрибуте NAS-Identifier), IP-адрес (что будет приходить от него в атрибуте NAS-IP-Address), RADIUS-секрет, вендор и комментарий. Список вендоров задаётся в конфигурации модуля. После нажатия кнопки Ок должна появиться новая строка в таблице.
Обязательно устанавливайте правильного вендора для NASа.
Двойным кликом мыши откройте её для редактирования и кнопкой Создать добавьте текстовую конфигурацию. Название - произвольное.
Возможна также настройка общих конфигураций для NASов. Создание общих конфигураций происходит аналогично описанному далее, за исключением того, что они могут использоваться в нескольких NASах. При этом локальные настройки имеют больший приоритет (т.е. если оба флага присутствуют и во включенной общей, и в выбранной локальной конфигурациях, то будет использован локальный).
Содержимое конфигурации может меняться в зависимости от типа NASа, но обязательно содержит следующие данные:
#телефоны по портам, * - все порты (если параметр не указан, вызываемый номер берётся из Calling-Station-Id) #nas.port_phone.*=900111 #числовые коды услуг времени, трафика входящего и исходящего nas.port_time.default.*=XXX nas.port_traffic.default.*=XXX #разрешение активировать все типы карточек на этом NASе card.activate.service=0 #поддержка CallBack (1-включено) callback.support=0 #принудительный разрыв соединений на границе месяца month.break=1 #время в секундах после начала месяца, в течении которого должны быть сброшены соединения предыдущего месяца с NASа month.break.period=3600 #интервал между посылками на проверку, либо сброс соединения в секундах nas.inspector.sleep_time=60 #максимальное число попыток сброса соединения nas.inspector.kill.max_messages=5
Режим работы UPDATE, либо CHECKER может быть задан независимо для каждого NASа опцией dialup.workmode аналогично конфигурации модуля DialUP. Если режим не установлен - используется значение режима из конфигурации модуля.
Наиболее важной настройкой каждого из NASов является конфигурация услуг. Она определяет, с какими услугами модуля будут сопоставлены трафики соединения и его время. Конфигурация услуг должна быть определена для каждого сочетания REALM+NAS-Port, доступного на данном NASе, в противном случае при авторизации будет выведена ошибка Not found service id.
Разделение по REALMу позволяет выделять отдельные услуги на разные сервисы, потребляемые пользователем. Например, вход просто с логином являет из себя услугу VPN-время, для которой определена цена 0 в тарифном плане и для данного типа входа обсчитывается трафик. А вход под REALMом time (login@time) определяет услугу время как VPN-повременный, для которой в том же тарифе определена ненулевая цена, а трафик при данном входе не учитывается (пустая конфигурация трафиков).
Разделение по порту предоставляет возможность разделения услуг для многоканальных и обычных телефонов доступа в пределах одного NASа.
Строка привязки услуги типа "время" к REALMу и порту выглядит следующим образом:
nas.port_time.<realm>.<port>=<sid>
где:
- <realm> - REALM под которым авторизуется пользователь (если после логина ничего не указано - REALM считается default);
- <port> - NAS-Port на который авторизуется пользователь, возможность привязки отдельной услуги типа время на выделенные порты полезна, например, для выделения многоканальных телефонов, * - любой порт;
- <sid> - числовой код услуги типа "время".
Привязка услуг типа "трафик" к REALMу и порту выглядит следующим образом:
nas.port_traffic.<realm>.<port>=<service1>;<service2>;...<serviceN>
где значения <realm> и <port> идентичны таким же параметрам в указании услуги типа "время", а записи <serviceX> представляют из себя строку следующего вида:
<sid>:<keyword>
где <sid> определяет код услуги типа "трафик", а <keyword> может принимать следующие значения:
- RADIN - объем услуги в байтах, получается на основании RADIUS-пакета (атрибуты Acct-Output-Octets, Acct-Output-Gigawords);
- RADOUT - объем услуги в байтах, получается на основании RADIUS-пакета (атрибуты Acct-Input-Octets, Acct-Input-Gigawords);
- RAD(<vcode>,<atrcode>,<prefix>) - объем услуги в байтах, получается на основании RADIUS-пакета, строкового атрибута с кодом <atrvcode> вендора с кодом <vcode>, трафик указывается после префикса <prefix> и одного символьного разделителя. Например: 7:RAD(12341,10,local) - получение трафика по седьмой услуге из атрибута MPD mpd-output-octets после префикса "local:";
- COLLECTOR - объем услуги в байтах, получается по информации NetFlow-коллектора (коллектор определяет тип услуги на основании привязок услуг из конфигурации модуля, см. настройку встроенного коллектора);
- MAX(<sid2>,<sid3>) - услуга <sid> вычисляется как максимум из услуг <sid2>, <sid3> на каждый из моментов обсчёта;
- SUM(<sid2>,<sid3>, <sid4>, <sid5>) - услуга <sid> вычисляется как сумма услуг <sid2>..<sid5> на каждый из моментов обсчёта, количество параметров функции может быть от двух до четырёх
При получении трафика посредством NetFlow, либо sFlow-протокола необходима соответствующая настройка встроенного коллектора и конфигурации NASа.
В случае, если трафик не нужно тарифицировать и учитывать, вы можете оставить в конфигурации только:
nas.port_traffic.<realm>.*=
Услуга времени должна быть определена всегда.
Рассмотрим несколько примеров записи конфигураций услуг для NASа:
Начиная с 4.2 версии в конфигурации трафика возможно использование функции SUM - суммарный трафик. Её использование аналогично MAX, но параметрами могут выступать до 4х кодов услуг.
Чтобы прописать пул IP-адресов, добавьте в конфигурацию NASа строку (пример пула из 3х адресов):
nas.pools.myPool=192.168.169.3-192.168.169.4;192.168.169.33
После ключевого слова nas.pools. указывается имя пула (myPool). После знака равенства определяются один или несколько диапазонов, либо единичных адресов, разделённых точкой с запятой. Пулы, определённые в конфигурации NASов, более приоритетные, чем определённые в конфигурации модуля. Т.е. если пользователю атрибутами сопоставлен некий пул, и пул с таким именем определён как в конфигурации NASа, так и модуля, будет выбран пул из NASа.
Обратите внимание на параметр card.activate.service - это ограничение по типам Интернет-карточек, которые можно активизировать на данном NASе.
0 означает, что на нем можно активизировать любую карточку, в противном случае через точку с запятой необходимо перечислить коды услуг активации карт, разрешённых к активации на данном NASе.
Опция month.break означает, что RADIUS-сервер будет принудительно разрывать соединения на границе месяца для данного NASа. Сделано это для того, чтобы в ходе работы в следующем месяце у клиента не изменялся баланс за предыдущий, т.к. изменяется баланс того месяца, где началось соединение.
Остальная часть конфигурации NASа различается для серверов различного типа и отвечает за настройку инспектора - управляющим ходом соединений подсистемы. Задача инспектора - проверка активности соединения (для режима CHECKER) и сброс соединения по событию биллинга.
Все инспекторы, кроме универсального PoD, работают по протоколу SNMP. SNMP-порт и community устанавливаются следующим образом (дополнительно можно скорректировать размеры входящего/исходящего буферов сокета):
#SNMP порт и пароль (не нужны для PoD инспектора) nas.inspector.snmp.port=161 nas.inspector.snmp.community=XXXXX #входящий буфер в мегабайтах nas.inspector.snmp.buffer.in=4 #исходящий буфер в мегабайтах nas.inspector.snmp.buffer.out=4
Далее, в зависимости от типа NASа, устанавливаются опции.
1. Huawei Expert (vendor=2011).
snmp.version=1 nas.inspector.snmp.kill.oid=1.3.6.1.4.1.2011.2.3.4.3.5.2.1.3.0 nas.inspector.snmp.check.oid=1.3.6.1.4.1.2011.2.3.4.3.5.2.1.5.0 nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorHuaweiExpert
2. Unix PPP (vendor=2021).
snmp.version=2 #возможные значения 2.4.2 и 2.4.3, для 2.4.4 указывается версия 2.4.3 pppd.version=2.4.2 nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorPPPD nas.inspector.snmp.kill.oid=1.3.6.1.4.1.2021.255.1 nas.inspector.snmp.check.oid=1.3.6.1.4.1.2021.255
3. FreeBSD MPD 4.x, 5.x (vendor=12341).
dialup.workmode=1 snmp.version=2 nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorMPD nas.inspector.snmp.kill.oid=1.3.6.1.4.1.2021.255.1 nas.inspector.snmp.check.oid=1.3.6.1.4.1.2021.255
4. Cisco 53x (vendor=9), либо другие модели Cisco см. здесь.
snmp.version=2 nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorCisco nas.inspector.snmp.kill.oid=1.3.6.1.4.1.9.9.150.1.1.3.1.5 nas.inspector.snmp.check.oid=1.3.6.1.4.1.9.9.150.1.1.3.1.5 #возможна ситуация, когда в Acct-Session-Id передаётся не только код сессии, но и дополнительная "приставка" вначале #данная опция вырезает из Acct-Session-Id строку от 4го символа для получения SNMP-кода сессии, вместо 4 может быть указано любое число #session.mode=hex4
5. Cisco 36x (vendor=9).
nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorCisco36x nas.inspector.snmp.kill.oid=1.3.6.1.4.1.9.2.9.10.0 nas.inspector.snmp.check.oid=1.3.6.1.4.1.9.2.9.2.1.18
6. Lucent Acsend (vendor=529).
nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorCisco nas.inspector.snmp.kill.oid=1.3.6.1.4.1.529.12.3.1.3 nas.inspector.snmp.check.oid=1.3.6.1.4.1.529.12.3.1.4 #раскомментировать, если код сессии (Acct-Session-Id) приходит в десятичном формате #session.mode=dec
7. US Robotics NetServer (vendor=429).
nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorUSRoboticsNetServer nas.inspector.snmp.check.oid=1.3.6.1.4.1.429.4.10.1.1.18 nas.inspector.snmp.kill.oid=1.3.6.1.4.1.429.4.10.13
8. MS RRAS для W2K (vendor=311).
nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.SNMPNasConnectionInspectorMsRRAS
9. Универсальный инспектор, вызывающий для проверки и разрыва соединения внешний скрипт с набором параметров командной строки.
nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.ScriptNasConnectionInspector #путь к внешнему скрипту проверки, если код выполнения будет 1 - абонент активен, если другой - неактивен #требуемые параметры командной строки указываются после имени скрипта следующим образом ${NAS_IP} ${NAS_ID} ${USER_LOGIN} ${USER_SESSION} ${USER_PORT} #например, /usr/local/check.pl ${NAS_IP} ${USER_PORT} nas.inspector.check.command= #путь к внешнему скрипту разрыва соединения #требуемые параметры командной строки указываются после имени скрипта следующим образом ${NAS_IP} ${NAS_ID} ${USER_LOGIN} ${USER_SESSION} ${USER_PORT} #например, /usr/local/kill.pl ${NAS_IP} ${USER_PORT} nas.inspector.kill.command=
10. WiFi-портал модуля Dialup.
nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.WiFiConnectionInspector nas.inspector.wifi.host=<IP адрес, где поднят wifi-агент> nas.inspector.wifi.port=<порт, на котором поднят wifi-агент >
11. Универсальный инспектор для всех NASов с поддержкой PoD. Использование возможно только в режиме обсчёта UPDATE. Дополнительно данный инспектор обладает возможностью отправки CoA-запросов согласно настройкам в тарифном плане для изменения параметров сессии без разрыва соединения.
Подробные инструкции по интеграции BGRadiusDialup с различными NASами доступны в WiKi.
Для использования дополнительной возможности некоторых NASов самостоятельно ограничивать трафик, либо время соединения RADIUS способен высылать атрибуты с максимальными значениями трафика, либо времени с учётом текущего баланса пользователя.
Чтобы RADIUS отправлял атрибут с ограничением, он должен быть прописан в текущем REALMе пользователя, либо в дополнительных атрибутах логина.
Далее необходимо указать, что данный атрибут является ограничительным по какой-либо услуге, это производится в конфигурации NASа подобным образом:
service.limit.attribute=<Название атрибута>:<Код услуги>
Теперь данный атрибут с ограничением трафика будет высылаться всем подключившимся пользователям. Расчёт атрибута производится исходя из тарифного плана клиента.
Для того, чтобы отправлять дубликаты аккаунтинг запросов на другой хост, необходимо добавить в конфиг NASа такие параметры:
#Хост и порт, на который отправлять дубликат аккаунтинг RADIUS-пакета radius.forward.host= radius.forward.port= #Секрет, которым подписывать пакет, если не указан, то используется секрет NASa #radius.forward.secret= #Префикс, который нужно добавлять к атрибуту User-Name #radius.forward.user.name.prefix= #Суффикс, который нужно добавлять к атрибуту User-Name #radius.forward.user.name.suffix=