| |
dpi:dpi_options:brass:opt_bras:reference_bras:interact_fastpcrf_radius:interact_fastpcrf_coa [2020/02/05 15:17] – ↷ Страница перемещена из dpi:dpi_options:base_functionality:brass:opt_bras:reference_bras:interact_fastpcrf_radius:interact_fastpcrf_coa в dpi:dpi_options:brass:opt_bras:reference_bras:interact_fastpcrf_radius:interact_fastpcrf_coa lexx26 | dpi:dpi_options:brass:opt_bras:reference_bras:interact_fastpcrf_radius:interact_fastpcrf_coa [2020/03/18 14:45] (текущий) – удалено lexx26 |
---|
====== 3 Взаимодействие FastPCRF с Radius CoA ====== | |
{{indexmenu_n>3}} | |
=== Общее описание === | |
[[https://tools.ietf.org/html/rfc5176|CoA]] - Change of Authorization - это оповещения от Radius-сервера в сторону сервера FastPCRF о том, что атрибуты назначенные пользователю поменялись или что пользователь теперь должен иметь статус "не авторизован". | |
<note>Несмотря на то, что оповещение CoA-Request может содержать полный список изменившихся атрибутов пользователя, предпочтительным является использование упрощенного варианта этой нотификации. Упрощенный вариант сообщает FastDPI, что атрибуты пользователя изменились и требуется повторная авторизация. Получив такое оповещение, FastDPI шлет обычный запрос Access-Request на Radius-сервер.</note> | |
FastPCRF поддерживает [[#Полная нотификация CoA-Request|полную нотификацию CoA-Request]], но ее реализация не рекомендуется к использованию из-за сложности: поддержка такого варианта нотификации подразумевает содержание только списка измененных атрибутов (списка услуг и пр.) абонента в CoA-Request. | |
| |
=== Упрощенная нотификация (запрос реавторизации) CoA-Request содержит следующие атрибуты: === | |
| |
^ Атрибуты ^ Значение ^ | |
| Service-Type |8 (Authenticate-Only) | | |
| User-Name |Имя (логин) пользователя. Обязателен, если нет атрибута CUI.| | |
| VasExperts-UserName |Имя (логин) пользователя.| | |
| Chargeable-User-Identity (CUI) |Имя (логин) пользователя. Если CoA-Request содержит оба атрибута – User-Name и CUI - то CUI имеет более высокий приоритет (то есть User-Name игнорируется).| | |
| Framed-IP-Address |IPv4 адрес Абонента, в случае IPv4-only или Dual-Stack| | |
| Framed-IPv6-Address |IPv6 адрес Абонента, если используется.| | |
| Framed-IPv6-Prefix |IPv6 префикс Абонента, если используется.| | |
<note>Предпочтительным идентификатором абонента в CoA является его логин. При обработке CoA FastDPI ищет абонента по логину, если логин не найден или не задан в CoA, то поиск продолжается по IP-адресу. Если в CoA задан и логин и IP-адрес, и абонент найден по логину, то IP-адрес игнорируется. FastDPI не анализирует, связаны ли логин и IP-адрес в UDR базе данных.</note> | |
| |
=== Ответы FastCPRF на упрощенную COA нотификацию === | |
Согласно [[https://tools.ietf.org/html/rfc5176|RFC5176]], на CoA-Request с Service-Type=8 (Authenticate-Only) должен быть ответ CoA-NAK с атрибутом Error-Cause=507 (Request Initiated). Это не всегда удобно, так как некоторые утилиты (например, radclient из FreeRadius) трактуют ответ CoA-NAK как ошибку. FastPCRF имеет настроечный параметр coa_reauth_ack, который определяет, как отвечать на CoA-Request с Service-Type=8: | |
| |
0 (значение по умолчанию) - стандартное поведение: отвечать CoA-NAK с Error-Cause=507 | |
1 - нестандартное поведение: отвечать CoA-ACK | |
<note>Параметр coa_reauth_ack может быть задан в fastpcrf.conf как глобально, для всех radius-серверов, так и для каждого radius-сервера</note> | |
Пример настройки: | |
<code> | |
# глобальная настройка | |
coa_reauth_ack=0 | |
# для этого сервера применяется глобальная настройка coa_reauth_ack=0 | |
radius_server=mysecret1@192.168.10.10%eth0 | |
# а для этого явно задано coa_reauth_ack=1 | |
radius_server=mysecret2@192.168.20.10%eth0;coa_reauth_ack=1 </code> | |
| |
=== Полная нотификация CoA-Request === | |
<note>Полная нотификация CoA-Request используется в случае, когда у авторизованного Абонента изменились параметры, произошло подключение или отключение услуг или изменение их профилей и нет возможности использовать [[#Упрощенная нотификация (запрос реавторизации) CoA-Request содержит следующие атрибуты: |упрощенный CoA-Request]].</note> | |
| |
<note warning>Если Абонент находится в состоянии "не авторизован" и изменились назначенные ему параметры, тогда должен генерироваться [[#Упрощенная нотификация (запрос реавторизации) CoA-Request содержит следующие атрибуты: |упрощенный CoA-Request]]. В этом случае FastDPI пошлет Access-Request для авторизации Абонента. Эта логика может применяться, когда Абонент пополнил счет и необходимо его авторизовать. </note> | |
Для авторизованного пользователя полная нотификация CoA-Request содержит только изменения параметров пользователя. | |
| |
Поддерживаются следующие атрибуты: | |
^ Атрибуты ^ Значение ^ | |
| User-Name |Имя (логин) пользователя. Обязателен, если нет атрибута CUI.| | |
| VasExperts-UserName |Имя (логин) пользователя.| | |
| Chargeable-User-Identity (CUI) |Имя (логин) пользователя. Если CoA-Request содержит оба атрибута – User-Name и CUI - то CUI имеет более высокий приоритет (то есть User-Name игнорируется).| | |
| Framed-IP-Address |IPv4 адрес Абонента, в случае IPv4-only или Dual-Stack| | |
| Framed-IPv6-Address |IPv6 адрес Абонента, если используется.| | |
| Framed-IPv6-Prefix |IPv6 префикс Абонента, если используется.| | |
| VasExperts-Policing-Profile |Имя профиля полисинга для пользователя. Данный атрибут должен включаться только если изменился профиль полисинга пользователя. В CoA-Request допустимо не более одного атрибута VasExperts-Policing-Profile.| | |
| VasExperts-Enable-Service |Параметр, задающий включение/отключение конкретной услуги, для которой не требуется профиль. Формат строки: ''service_id:flag'' service_id – число, идентификатор услуги fastDPI; flag – признак включения/отключения услуги. Допустимые значения: -1, on, enabled – услуга включена; -0, off, disabled – услуга отключена. Каждая сменившая статус услуга должна задаваться отдельным атрибутом VasExperts-Enable-Service, то есть CoA-Request может содержать ноль или более атрибутов VasExperts-Enable-Service. | | |
| VasExperts-Service-Profile |Параметр, задающий имя профиля для конкретной услуги fastDPI. Формат: service_id:profile_name -service_id – число, идентификатор услуги fastDPI; -profile_name – строка, имя профиля по услуге. Например, подключение услуги NAT (11) с профилем «cgnat»: VasExperts-Service-Profile="11:cgnat" PDU может содержать ноль или более атрибутов VasExperts-Service-Profile – по одному атрибуту для каждой услуги. Если услуге сопоставлен профиль, услуга считается подключенной. Если требуется отключить какую-нибудь услугу в CoA, то следует использовать атрибут VasExperts-Enable-Service. Например, для отключения услуги 5 в CoA следует указать: VasExperts-Enable-Service="5:off" Для включения услуги 5 с профилем my_white_list надо указать: VasExperts-Service-Profile="5:my_white_list" Каждое изменение имени профиля услуги задается отдельным атрибутом VasExperts-Service-Profile, то есть CoA-Request может содержать ноль или более атрибутов VasExperts-Service-Profile.| | |
| Session-Timeout |Опциональный атрибут, задает время действия авторизации в секундах. Значение 0 игнорируется. По истечении этого времени статус авторизации пользователя устанавливается в “неизвестен”, что приводит к отправке запроса на авторизацию Access-Request.| | |
| |
=== Описание обработки CoA Disconnect-Request === | |
Нотификация Disconnect-Request сигнализирует о том, что пользователь стал неавторизованным (например, закончились средства на счете). | |
Нотификация Disconnect-Request должна содержать следующие атрибуты: | |
^ Атрибуты ^ Значение ^ | |
| User-Name |Имя (логин) пользователя. Обязателен, если нет атрибутов CUI и VasExperts-UserName.| | |
| VasExperts-UserName |Имя (логин) пользователя.| | |
| Chargeable-User-Identity (CUI) |Имя (логин) пользователя. Если CoA-Request содержит оба атрибута – User-Name и CUI - то CUI имеет более высокий приоритет (то есть User-Name игнорируется).| | |
| Framed-IP-Address |IPv4 адрес Абонента, в случае IPv4-only или Dual-Stack.| | |
| Framed-IPv6-Address |IPv6 адрес Абонента, если используется.| | |
| Framed-IPv6-Prefix |IPv6 префикс Абонента, если используется.| | |
| Acct-Session-Id |Идентификатор accounting-сессии. По этому идентификатору СКАТ ищет у себя во внутренней БД IP-адрес, связанный с данной accounting-сессией.| | |
| |
При получении Disconnect-Request СКАТ производите следующие действия: | |
| |
- Элемент нумерованного списка если разрешен accounting - посылает Accounting Stop с причиной Admin-Reset (6). | |
- Разрывает сессию для протоколов, допускающих разрыв сессии по инициативе сервера (например, PPPoE). | |
- Выставляет статус авторизации для IP-адреса в статус «неизвестно». Это приводит к тому, что при поступлении пакета от данного IP СКАТ пошлет запрос на авторизацию. | |
- Если в Disconnect-Request указан логин абонента - эти действия производятся для всех IP-адресов, связанных с логином. | |
| |
=== Поддержка отдельных CoA-клиентов === | |
В некоторых конфигурациях CoA-клиент, посылающий CoA-запросы Disconnect-Request и CoA-Request, может быть отдельной сущностью, не являющейся radius-сервером. Например, это может быть некая утилита, умеющая формировать CoA-запросы и применяющаяся в скриптах. FastPCRF поддерживает такие “обособленные” CoA-клиенты. В конфигурационном файле fastpcrf.conf каждый такой CoA-клиент задается отдельным параметром coa_client, имеющим формат, аналогичный параметру radius_server: | |
<code>coa_client=secret@ip%dev:port{;param=value}*</code> | |
secret – секрет Radius; | |
ip – ip-адрес CoA-клиента; | |
dev (необязательный) – имя интерфейса, на котором слушать входящие запросы; если не задан – интерфейс выбирается операционной системой; | |
port – слушаемый локальный порт; | |
param=value – перечень (через точку с запятой) конфигурационных параметров для данного CoA-клиента. Поддерживаются параметры: max_resend_count, msg_auth_attr, coa_resend_timeout. | |
| |
Каждый CoA-клиент описывается отдельным параметром coa_client. Всего может быть до 16 обособленных CoA-клиентов. FastPCRF принимает CoA-запросы только от зарегистрированных (описанных в конфигурационном файле) radius-серверов и CoA-клиентов. | |
<note>Если radius-сервер поддерживает CoA, достаточно указать опцию coa_port для него в параметре radius_server, нет необходимости описывать его отдельным параметром coa_client.</note> | |