Основная информация, которую должна содержать конфигурация NASа - это его идентификатор, IP-адрес и секрет (необходим для шифрования пароля пользователя, должен совпадать на RADIUS-клиенте и сервере).
Кроме того, к нему должны быть привязаны услуги, определены параметры инспектора (осуществляет управление NASом с целью проверки активности соединения, либо его завершения).
Настройка сервера доступа происходит в два шага.
Сначала кнопкой
создаётся новый NAS, ему прописывается идентификатор (что будет приходить от него в атрибуте ), IP-адрес (что будет приходить от него в атрибуте ), 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
Режим работы
либо может быть задан независимо для каждого NASа опцией аналогично конфигурации модуля DialUP. Если режим не установлен - используется значение режима из конфигурации модуля.Наиболее важной настройкой каждого из NASов является конфигурация услуг. Она определяет, с какими услугами модуля будут сопоставлены трафики соединения и его время. Конфигурация услуг должна быть определена для каждого сочетания REALM+NAS-Port, доступного на данном NASе, в противном случае при авторизации будет выведена ошибка
.Разделение по REALMу позволяет выделять отдельные услуги на разные сервисы, потребляемые пользователем. Например, вход просто с логином являет из себя услугу
, для которой определена цена 0 в тарифном плане и для данного типа входа обсчитывается трафик. А вход под REALMом (login@time) определяет услугу время как , для которой в том же тарифе определена ненулевая цена, а трафик при данном входе не учитывается (пустая конфигурация трафиков).Разделение по порту предоставляет возможность разделения услуг для многоканальных и обычных телефонов доступа в пределах одного NASа.
Строка привязки услуги типа "время" к REALMу и порту выглядит следующим образом:
nas.port_time.<realm>.<port>=<sid>
где:
- REALM под которым авторизуется пользователь (если после логина ничего не указано - REALM считается ); |
- на который авторизуется пользователь, возможность привязки отдельной услуги типа время на выделенные порты полезна, например, для выделения многоканальных телефонов, * - любой порт; |
- числовой код услуги типа "время". |
Привязка услуг типа "трафик" к REALMу и порту выглядит следующим образом:
nas.port_traffic.<realm>.<port>=<service1>;<service2>;...<serviceN>
где значения
и идентичны таким же параметрам в указании услуги типа "время", а записи представляют из себя строку следующего вида:<sid>:<keyword>
где
определяет код услуги типа "трафик", а может принимать следующие значения:- объем услуги в байтах, получается на основании RADIUS-пакета (атрибуты , ); |
- объем услуги в байтах, получается на основании RADIUS-пакета (атрибуты , ); |
(<vcode>,<atrcode>,<prefix>) - объем услуги в байтах, получается на основании RADIUS-пакета, строкового атрибута с кодом <atrvcode> вендора с кодом <vcode>, трафик указывается после префикса <prefix> и одного символьного разделителя. Например: 7:RAD(12341,10,local) - получение трафика по седьмой услуге из атрибута MPD mpd-output-octets после префикса "local:"; |
- объем услуги в байтах, получается по информации NetFlow-коллектора (коллектор определяет тип услуги на основании привязок услуг из конфигурации модуля, см. настройку встроенного коллектора); |
(<sid2>,<sid3>) - услуга <sid> вычисляется как максимум из услуг <sid2>, <sid3> на каждый из моментов обсчёта; |
(<sid2>,<sid3>, <sid4>, <sid5>) - услуга <sid> вычисляется как сумма услуг <sid2>..<sid5> на каждый из моментов обсчёта, количество параметров функции может быть от двух до четырёх |
При получении трафика посредством NetFlow, либо sFlow-протокола необходима соответствующая настройка встроенного коллектора и конфигурации NASа.
В случае, если трафик не нужно тарифицировать и учитывать, вы можете оставить в конфигурации только:
nas.port_traffic.<realm>.*=
Услуга времени должна быть определена всегда.
Рассмотрим несколько примеров записи конфигураций услуг для NASа:
Пример 14.1. Простейший случай
Ставится задача обсчёта суммарного входящего трафика клиента. При этом в вашем модуле DialUP заведены 3 услуги - Время (1), Входящий трафик (2), Исходящий трафик (3). А в тарифном плане клиента указаны цены за эти услуги (включая нулевые за время и исходящий трафик). В этом случае конфигурация времени и трафиков будет выглядеть следующим образом:
nas.port_time.default.*=1 nas.port_traffic.default.*=2:RADIN;3:RADOUT
Пример 14.2. Обсчёт максимального трафика
Ставится задача обсчёта времени работы и максимального из трафиков клиента. При этом в модуле DialUP заведены 4 услуги - Время (1), Входящий трафик (2), Исходящий трафик ( 3), Максимальный трафик (4). В тарифном плане клиента должны быть указаны 4 цены (2 из них нулевые - за входящий и исходящий трафик). Конфигурация будет выглядеть следующим образом:
nas.port_time.default.*=1 nas.port_traffic.default.*=2:RADIN;3:RADOUT;4:MAX(2,3)
Начиная с 4.2 версии в конфигурации трафика возможно использование функции
- суммарный трафик. Её использование аналогично , но параметрами могут выступать до 4х кодов услуг.Пример 14.3. Обсчёт суммарного трафика
Ставится задача обсчёта времени работы и суммарного из трафиков клиента. При этом в модуле DialUP заведены 4 услуги - Время (1), Входящий трафик (2), Исходящий трафик (3), Максимальный трафик (4). В тарифном плане клиента должны быть указаны 4 цены (две из них с нулевой ценой - за входящий и исходящий трафик). Конфигурация будет выглядеть следующим образом:
nas.port_time.default.*=1 nas.port_traffic.default.*=2:RADIN;3:RADOUT;4:SUM(2,3)
Пример 14.4. Обсчёт трафика с делением по типам в пределах сессии
Ставится задача обсчитывать по разным ценам локальный и глобальный входящий трафик клиентов. В модуле DialUP заводится 3 услуги: Время (1), Локальный входящий (2), Глобальный входящий (3). В тарифном плане определены все 3 стоимости.
nas.port_time.default.*=1 nas.port_traffic.default.*=2:COLLECTOR;3:COLLECTOR
Ключевое слово COLLECTOR в последнем случае обозначает, что трафик данного типа будет предоставляться со встроенного коллектора. О установке и настройке встроенного NetFlow-коллектора для BGRadiusDialup читайте далее.
Пример 14.5. Использование REALMов
Ставится задача предоставления доступа по трафику и двух видов повременного доступа на скоростях 64 кбит/с и 256 кбис/с с различной оплатой часа. Для повременного соединения пользователь вводит имя пользователя login@64k, login@256k. Для данных REALMов в конфигурации модуля должны быть определены атрибуты RADIUS, устанавливающие параметры скорости.
В модуле DialUP заводятся 5 услуг: Время обычное (1), Входящий трафик (2), Исходящий трафик (3), Время 64k (4), Время 256k (5). В тарифном плане определены цены: 1 - нулевая стоимость, 2 и 3 - стоимость трафиков обычного соединения, 4 - стоимость соединения на скорости 64кбит/с за единицу времени, 5 - стоимость соединения на скорости 256kбит/с за единицу времени.
nas.port_time.default.*=1 nas.port_traffic.default.*=2:RADIN;3:RADOUT nas.port_time.64k.*=4 nas.port_traffic.64k.*= nas.port_time.256k.*=5 nas.port_traffic.256k.*=
Обратите внимание, что для повременного доступа конфигурации услуг трафиков пустые, т.е. трафики не учитываются вовсе.
Пример 14.6. Разделение по портам
Ставится задача тарификации DialUP-доступа по времени, при этом определённые порты NASа (1 и 5) являются многоканальными, стоимость часа на них выше, чем на остальных. В модуле DialUP заводятся 3 услуги: Время простое (1), Время многоканальный (2). В тарифном плане клиента определяются стоимости часа по каждой из услуг.
nas.port_time.default.1=2 nas.port_time.default.5=2 nas.port_time.default.*=1 nas.port_traffic.default.*=
Чтобы прописать пул IP-адресов, добавьте в конфигурацию NASа строку (пример пула из 3х адресов):
nas.pools.myPool=192.168.169.3-192.168.169.4;192.168.169.33
После ключевого слова
указывается имя пула (myPool). После знака равенства определяются один или несколько диапазонов, либо единичных адресов, разделённых точкой с запятой. Пулы, определённые в конфигурации NASов, более приоритетные, чем определённые в конфигурации модуля. Т.е. если пользователю атрибутами сопоставлен некий пул, и пул с таким именем определён как в конфигурации NASа, так и модуля, будет выбран пул из NASа.Обратите внимание на параметр
- это ограничение по типам Интернет-карточек, которые можно активизировать на данном NASе.0 означает, что на нем можно активизировать любую карточку, в противном случае через точку с запятой необходимо перечислить коды услуг активации карт, разрешённых к активации на данном NASе.
Опция
означает, что RADIUS-сервер будет принудительно разрывать соединения на границе месяца для данного NASа. Сделано это для того, чтобы в ходе работы в следующем месяце у клиента не изменялся баланс за предыдущий, т.к. изменяется баланс того месяца, где началось соединение.Остальная часть конфигурации NASа различается для серверов различного типа и отвечает за настройку инспектора - управляющим ходом соединений подсистемы. Задача инспектора - проверка активности соединения (для режима CHECKER) и сброс соединения по событию биллинга.
Все инспекторы, кроме универсального PoD, работают по протоколу SNMP. SNMP-порт и
устанавливаются следующим образом (дополнительно можно скорректировать размеры входящего/исходящего буферов сокета):#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-запросов согласно настройкам в тарифном плане для изменения параметров сессии без разрыва соединения.
dialup.workmode=1 # nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.PodNasConnectionInspector #на какой порт слать PoD/CoA запросы nas.inspector.radius.port=1812 #на какой хост слать (если не указан - берется IP-адрес NASа) #nas.inspector.radius.host= #секрет для подписи пакетов (если не указан - берется секрет NASа) #nas.inspector.radius.secret= #какие атрибуты добавлять в PoD/CoA-запрос из сессии, если пустой параметр - высылаются все атрибуты nas.inspector.radius.attributes=User-Name;Framed-IP-Address;Acct-Session-Id #опции, относящиеся только к CoA-пакетам #таймаут ожидания ответа в секундах между попытками отправки пакета СoA nas.inspector.coa.timeout=5 #количество попыток отправить пакет CoA nas.inspector.coa.retries=2 #количество потоков отправки CoA-пакетов nas.inspector.coa.threads=4 #отправка при смене CoA-пакета всех атрибутов, аналогично ответу на авторизацию #nas.inspector.coa.send.all.attributes=1 #логирование в RADIUS-логе сессии, отправляемых CoA-пакетов #coa.log=1 #фиксированные атрибуты CoA-пакета #nas.inspector.coa.fixed.attributes= #фиксированные атрибуты PoD-пакета #nas.inspector.pod.fixed.attributes= #отправка PoD-пакета вместо CoA #nas.inspector.send.pod.instead.coa=1
Подробные инструкции по интеграции BGRadiusDialup с различными NASами доступны в WiKi.
Для использования дополнительной возможности некоторых NASов самостоятельно ограничивать трафик, либо время соединения RADIUS способен высылать атрибуты с максимальными значениями трафика, либо времени с учётом текущего баланса пользователя.
Чтобы RADIUS отправлял атрибут с ограничением, он должен быть прописан в текущем REALMе пользователя, либо в дополнительных атрибутах логина.
Далее необходимо указать, что данный атрибут является ограничительным по какой-либо услуге, это производится в конфигурации NASа подобным образом:
service.limit.attribute=<Название атрибута>:<Код услуги>
Пример 14.7. Пример
В модуле DialUP есть услуга "Входящий трафик" с кодом 23 и мы хотим, используя простейшие линейные тарифы, устанавливать ограничение на трафик соединения. Для этого в конфигурации модуля DialUP указывается.
realm.default=...;WISPr-Bandwidth-Max-Down=64000;ChilliSpot-Max-Output-Octets=limit
А в конфигурации NASа:
service.limit.attribute=ChilliSpot-Max-Output-Octets:23
Теперь данный атрибут с ограничением трафика будет высылаться всем подключившимся пользователям. Расчёт атрибута производится исходя из тарифного плана клиента.
Для того, чтобы отправлять дубликаты аккаунтинг запросов на другой хост, необходимо добавить в конфиг 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=