Настройка динамических абонентов (уровень SIP-адаптера)

Введение

В системе поддерживается возможность дайджест-аутентификации и авторизации абонентов с использованием RADIUS-сервера. Для этого необходимо создать динамических абонентов. Система не хранит данные о динамических абонентах. Номер абонента и его пароль для аутентификации хранятся на RADIUS-сервере. В системе ECSS-10 необходимо только указать количество динамических абонентов и параметры доступа к RADIUS-серверу.

Авторизация осуществляется при регистрации абонента (запрос REGISTER) и определяет, существует ли абонент в системе. Дополнительно авторизация осуществляется при совершении вызова абонентом (запрос INVITE) и определяет, разрешено ли абоненту пользоваться ресурсом. Все запросы (регистрация, установление соединений) обязательно проходят процедуру аутентификации.

Например, у абонента нет средств на счете, но при этом с отрицательным балансом он должен быть авторизован и иметь возможность совершать вызовы на экстренный номер 112. При этом требование прохождения процедуры аутентификации сохраняется. При вызовах на другие номера процедура авторизации вернет запрет на соединение — данные вызовы будут отбиты.

Комплекс ECSS-10 поддерживает три варианта дайджест-аутентификации на RADIUS-сервере:

Порядок настройки динамических абонентов:

  1. Добавить в систему информацию о RADIUS-серверах.
  2. Создать группы с определенным количеством динамических абонентов.
  3. Назначить группе абонентов список RADIUS-серверов, с которыми они будут взаимодействовать, и настроить параметры группы.

Добавление RADIUS-серверов

RAIDUS-сервера прописываются к каждой виртуальной АТС отдельно, и затем могут быть использованы в подсистеме авторизации.

Команды по настройки RADIUS серверов детально описаны в разделе Команды настройки параметров соединения c RADIUS-сервером.

Создание RADIUS сервера через CoCon

Команда создания RADIUS сервера:

/domain/test_domain/aaa/radius/declare <Name> <Host> <Port> <Secret> [<Options>, ...]

где:

Пример создания RADIUS сервера с именем "free_radius", IP адресом 10.0.20.35, портом 1812, секретным ключом "testing123" :

/domain/test_domain/aaa/radius/declare free_radius 10.0.20.35 1812 testing123              
Radius server "free_radius" successfully declared.

Проверить можно следующей командой:

/domain/test_domain/aaa/radius/info                           
┌───────────┬────────────────────────┬───────────────────┐
│   Name    │       Host:Port        │      Options      │
├───────────┼────────────────────────┼───────────────────┤
│free_radius│10.0.20.35:1812 (access)│secret = testing123│
│           │                        │retry_count = 3    │
│           │                        │retry_timeout = 2s │
│           │                        │idle_timeout = 0ms │
│           │                        │ip_family = inet   │
└───────────┴────────────────────────┴───────────────────┘

Создание RADIUS сервера через веб

Открыть приложение "Домены" , выбрать нужный домен, выбрать "Свойства домена":

В новом окне выбрать "Radius серверы", далее - "Radius серверы", "Добавить", заполнить параметры нового сервера:

Настройка группы динамических абонентов

Порядок настройки группы динамических абонентов:

  1. Создать группу динамических абонентов командой:

    /domain/<DOMAIN>/sip/user/dynamic-area/new <NEW AREA NAME> <ROUTING CONTEXT> <GROUP SIZE>

    где:

  2. Назначить созданной группе список RADIUS-серверов командой:

    /domain/<DOMAIN>/sip/user/dynamic-area/set <AREA NAME> servers [<ID1>, ...]

    где:

  3. Настройка остальных параметров:

    /domain/<DOMAIN>/sip/user/dynamic-area/set <AREA NAME> <PARAMETER> <VALUE>

    где:

  4. Для просмотра информации по группе динамических абонентов используется команда:

    /domain/<DOMAIN>/sip/user/dynamic-area/info [<AREA NAME>]

    где:

Пример последовательности создания группы динамических абонентов 

