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

{toc:maxLevel=3}

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

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


!radius_1.png|border=1!


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

Поля для аутентификации абонента:
* *Проверять 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)* требуются дополнительные действия. Обратитесь в [техническую поддержку|https://www.carbonsoft.ru/support/].
{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. Описание полей

* *Пересоздавать сессию*. В случае, если по какой то причине на биллинге будет информация о том, что авторизованный на оборудовании пользователь не авторизован в данный момент (например, не пришел *radius accounting start* пакет), при включении данной опции сессия будет создана при получении *radius accounting update*.

* *Передавать пароль в скрипт событий*. Если данная опция включена - биллинг будет передавать пароль из учетной записи пользователя в скрипт событий session в поле *user_psw*.

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. Адреса и порты серверов авторизации и аккаунтинга

h3. IP-адрес

Адрес RADIUS-сервера авторизации и аккаунтинга - это все адреса биллинга, указанные в [настройках сети|CarbonBilling:Настройки сети]

h3. Порты

* *Авторизация*: 1812
* *Аккаунтинг*: 1813

h2. Атрибуты

Файл стандартных атрибутов 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}
Если вам необходимо добавить атрибут, которого нет в справочнике, обратитесь в [техническую поддержку|https://www.carbonsoft.ru/support/].
{note}

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

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

# В [настройках в файле|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}