Авторизация по RADIUS

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (23)

просмотр истории страницы
{toc:maxLevel=23}

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

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


!radius_1.png|border=1!

!radius_auth2.png|border=1!

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

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

Данные настройки отвечают за то, по какому именно полю биллинг будет пытаться найти абонента в БД.



h3. Описание полей
* *Проверять IP+VLAN* - Поиск пользователя по полям NAS-Port и Framed-IP-Address в радиус пакете, и полям VLAN и IP в учётной записи пользователя соответственно. Подробней схема описана статье о [СКАТ|Пример. CKAT IPoE#Авторизация по паре IP+VLAN]
* *Проверять login* - Поиск пользователя по полю *Логин* в учетной записи
* *Проверять IP* - Поиск пользователя по полю *IPv4* в учетной записи
* *Проверять MAC* - Используется для схемы Mikrotik IPoE + Radius, совместно с опцией *Проверять логин*
* *Проверять 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*
* *Проверять HW_SERIAL* - Поиск пользователя идет по полю *Серийный номер оборудования* в учетной записи. Если в поле *Тип схемы* выбрано *Cisco IPoE* - биллинг сравнивает серийный номер оборудования с атрибутом *User-Name* из Radius запроса, если в поле *Тип схемы* выбрано любое другое значение - биллинг сравнивает серийный номер оборудования с атрибутом *ADSL-Agent-Circuit-Id*

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

h3. Примеры
{code:title=Пример запроса Access-Request от Microtik CHR}
h2. Основные настройки


!osnov.png|border=0!


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

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

* *Пересоздавать сессию*. Опция сработает если на биллинге нет данных по сессии. Это возможно, когда биллинг авторизовал сессию, но за 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}
#* Третий проводит дополнительные проверки. Должен вернуть "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}