Добавить общий пароль в запрос через файл hints
Необходимость добавить общий пароль в запрос может возникнуть, если у Вас используется авторизация IPoE, но NAS его не передаёт.
В таком случае, сделайте следующее:
- За основу возьмите стандартный файл hints
mkdir -p /app/asr_billing/cfg/etc/raddb/ cp /app/asr_billing/etc/raddb/hints /app/asr_billing/cfg/etc/raddb/hints
- Добавьте в конец хинт, который добавит к запросу общий пароль:
# NAS ESR 1000, ID 1115 DEFAULT NAS-IP-Address == "172.0.0.1" User-Password := "IPoE-COMMON-SECRET"
Здесь нужно поменять следующие параметры:
- NAS-IP-Address - IP, который указан в настройках NAS;
- User-Password - общий пароль, тоже из настроек NAS.
- Перезапустите контейнер биллинга
/app/asr_billing/service restart
В учётных записях абонентов должен быть настроен один из следующих типов авторизации
- ID=1: по ip static
- ID=6: любая через RADIUS
- ID=8: по OPT82
- ID=9: по ip+radius
Авторизация с опцией "Проверять hwserial(ADSL)"
При этом типе авторизации, абонент получает IP от DHCP-сервера по опции 82. После получения адреса, BRAS отправляет RADIUS-запрос на авторизацию, так же добавляя в запрос данные опции 82.
Серийный номер оборудования должен приходить в атрибуте ADSL-Agent-Circuit-Id. В учётной записи абонента он задаётся в параметре "Серийный номер оборудования".
Чтобы ADSL-Agent-Circuit-Id передавался в биллинг, необходимо модифицировать запросы FreeRADIUS в БД. Это нужно сделать в сервере авторизации и сервере аккаунтинга.
Сделайте следующее:
- Подготовьте файл
mkdir /app/asr_billing/cfg/etc/raddb/sql/firebird/ touch /app/asr_billing/cfg/etc/raddb/sql/firebird/dialup.conf
- Установите правильные права
chmod 640 /app/asr_billing/cfg/etc/raddb/sql/firebird/dialup.conf
- Скачайте из документации содержимое файла dialup.conf для сервера авторизации
cd /app/asr_billing/cfg/etc/raddb/sql/firebird/ curl https://docs.carbonsoft.ru/download/attachments/187433180/dialup-raddb.conf -o dialup.conf
- Сделайте то же самое для сервера аккаунтинга:
mkdir /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/ touch /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf chmod 640 /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf cd /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/ curl https://docs.carbonsoft.ru/download/attachments/187433180/dialup-raddb_acc.conf -o dialup.conf
![]() | При этом типе авторизации у абонента обязательно должен быть указан SWITCH. При этом PORT указывать необязательно. |
Авторизация лишнего пакета через файлы users и hints
Это кейс для оборудования Eltex ESR. Помимо авторизации сессии, BRAS делает дополнительный запрос на авторизацию сервиса. Он передаётся только когда сессия уже создана, и все нужные атрибуты уже переданы на оборудование. Биллинг дополнительный запрос обрабатывать не умеет, поэтому необходим тюнинг RADIUS.
Пример настроек users дан в документации Eltex при авторизации без SoftWLC.
В примере профиль INTERNET пропускает пользователя в интернет, а профиль BYPASS запрещает доступ, на Eltex это названия ACL.
Нужно поправить файл users сервера авторизации и файл hints сервера аккаунтинга:
- За основу возьмите стандартный файл users
mkdir -p /app/asr_billing/cfg/etc/raddb/ cp /app/asr_billing/etc/raddb/users /app/asr_billing/cfg/etc/raddb/users
- Добавьте в конец файла users записи для профилей INTERNET и BYPASS:
INTERNET Cleartext-Password := "IPoE-COMMON-SECRET" User-Name = "INTERNET", Cisco-AVPair = "subscriber:traffic-class=INTERNET", Cisco-AVPair += "subscriber:filter-default-action=permit" BYPASS Cleartext-Password := "IPoE-COMMON-SECRET" User-Name = "BYPASS", Cisco-AVPair = "subscriber:traffic-class=BYPASS", Cisco-AVPair += "subscriber:filter-default-action=redirect"
- INTERNET и BYPASS в первой строке профиля - имя профиля (ACL на Eltex), оно будет приходить в запросах аккаунтинга в поле User-Name
- INTERNET и BYPASS в атрибуте User-Name - тоже должно соответствовать ACL
- subscriber:traffic-class - должно соответствовать имени ACL
- Cleartext-Password - общий IPoE пароль. Этот запрос не доходит до биллинга, но для удобства укажите тот же пароль, что в настройках NAS в биллинге
- subscriber:filter-default-action - оставьте без изменений
- Добавьте файл hints, чтобы к запросу добавился атрибут Framed-IP-Address, иначе биллинг отбросит запрос и NAS не завершит создание сессии.
За основу возьмите стандартный файл hints:mkdir -p /app/asr_billing/cfg/etc/raddb_acc/ cp /app/asr_billing/etc/raddb_acc/hints /app/asr_billing/cfg/etc/raddb_acc/hints
- Добавьте в конец хинт, который добавит к запросу атрибут Framed-IP-Address:
# NAS ESR 1000, ID 1115 INTERNET User-Name == "INTERNET" Framed-IP-Address := "0.0.0.0" BYPASS User-Name == "BYPASS" Framed-IP-Address := "0.0.0.0"
- Последним шагом, перезапустите контейнер биллинга
/app/asr_billing/service restart
Accounting-On и Accounting-Off
Оборудование может отправлять пакеты Accounting-On и Accounting-Off при старте и завершении работы NAS. Это реализовано не в каждом телеком устройстве, а для работы биллинга не критично, если их не будет.
Если есть возможность их отключить - отключите.
Если такой возможности нет, необходимо поправить интеграцию RADIUS с БД биллинга, т.к. обработка этих пакетов не реализована в ядре.
Сделайте следующее:
- За основу возьмите стандартный файл из конфигурации биллинга:
mkdir /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/ /app/asr_billing/skelet/etc/raddb_acc/sql/firebird/dialup.conf
- Установите правильные права
chmod 640 /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
- Откройте файл на редактирование, например редактором vim:
vim /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
- Найдите, описание переменной accounting_onoff_query, по-умолчанию такой текст:
accounting_onoff_query = "SELECT RESULT FROM RADIUS_ACCT_ONOFF ( \ '%S', \ '%{Acct-Terminate-Cause}', \ '%{Acct-Delay-Time}', \ '%{NAS-IP-Address}' \ )"
- Замените на значение переменной на пустую строку, должно получиться так:
accounting_onoff_query = ""
- Сохраните файл, закройте и перезапустите биллинг:
/app/asr_billing/service restart
После этого, в FreeRADIUS будет отправлять пустой ответ за запрос аккаунтинга этих типов. Это корректное поведение, согласно RFC.