Это старая версия документа!
3 Взаимодействие FastPCRF с Radius CoA
Общее описание
CoA - Change of Authorization - это оповещения от Radius-сервера в сторону сервера FastPCRF о том, что атрибуты назначенные пользователю поменялись или что пользователь теперь должен иметь статус "не авторизован".
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 префикс Абонента, если используется. |
Ответы 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=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 содержит только изменения параметров пользователя.
Поддерживаются следующие атрибуты:
Атрибуты | Значение |
---|---|
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:
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-клиентов.