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

{toc:maxLevel=3}

h2. Настройка авторизации (RADIUS AUTH)

Биллинг может проводить авторизацию через RADIUS по различным входным данным из radius request, который приходит на биллинг. Данные настройки отвечают за то, по какому именно полю биллинг будет пытаться найти абонента в БД. Параметры выбираются на вкладке *Оборудование - NAS - Дополнительно*. По умолчанию при выборе определенной стандартной OSS схемы данные опции уже выбраны и менять их не нужно, однако вы можете настроить авторизацию под свою [пользовательскую схему|Пользовательская схема], если это необходимо.
{info}
Рекомендуем ставить один параметр во избежание коллизий. Если в БД есть два подходящих пользователя, запрос авторизации будет отброшен.
{info}


!radius_1.png|border=1!


h3. Описание полей

Поля для аутентификации абонента:

* *Проверять IP+VLAN* - Поиск пользователя по полям NAS-Port и Framed-IP-Address в радиус пакете, и полям VLAN и IP в учётной записи пользователя соответственно. Подробней схема описана статье о [СКАТ|Пример. CKAT IPoE#Авторизация по паре IP+VLAN]
* *Проверять login* - Поиск пользователя по полю *Логин* в учетной записи
* *Проверять IP* - Поиск пользователя по полю *IPv4* в учетной записи
* *Проверять MAC* - Используется для схемы [Mikrotik IPoE + Radius|Mikrotik IPoE + Radius], совместно с опцией *Проверять login*
* *Проверять hwserial(User-name)* - Поиск пользователя идет по полю *Серийный номер оборудования* в учетной записи. Биллинг сравнивает серийный номер оборудования с атрибутом *User-Name* из Radius запроса. В учётной записи обязательно должен быть указан коммутатор.
* *Проверять hwserial(Remote)* - Поиск пользователя идет по полю *Серийный номер оборудования* в учетной записи. Биллинг сравнивает серийный номер оборудования с атрибутом *AGENT-REMOTE-ID* из Radius запроса.
* *Проверять hwserial(ADSL)* - Поиск пользователя идет по полю *Серийный номер оборудования* в учетной записи. Биллинг сравнивает серийный номер оборудования с атрибутом *ADSL-Agent-Circuit-Id*. В учётной записи обязательно должен быть указан коммутатор.
{note}
Для включения параметра *Проверять hwserial(ADSL)* требуются дополнительные действия. Составьте [обращение в портале HelpDesk|https://helpdesk.carbonsoft.ru/login.php].
{note}

Не отправлять IP адрес:
* *Не отправлять framed-ip-address* - Используется для того, чтобы в *Access-accept*'e от биллинга не отправлялся атрибут *FRAMED-IP-ADDRESS*

Не используются, оставлены для совместимости:
* *OPT82 VLAN*
* *OPT82_PORT*
* *OPT82 SWITCH_IP*

h3. Примеры
{code:title=Пример запроса Access-Request от Microtik CHR}
rad_recv: Access-Request packet from host 10.90.185.100 port 38454, id=3, length=133
NAS-Port-Type = Ethernet
NAS-Port = 2206203907
Calling-Station-Id = "1:52:54:0:d7:cc:2b"
Framed-IP-Address = 10.64.15.20
Called-Station-Id = "mikrotik_carbon_dhcp"
User-Name = "test123"
User-Password = ""
NAS-Identifier = "MikroTik"
NAS-IP-Address = 10.90.185.100
{code}

В случае, если в настройках NAS'a выбран тип *Проверять login* - биллинг будет пытаться найти абонента в БД, у которого в [поле login|CarbonBilling:Учетная запись. Создание и изменение.] будет *test123*. Сопоставление будет происходить всегда по полю *User-Name* из Access-Request

h2. Особые настройки

!radius_2.png|border=0!

h3. Разрешить переподключаться с первого раза, рекомендуется на время интеграции

h4. Включена
Все запросы на авторизацию от одного и того же абонента, в случае, если абонент найден и не заблокирован, будут разрешены биллингом и в ответ на них биллинг отправит *Access-Accept*.
*Access-Accept* будет отправлен независимо от того авторизован пользователь уже на биллинге или не авторизован.

h4. Отключена
Если на биллинг придет запрос на авторизацию от абонента, который считается биллингом уже авторизованным - биллинг сначала отправит на оборудование команду user_disconnect и сбросит сессию на своей стороне. При этом на первый запрос авторизации будет отправлен *Access-reject* с ошибкой *you already logged in*

h2. Основные настройки

!osnov.png|border=0!

h3. Описание полей

* *Пересоздавать сессию*. Опция сработает если на биллинге нет данных по сессии. Это возможно, когда биллинг авторизовал сессию, но за 30 минут не пришел пакет *accounting start*. При получении *accounting update* сессия будет пересоздана в биллинге. Дополнительно будет создано событие *rad_acc_start*.
* *Передавать пароль в скрипт событий*. Если данная опция включена - биллинг будет передавать пароль из учетной записи пользователя в скрипт событий session в поле *user_psw*.
* *Использовать radius вместо NetFlow*. Объём трафика будет взят из данных аккаунтинга при получении accountig stop пакета. При этом объём из netflow тоже будет учтён. Необходимо отключить netflow во избежание двойного подсчёта объёма трафика.

h2. RADIUS shared secret, пароль и порт COA, общий IPoE пароль

!nas_radius_settings.png|border=0,width=400!

RADIUS пароли и порт CoA указываются в [настройках NAS|CarbonBilling:Справочник NAS], на вкладке "*Описание*", в области "*Дополнительно*":

* *Radius_secret*: RADIUS shared secret, пароль RADIUS-клиента (=NAS/BRAS)
* *Coa_port - порт для управления через radclient*: порт NAS, на который будут отправляться запросы Change of Authorization при изменении состояния абонента в биллинге
* *Coa_psw - пароль для radclient*: Пароль для Change of Authorization запросов
* *Users_psw - общий пароль ipoe*: Общий пароль абонента, используется при IPoE автризации с использованием RADIUS

h2. Не посылать user_disconnect при получении Radius Stop
h4. Включена
При получении accounting stop биллинге не создаст событие user_disconnect, то есть не попытается сбросить сессию. Это полезно при зацикливании авторизации, то есть user_disconnect сбрасывает, вновь созданную сессию.
h4. Отключена
При получении accounting stop биллинге создаст событие user_disconnect. Нужно для борьбы с "зависшими" сессиями на оборудовании.

h2. Адреса и порты серверов авторизации и аккаунтинга
h3. IP-адрес
Адрес RADIUS-сервера авторизации и аккаунтинга - это все адреса биллинга, указанные в [настройках сети|CarbonBilling:Настройки сети]
h3. Порты
* *Авторизация*: 1812
* *Аккаунтинг*: 1813

h2. Атрибуты

При успешной авторизации отправляется *Access-Accept* пакет. Он содержит список атрибутов авторизации их можно задать следующи образом:
h3. Атрибуты NAS
Для каждого НАС можно задать radius атрибуты. Список задаётся на вкладке *Дополнительно*. Интерфейс описан в [статье|Справочник NAS#Radius атрибуты]. Разный набор атрибутов и разные значения атрибутов можно отправить в зависимости от статуса баланса и блокировки абонента.
h3. Атрибуты в тарифе
При необходимости группе абонентов можно отправить отдельный атрибут, это можно сделать добавив его в [тариф|Тарифы#Вкладка RADIUS]. Атрибут будет отправлен в любом случае.
h3. Атрибуты константы
В процедуре авторизации заданы следующие константы:
| Атрибут | Опиция | Значение | Расшифровка | Как изменить |
| Acct-Interim-Interval | := | 600 | Интервал отправки аккаунитга оборудованием в секундах. | Добавьте одноимённый атрибут со своим значением в NAS или тариф. |
| Framed-IP-Address | := | | IP адрес для сессии | Можно отключить отправку атрибута опцией *Не отправлять framed-ip-address* в NAS |
h3. Атрибуты в аккаунтинге
После прохождения процедуры авторизации можно изменить состояние сессии средствами аккаунтинга. За отправку аккаунтинг сообщений отвечает программа *radclient*, вызвать её можно в скрипте [session|Пользовательская схема], можно использовать [переменные|Переменные передаваемые в скрипт session].
h3. Словари атрибутов
Файл стандартных атрибутов freeradius:
{code}
/app/asr_billing/usr/share/freeradius/dictionary
{code}
Дополнительные словари с атрибутами хранятся в каталоге:
{code}
/app/asr_billing/var/local/etc/raddb/
{code}
Доступны словари оборудования:
* *Carbon Soft* - dictionary.carbon
* *MikroTik* - dictionary.mikrotik
* *VASExperts* - dictionary.vasexperts

Чтобы атрибут был отправлен клиенту, он должен присутствовать в одном из словарей. Если атрибута нет в словаре, при попытке авторизации в логе отладки *radius_degug.log* вы увидите сообщение *Unknown attribute*:
{code}
rlm_sql: Failed to create the pair: Unknown attribute "VasExperts-L2-User" requires a hex string, not "1"
{code}

{note}
Если вам необходимо добавить атрибут, которого нет в справочнике, составьте [обращение в портале HelpDesk|https://helpdesk.carbonsoft.ru/login.php].
{note}

h2. Отладка авторизации

h3. Услуги

Проверте, что у абонента подключена [услуга|Услуги] с типом [трафик|Услуги. Трафик (интернет)]. Если у абонента отсутствуют услуга трафика - авторизация может пройти, но будет выдан неверный набор атрибутов.

h3. Лог радиус сервера

Для просмотра хода авторизации абонентов можно просмотреть лог:
{code}
/app/asr_billing/var/log/radius/radius.log
{code}

h3. Отладка авторизации

# Запишите дамп трафика диалога авторизации в файл
#* Создайте каталог для храния дампа
{code}
mkdir /app/base/var/log/tcpdump
{code}
#* Запустите сбор дампа трафика в фоновом режиме
{code}
nohup tcpdump -pnni any -c 10000 -w /app/base/var/log/tcpdump/dump.pcap 2>/dev/null
{code}
#* Если нужно завершить сбор дампа завершите его по pid
{code}
kill -9 27273
{code}
#* Загрузите файл на ПК и проанализируйте его в *WireShark*
# В [настройках в файле|CarbonBilling:Настройки (в файле)] включите опцию "Включить DEBUG для Radius демона"
# Перезапустите Radius сервер для вступления измений в силу:
{code}
chroot /app/asr_billing/ service radiusd restart
{code}
# В терминале запустите мониторинг лога
{code}tail -f /app/asr_billing/var/log/radius/radius_debug.log{code}
# Совершите авторизацию
# Дальше - по ситуации, но нужно помнить что для успешной авторизации в логе должны быть три SQL-запроса:
#* Первый возвращает радиусу информацию о наличии учётной записи
{code}SELECT ... FROM RAD6_CHECK ('CHECK'{code}
#* Второй возвращает необходимые атрибуты, которые нужно отправить в Access-Accept
{code}SELECT ... FROM RAD6_CHECK ('REPLY'{code}
#* Третий проводит дополнительные проверки. Должен вернуть "0"
{code}SELECT ... FROM RAD6_CHECK ('SIMUL'{code}

h3. Отладка команд отправляемых после авторизации

* Если после авторизации сессия сбрасывается или по ней приходят какие-то команды, это можно отладить по [логам отправленных событий учётной записи|https://docs.carbonsoft.ru/display/CarbonBilling/nas_event_daemon#nas_event_daemon-Проверьтелоги]
* Например, для абонента ID 5473 и учётной записи ID 4809 следующей командой можно смотреть отправляемые команды:
{code}tail -f -n 1000 /app/asr_billing/var/log/abonents/5473/event_4809.log | grep auth_type | awk '{print $1,$2,$7}'{code}
Если нужно отслеживать какие-то определённые команды, то можно такой командой:
{code}tail -f -n 1000 /app/asr_billing/var/log/abonents/5473/event_4809.log | grep auth_type | awk '{print $1,$2,$7}' | grep -E 'rad_acc_start|rad_acc_stop|user_disconnect'{code}

h3. Отладка аккаунтинга

# В [настройках в файле|CarbonBilling:Настройки (в файле)] включите опцию "Включить DEBUG для Radius Accounting"
# Перезапустите RadiusAccaunting сервер для вступления измений в силу:
{code}
chroot /app/asr_billing/ service radiusd restart
{code}
# В терминале запустите мониторинг лога
{code}
tail -f /app/asr_billing/var/log/radius_acc/radius_debug.log
{code}
# Совершите авторизацию, дождитесь отправки аккаунтинга.
# Дальше просмотрите SQL-запросы по сессии:
#* Старт сессии
{code}SELECT ... FROM RAD6_ACCT_START{code}
#* Обновление состояния сессии
{code}SELECT ... FROM RAD6_ACCT_UPDATE{code}
#* Окончание сессии
{code}SELECT ... FROM RAD6_ACCT_STOP{code}