dpi:dpi_options:brass:opt_bras:reference_bras:interact_fastpcrf_radius:interact_fastpcrf_coa [Документация VAS Experts]

Это старая версия документа!


3 Взаимодействие FastPCRF с Radius CoA

Общее описание

CoA - Change of Authorization - это оповещения от Radius-сервера в сторону сервера FastPCRF о том, что атрибуты назначенные пользователю поменялись или что пользователь теперь должен иметь статус "не авторизован".

Несмотря на то, что оповещение CoA-Request может содержать полный список изменившихся атрибутов пользователя, предпочтительным является использование упрощенного варианта этой нотификации. Упрощенный вариант сообщает FastDPI, что атрибуты пользователя изменились и требуется повторная авторизация. Получив такое оповещение, FastDPI шлет обычный запрос Access-Request на Radius-сервер.

FastPCRF поддерживает полную нотификацию 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 префикс Абонента, если используется.
Предпочтительным идентификатором абонента в CoA является его логин. При обработке CoA FastDPI ищет абонента по логину, если логин не найден или не задан в CoA, то поиск продолжается по IP-адресу. Если в CoA задан и логин и IP-адрес, и абонент найден по логину, то IP-адрес игнорируется. FastDPI не анализирует, связаны ли логин и IP-адрес в UDR базе данных.

Ответы FastCPRF на упрощенную COA нотификацию

Согласно 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

Параметр coa_reauth_ack может быть задан в fastpcrf.conf как глобально, для всех radius-серверов, так и для каждого radius-сервера

Пример настройки:

# глобальная настройка
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 

Полная нотификация CoA-Request

Полная нотификация CoA-Request используется в случае, когда у авторизованного Абонента изменились параметры, произошло подключение или отключение услуг или изменение их профилей и нет возможности использовать упрощенный CoA-Request.
Если Абонент находится в состоянии "не авторизован" и изменились назначенные ему параметры, тогда должен генерироваться упрощенный CoA-Request. В этом случае FastDPI пошлет Access-Request для авторизации Абонента. Эта логика может применяться, когда Абонент пополнил счет и необходимо его авторизовать.

Для авторизованного пользователя полная нотификация 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 СКАТ производите следующие действия:

  1. Элемент нумерованного списка если разрешен accounting - посылает Accounting Stop с причиной Admin-Reset (6).
  2. Разрывает сессию для протоколов, допускающих разрыв сессии по инициативе сервера (например, PPPoE).
  3. Выставляет статус авторизации для IP-адреса в статус «неизвестно». Это приводит к тому, что при поступлении пакета от данного IP СКАТ пошлет запрос на авторизацию.
  4. Если в Disconnect-Request указан логин абонента - эти действия производятся для всех IP-адресов, связанных с логином.

Поддержка отдельных CoA-клиентов

В некоторых конфигурациях CoA-клиент, посылающий CoA-запросы Disconnect-Request и CoA-Request, может быть отдельной сущностью, не являющейся radius-сервером. Например, это может быть некая утилита, умеющая формировать CoA-запросы и применяющаяся в скриптах. FastPCRF поддерживает такие “обособленные” CoA-клиенты. В конфигурационном файле fastpcrf.conf каждый такой CoA-клиент задается отдельным параметром coa_client, имеющим формат, аналогичный параметру radius_server:

coa_client=secret@ip%dev:port{;param=value}*

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-клиентов.

Если radius-сервер поддерживает CoA, достаточно указать опцию coa_port для него в параметре radius_server, нет необходимости описывать его отдельным параметром coa_client.