Предыдущая версия справа и слеваПредыдущая версия | |
dpi:bras_bng:radius_integration:radius_auth_coa [2024/12/04 15:34] – ↷ Операцией перемещения обновлены ссылки elena.krasnobryzh | dpi:bras_bng:radius_integration:radius_auth_coa [2024/12/05 15:02] (текущий) – elena.krasnobryzh |
---|
====== Radius CoA ====== | ====== RADIUS CoA ====== |
{{indexmenu_n>2}} | {{indexmenu_n>2}} |
| |
__[[https://tools.ietf.org/html/rfc5176|CoA]]__ — Change of Authorization — это оповещения от Radius-сервера о том, что свойства пользователя поменялись или что пользователь стал неавторизованным. | __[[https://tools.ietf.org/html/rfc5176|CoA]]__ — Change of Authorization — это оповещения от RADIUS-сервера о том, что свойства пользователя поменялись или что пользователь стал неавторизованным. |
CoA-Request нотификация говорит о том, что пользователь авторизован и, опционально, у него изменились некоторые параметры. Таким образом, CoA-Request может приходить в следующих случаях: | CoA-Request нотификация говорит о том, что пользователь авторизован и, опционально, у него изменились некоторые параметры. Таким образом, CoA-Request может приходить в следующих случаях: |
* пользователь перешел из состояния "не авторизован" в состояние "авторизован" (например, пополнил счет) — см. далее; | * пользователь перешел из состояния "не авторизован" в состояние "авторизован" (например, пополнил счет) — см. далее; |
| |
Виды СоА: | Виды СоА: |
- Упрощенный CoA-Request — при получении CoA fastDPI понимает, что атрибуты пользователя изменились и требуется повторная авторизация. Получив такое оповещение, fastDPI шлет обычный запрос ''Access-Request'' на Radius-сервер, как описано [[dpi:bras_bng:radius_integration:radius_auth_server_integration|ранее]]. | - Упрощенный CoA-Request — при получении CoA fastDPI понимает, что атрибуты пользователя изменились и требуется повторная авторизация. Получив такое оповещение, fastDPI шлет обычный запрос ''Access-Request'' на RADIUS-сервер, как описано [[dpi:bras_bng:radius_integration:radius_auth_server_integration|ранее]]. |
- Полный CoA-Request — оповещение ''CoA-Request'' может содержать полный список __изменившихся__ атрибутов пользователя. | - Полный CoA-Request — оповещение ''CoA-Request'' может содержать полный список __изменившихся__ атрибутов пользователя. |
- Disconnect-Request — сброс статуса авторизации пользователя. | - Disconnect-Request — сброс статуса авторизации пользователя. |
| |
====== Виды нотификации CoA-Request====== | ====== Виды нотификации CoA-Request====== |
<note important>Хотя оповещение ''CoA-Request'' может содержать полный список __изменившихся__ атрибутов пользователя, предлагается использовать упрощенный вариант этой нотификации. Такой вариант говорит fastDPI, что атрибуты пользователя изменились и требуется повторная авторизация. Получив такое оповещение, fastDPI шлет обычный запрос ''Access-Request'' на Radius-сервер, как описано [[dpi:bras_bng:radius_integration:radius_auth_server_integration|ранее]].</note> | <note important>Хотя оповещение ''CoA-Request'' может содержать полный список __изменившихся__ атрибутов пользователя, предлагается использовать упрощенный вариант этой нотификации. Такой вариант говорит fastDPI, что атрибуты пользователя изменились и требуется повторная авторизация. Получив такое оповещение, fastDPI шлет обычный запрос ''Access-Request'' на RADIUS-сервер, как описано [[dpi:bras_bng:radius_integration:radius_auth_server_integration|ранее]].</note> |
| |
===== Упрощенная нотификация CoA-Request (запрос реавторизации) ===== | ===== Упрощенная нотификация CoA-Request (запрос реавторизации) ===== |
| |
==== Ответ на упрощенную нотификацию ==== | ==== Ответ на упрощенную нотификацию ==== |
Согласно RFC5176, на CoA-Request с Service-Type=8 (Authenticate-Only) должен быть ответ CoA-NAK с атрибутом Error-Cause=507 (Request Initiated). Это не всегда удобно, так как некоторые утилиты (например, radclient из FreeRadius) | Согласно RFC5176, на CoA-Request с Service-Type=8 (Authenticate-Only) должен быть ответ CoA-NAK с атрибутом Error-Cause=507 (Request Initiated). Это не всегда удобно, так как некоторые утилиты (например, radclient из FreeRADIUS) |
трактуют ответ CoA-NAK как ошибку. | трактуют ответ CoA-NAK как ошибку. |
FastPCRF имеет настроечный параметр ''coa_reauth_ack'', который определяет, как отвечать на CoA-Request с Service-Type=8: | FastPCRF имеет настроечный параметр ''coa_reauth_ack'', который определяет, как отвечать на CoA-Request с Service-Type=8: |
* 1 — нестандартное поведение: отвечать CoA-ACK. | * 1 — нестандартное поведение: отвечать CoA-ACK. |
| |
Этот параметр может быть задан в fastpcrf.conf как глобально, для всех Radius-серверов, так и для каждого Radius-сервера: | Этот параметр может быть задан в fastpcrf.conf как глобально, для всех RADIUS-серверов, так и для каждого RADIUS-сервера: |
<code bash> | <code bash> |
# глобальная настройка | # глобальная настройка |
| |
* **0x0001** — ''disable acct stop'', не посылать немедленно ''acct stop'' для ''disconnected'' DHCP-абонента. Позволяет учитывать трафик после PoD. По умолчанию acct-сессия закрывается по PoD, что может привести к неучтенному трафику для DHCP-абонентов от момента PoD до DHCP-реавторизации. | * **0x0001** — ''disable acct stop'', не посылать немедленно ''acct stop'' для ''disconnected'' DHCP-абонента. Позволяет учитывать трафик после PoD. По умолчанию acct-сессия закрывается по PoD, что может привести к неучтенному трафику для DHCP-абонентов от момента PoD до DHCP-реавторизации. |
* **0x0002** — ''disable L3 auth'', не выполнять L3-авторизации для ''disconnected'' DHCP-абонента. СКАТ может авторизовать L2-абонента по его IP-адресу при поддержке Radius. | * **0x0002** — ''disable L3 auth'', не выполнять L3-авторизации для ''disconnected'' DHCP-абонента. СКАТ может авторизовать L2-абонента по его IP-адресу при поддержке RADIUS. |
* **0x0004** — ''block traffic'' — блокируем весь трафик от ''disconnected'' абонента (то есть на пути ''subs -> inet''). Попытка сократить время реавторизации: многие CPE при пропадании соединения в Интернет досрочно шлют DHCP. Но цена этого флага — разрыв всех существующих сессий абонента. | * **0x0004** — ''block traffic'' — блокируем весь трафик от ''disconnected'' абонента (то есть на пути ''subs -> inet''). Попытка сократить время реавторизации: многие CPE при пропадании соединения в Интернет досрочно шлют DHCP. Но цена этого флага — разрыв всех существующих сессий абонента. |
* **0x0008** — на DHCP Request -> отвечаем NAK. Позволяет сократить время реавторизации путем прерывания аренды IP-адреса. | * **0x0008** — на DHCP Request -> отвечаем NAK. Позволяет сократить время реавторизации путем прерывания аренды IP-адреса. |
| |
====== Отдельные CoA-клиенты ====== | ====== Отдельные CoA-клиенты ====== |
В некоторых конфигурациях CoA-клиент, посылающий CoA-запросы Disconnect-Request и CoA-Request, может быть отдельной сущностью, не являющейся Radius-сервером. Например, это может быть некая утилита, умеющая формировать CoA-запросы и применяющаяся в скриптах. FastPCRF поддерживает такие "обособленные" CoA-клиенты. В конфигурационном файле fastpcrf.conf каждый такой CoA-клиент задается отдельным параметром "coa_client", имеющим формат, аналогичный параметру ''radius_server'': | В некоторых конфигурациях CoA-клиент, посылающий CoA-запросы Disconnect-Request и CoA-Request, может быть отдельной сущностью, не являющейся RADIUS-сервером. Например, это может быть некая утилита, умеющая формировать CoA-запросы и применяющаяся в скриптах. FastPCRF поддерживает такие "обособленные" CoA-клиенты. В конфигурационном файле fastpcrf.conf каждый такой CoA-клиент задается отдельным параметром "coa_client", имеющим формат, аналогичный параметру ''radius_server'': |
| |
<code bash>coa_client=secret@ip%dev:port{;param=value}*</code> | <code bash>coa_client=secret@ip%dev:port{;param=value}*</code> |
* ''secret'' — секрет Radius; | * ''secret'' — секрет RADIUS; |
* ''ip'' — IP-адрес CoA-клиента; | * ''ip'' — IP-адрес CoA-клиента; |
* ''dev'' (необязательный) — имя интерфейса, на котором слушать входящие запросы; если не задан — интерфейс выбирается операционной системой; | * ''dev'' (необязательный) — имя интерфейса, на котором слушать входящие запросы; если не задан — интерфейс выбирается операционной системой; |
Каждый CoA-клиент описывается в conf-файле отдельным параметром ''coa_client''. | Каждый CoA-клиент описывается в conf-файле отдельным параметром ''coa_client''. |
Всего может быть до 16 обособленных CoA-клиентов. | Всего может быть до 16 обособленных CoA-клиентов. |
FastPCRF принимает CoA-запросы только от зарегистрированных (описанных в conf-файле) Radius-серверов и CoA-клиентов. Если Radius-сервер поддерживает CoA, нет необходимости описывать его ещё и параметром ''coa_client'', — достаточно для этого Radius-сервера указать опцию ''coa_port'' в параметре ''radius_server''. | FastPCRF принимает CoA-запросы только от зарегистрированных (описанных в conf-файле) RADIUS-серверов и CoA-клиентов. Если RADIUS-сервер поддерживает CoA, нет необходимости описывать его ещё и параметром ''coa_client'', — достаточно для этого RADIUS-сервера указать опцию ''coa_port'' в параметре ''radius_server''. |
| |
====== Запрос accounting-сессии через CoA ====== | ====== Запрос accounting-сессии через CoA ====== |