Пример конфигурации на RADIUS-сервере (в примере freeradius) для проверки работоспособности

добавить в конце файла /etc/freeradius/3.0/clients.conf следующие строки (наш ssw имеет IP адреса 10.0.20.31/10.20.32):

client ecss1 {
ipaddr = 10.0.20.31
secret = testing123
}

client ecss2 {
ipaddr = 10.0.20.32
secret = testing123
}

добавить в конце файла /etc/freeradius/3.0/users следующую строчку (наш абонент будет иметь номер 42100/ пароль 42100):

42100   Cleartext-Password := "42100"

В ssw абонента не создаем,

Прописываем только конфигурацию в ТА (для примера VP 15)

выполняем регистрацию с ТА:

Видим что регистрация прошла успешно, при этом был выполнен запрос на Radius сервер с IP адресом 10.0.20.35

Проверим информацию о группе абонентов в CoCon, видим что в настоящий момент один из 10 абонентов подключен (зарегистрирован) к SSW:

/domain/test_domain/sip/user/dynamic-area/info example 
Executed on the sip1@ecss2
┌───────────────────────────┬───────────────────────────────────────────┐
│ Dynamic area (SIP domain) │                Parameters                 │
├───────────────────────────┼───────────────────────────────────────────┤
│ example                   │ current size/limit        1/10            │
│                           │ servers:                                  │
│                           │   free_radius             ok              │
│                           │ draft sterman             true            │
│                           │ number modification rule  undefined       │
│                           │ full digest               false           │
│                           │ routing context           default_routing │
│                           │ cisco vsa for all         false           │
└───────────────────────────┴───────────────────────────────────────────┘

После успешной регистрации мы видим абонента 42100 в списке абонентов SSW, абонент регистрируется как динамический, группы example:

Запоминаем данного абонента уже как алиас, но с пометкой "radius", чтобы при повторных регистрациях и звонках отправлять запросы на радиус сервер, так же указываем к какой группе динамических абонентов этот алиас относится. Если обновления регистрации не было и она истекла, интерфейс и алиас удаляются, что такой абонент существовал - "забываем".

Абонент 42100 делает тестовый звонок sip абоненту 42001 принадлежащему домену test_domain:

Видим успешный звонок , продолжительность разговора 4.5 сек.

Возможные проблемы при конфигурации

Параметры передающиеся на Radius сервер

В таблице ниже представлены все параметры передающиеся на Radius сервер при запросах на номер динамического абонента. Если данные верны, Radius сервер возвращает access на запроса и обработка интерфейса продолжается как с локальным абонентом SSW.

Таблица 1 — параметры запроса на Radius сервер

AccessRequestID пакета: 0x01..0xFF
CalledStationIdCdPN (поле user из заголовка To)
CallingStationIdCgPN (поле user из заголовка From)
DigestMethodметод запроса (INVITE, REGISTER)
DigestURIзначение URI из заголовка Digest
DigestRealmзначение realm из заголовка Digest
DigestResponseзначение ответа из заголовка Digest
DigestQopзначение qop из заголовка Digest
DigestAlgorithmзначение algorithm из заголовка Digest
DigestCNonceзначение cnonce из заголовка Digest
DigestNonceзначение nonce из заголовка Digest
DigestNonceCountзначение nc из заголовка Digest
DigestUsernameзначение user из заголовка Digest
SipAorURI в формате: sip:UserName@SipDomain. UserName.
NasIpAddressлокальный адрес SIP адаптера, с которого идет запрос на сервер
NasPortлокальный порт SIP адаптера, с которого идет запрос на сервер
NasPortType0 — асинхронный запрос
ServiceType1 — Login
FramedProtocol2 — SLIP
UserNameSIP user (Биллинговый номер если есть или REGISTER:CdPN, INVITE:CgPN)
VendorCisco + VendorSpecific + H323_conf_idидентификатор в формате: <<0x11, CallRef:24, 0x7C, StartTime:32>>
VendorCisco + VendorSpecific + H323_gw_idлокальный адрес SIP адаптера, на который получен запрос