Просмотр Исходного

{toc}

h1. Добавить общий пароль в запрос через файл hints

Необходимость добавить общий пароль в запрос может возникнуть, если у Вас используется авторизация IPoE, но NAS его не передаёт.

В таком случае, сделайте следующее:
# За основу возьмите стандартный файл {{hints}}
{code}
mkdir -p /app/asr_billing/cfg/etc/raddb/
cp /app/asr_billing/etc/raddb/hints /app/asr_billing/cfg/etc/raddb/hints
{code}
# Добавьте в конец хинт, который добавит к запросу общий пароль:
{code}
# NAS ESR 1000, ID 1115
DEFAULT NAS-IP-Address == "172.0.0.1"
User-Password := "IPoE-COMMON-SECRET"
{code}
Здесь нужно поменять следующие параметры:
#* {{NAS-IP-Address}} - IP, который указан в настройках NAS;
#* {{User-Password}} - общий пароль, тоже из настроек NAS.
# Перезапустите контейнер биллинга
{code}/app/asr_billing/service restart{code}

В [учётных записях|CarbonBilling:Учетная запись. Создание и изменение.] абонентов должен быть настроен один из следующих [типов авторизации|CarbonBilling:Типы авторизации]
* ID=1: по ip static
* ID=6: любая через RADIUS
* ID=8: по OPT82
* ID=9: по ip+radius

h1. Авторизация с опцией "Проверять hwserial(ADSL)"

При этом типе авторизации, абонент получает IP от DHCP-сервера по опции 82. После получения адреса, BRAS отправляет RADIUS-запрос на авторизацию, так же добавляя в запрос данные опции 82.
Серийный номер оборудования должен приходить в атрибуте {{ADSL-Agent-Circuit-Id}}. В [учётной записи|CarbonBilling:Учетная запись. Создание и изменение.] абонента он задаётся в параметре "{{Серийный номер оборудования}}".

Чтобы ADSL-Agent-Circuit-Id передавался в биллинг, необходимо модифицировать запросы FreeRADIUS в БД. Это нужно сделать в сервере авторизации и сервере аккаунтинга.
Сделайте следующее:
# Подготовьте файл
{code}
mkdir /app/asr_billing/cfg/etc/raddb/sql/firebird/
touch /app/asr_billing/cfg/etc/raddb/sql/firebird/dialup.conf
{code}
# Установите правильные права
{code}
chmod 640 /app/asr_billing/cfg/etc/raddb/sql/firebird/dialup.conf
{code}
# Скачайте из документации содержимое файла {{dialup.conf}} для сервера авторизации
{code}
cd /app/asr_billing/cfg/etc/raddb/sql/firebird/
curl https://docs.carbonsoft.ru/download/attachments/187433180/dialup-raddb.conf -o dialup.conf
{code}
# Сделайте то же самое для сервера аккаунтинга:
{code}
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
{code}

{note}
При этом типе авторизации у абонента обязательно должен быть указан SWITCH. При этом PORT указывать необязательно.
{note}

h1. Авторизация лишнего пакета через файлы users и hints

Это кейс для оборудования Eltex ESR. Помимо авторизации сессии, BRAS делает дополнительный запрос на авторизацию сервиса. Он передаётся только когда сессия уже создана, и все нужные атрибуты уже переданы на оборудование. Биллинг дополнительный запрос обрабатывать не умеет, поэтому необходим тюнинг RADIUS.

Пример настроек {{users}} дан в документации Eltex при [авторизации без SoftWLC|https://docs.eltex-co.ru/pages/viewpage.action?pageId=219939101#id-УправлениеBRAS(BroadbandRemoteAccessServer)-ПримернастройкибезSoftWLC].

В примере профиль {{INTERNET}} пропускает пользователя в интернет, а профиль {{BYPASS}} запрещает доступ, на Eltex это названия ACL.

Нужно поправить файл {{users}} сервера авторизации и файл {{hints}} сервера аккаунтинга:
# За основу возьмите стандартный файл {{users}}
{code}
mkdir -p /app/asr_billing/cfg/etc/raddb/
cp /app/asr_billing/etc/raddb/users /app/asr_billing/cfg/etc/raddb/users
{code}
# Добавьте в конец файла {{users}} записи для профилей INTERNET и BYPASS:
{code}
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"
{code}
#* 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}}:
{code}
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
{code}
# Добавьте в конец хинт, который добавит к запросу атрибут Framed-IP-Address:
{code}
# 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"
{code}
# Последним шагом, перезапустите контейнер биллинга
{code}/app/asr_billing/service restart{code}

h1. Accounting-On и Accounting-Off

Оборудование может отправлять пакеты Accounting-On и Accounting-Off при старте и завершении работы NAS. Это реализовано не в каждом телеком устройстве, а для работы биллинга не критично, если их не будет.
Если есть возможность их отключить - отключите.
Если такой возможности нет, необходимо поправить интеграцию RADIUS с БД биллинга, т.к. обработка этих пакетов не реализована в ядре.
Сделайте следующее:
# За основу возьмите стандартный файл из конфигурации биллинга:
{code}
mkdir /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/
/app/asr_billing/skelet/etc/raddb_acc/sql/firebird/dialup.conf
{code}
# Установите правильные права
{code}
chmod 640 /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
{code}
# Откройте файл на редактирование, например редактором {{vim}}:
{code}
vim /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
{code}
# Найдите, описание переменной {{accounting_onoff_query}}, по-умолчанию такой текст:
{code}
accounting_onoff_query = "SELECT RESULT FROM RADIUS_ACCT_ONOFF ( \
'%S', \
'%{Acct-Terminate-Cause}', \
'%{Acct-Delay-Time}', \
'%{NAS-IP-Address}' \
)"
{code}
# Замените на значение переменной на пустую строку, должно получиться так:
{code}
accounting_onoff_query = ""
{code}
# Сохраните файл, закройте и перезапустите биллинг:
{code}
/app/asr_billing/service restart
{code}

После этого, в FreeRADIUS будет отправлять пустой ответ за запрос аккаунтинга этих типов. Это корректное поведение, согласно RFC.