- RADIUS (Remote Authorization Dial-In User Service) - протокол безопасности, который предоставляет централизованный метод аутентификации пользователей путем обращения к внешнему серверу. Протокол RADIUS используется для аутентификации, авторизации и учета. Сервер RADIUS использует базу данных пользователей, которая содержит данные проверки подлинности для каждого пользователя. Таким образом, использование протокола RADIUS обеспечивает дополнительную защиту при доступе к ресурсам сети.
В системе поддержаны два независимых режима работы с сервером RADIUS: - Работа с сервером авторизации. Данный режим реализован для аутентификации и авторизации динамических абонентов, все аутентификационные данные в этом случае хранятся на RADIUS-сервере. Используется пакет Аccess-Request.
- Работа с сервером учета (аккаунтинга). В этом случае для всех вызовов, совершенных через виртуальную АТС, будут отправляться запросы аккаунтинга (Accounting-Request) на RADIUS-сервер.
В случае включения авторизации или аккаунтинга на RADIUS-сервере все вызовы сначала будут проходить авторизацию на RADIUS, после чего будут проходить по плану маршрутизации. |
Описание каждого из режимов и процедуру настройки смотрите в 3.14.3 Настройка динамических абонентов и системы Radius. Описание каждого RADIUS-пакета состоит из описания всех пар Атрибут-Значение (Attribute-Value Pair) для этого типа пакета. Атрибуты могут быть как стандартными, так и специфичными атрибутами вендоров (Vendor-Specific Attribute). Если значение атрибута неизвестно (например, при отсутствии исходящего транка невозможно определить значение переменной CdPN_OUT, которое используется в качестве значения некоторых атрибутов), то этот атрибут не добавляется в сообщение. Для стандартных атрибутов описание имеет вид: Имя атрибута(Номер атрибута): Значение атрибута Для специфичных атрибутов вендоров описание имеет вид: Имя атрибута(Номер атрибута): Имя вендора(Номер вендора): Имя VSA: Значение VSA где: - Имя атрибута всегда Vendor-Specific;
- Номер атрибута всегда 26;
- Имя вендора – имя вендора;
- Номер вендора – номер вендора, присвоенный ему организацией IANA в документе “PRIVATE ENTERPRISE NUMBERS” (http://www.iana.org/assignments/enterprise-numbers);
- “Имя VSA” – имя атрибута вендора;
- “Значение VSA” – значение атрибута вендора.
В качестве значения атрибута может использоваться конструкция вида <$NAME>, где NAME – это имя переменной. Описание значения переменных приведено ниже. Пакет Аccess-Request: NAS-IP-Address(4): <$SSW_IP>
NAS-Port(5): <$SSW_PORT>
NAS-Port-Type(61): Async(0)
Service-Type(6): Login-User(1)
Framed-Protocol(7): SLIP(2)
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Digest-Attributes(207 для draft-sterman, иначе атрибуты передаются как отдельные параметры 104-122)
Digest-Response (206 для draft-sterman, иначе 103)
Message-Authenticator(80): <$Auth> |
В ответ на данное сообщение ожидается одно из следующих сообщений: Access-Reject - в случае, если не было дано разрешение на выполнение вызова; Access-Accept - в случае, если разрешение на выполнение вызова было получено. В сообщение Access-Accept могут присутствовать следующие атрибуты: Acct-Interim-Interval(85): <$INTERIM_INTERVAL>
Session-Timeout(27): <$SESSION_TIMEOUT>
Vendor-Specific(26): Cisco(9): h323-credit-time(102): <$H323_CREDIT_TIME> |
Стартовый пакет Accounting-Request (Start): Acct-Status-Type(40) - Start(1)
Acct-Session-Id(44): <$SESSION_ID>
NAS-IP-Address(4): <$SSW_IP>
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Event-Timestamp(55): согласно RFC2869
NAS-Port-Id(87): <$SESSION_ID>
NAS-Port-Type(61): Async(0)
Acct-Delay-Time(41): согласно RFC2866
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-in=<$CgPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-out=<$CgPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-in=<$CdPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-out=<$CdPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-route-retries=<$ROUTE_RETRIES>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): h323-call-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): h323-conf-id(24): h323-conf-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): escc-domain-name=<$DOMAIN>
Vendor-Specific(26): Cisco(9): h323-setup-time(25): h323-setup-time=<$TIME_SETUP>
Vendor-Specific(26): Cisco(9): h323-call-origin(26): h323-call-origin=originate
Vendor-Specific(26): Cisco(9): h323-call-type(27): h323-call-type=<$CALL_TYPE>
Vendor-Specific(26): Cisco(9): h323-connect-time(28): h323-connect-time=<$TIME_CONNECT>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-address=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-id=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): h323-remote-id=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-trunkgroup-label=<$InTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-trunkgroup-label=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-iface=<$InIface>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-iface=<$OutIface> |
В ответ на данное сообщение ожидается сообщение Accounting-Response, в котором может присутствовать следующий атрибут: Vendor-Specific(26): Cisco(9): h323-credit-time(102): <$H323_CREDIT_TIME> |
Промежуточный пакет Interim Accounting Request (Update): Acct-Status-Type(40) - Start(1)
Acct-Session-Id(44): <$SESSION_ID>
NAS-IP-Address(4): <$SSW_IP>
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Event-Timestamp(55): согласно RFC2869
NAS-Port-Id(87): <$SESSION_ID>
NAS-Port-Type(61): Async(0)
Acct-Session-Time(46): <$INTERIM_SESSION_TIME>
Acct-Delay-Time(41): согласно RFC2866
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-in=<$CgPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-out=<$CgPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-in=<$CdPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-out=<$CdPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-route-retries=<$ROUTE_RETRIES>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): h323-call-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): h323-conf-id(24): h323-conf-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): escc-domain-name=<$DOMAIN>
Vendor-Specific(26): Cisco(9): h323-setup-time(25): h323-setup-time=<$TIME_SETUP>
Vendor-Specific(26): Cisco(9): h323-call-origin(26): h323-call-origin=originate
Vendor-Specific(26): Cisco(9): h323-call-type(27): h323-call-type=<$CALL_TYPE>
Vendor-Specific(26): Cisco(9): h323-connect-time(28): h323-connect-time=<$TIME_CONNECT>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-address=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-id=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): h323-remote-id=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-trunkgroup-label=<$InTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-trunkgroup-label=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-iface=<$InIface>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-iface=<$OutIface> |
В ответ на данное сообщение ожидается сообщение Accounting-Response, в котором может присутствовать следующий атрибут: Vendor-Specific(26): Cisco(9): h323-credit-time(102): <$H323_CREDIT_TIME> |
Завершающий пакет Accounting-Request (Stop): Acct-Status-Type(40) - Stop(2)
Acct-Session-Id(44): <$SESSION_ID>
NAS-IP-Address(4): <$SSW_IP>
User-Name(1): <$CgPN_IN>
Called-Station-Id(30): <$CdPN_IN>
Calling-Station-Id(31): <$CgPN_IN>
Event-Timestamp(55): согласно RFC2869
NAS-Port-Id(87): <$SESSION_ID>
NAS-Port-Type(61): Async(0)
Acct-Session-Time(46): <$SESSION_TIME>
Acct-Delay-Time(41): согласно RFC2866
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-local-disconnect-isup-cause=<DISCONNECT_CAUSE>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-in=<$CgPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-src-number-out=<$CgPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-in=<$CdPN_IN>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-dst-number-out=<$CdPN_OUT>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-route-retries=<$ROUTE_RETRIES>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): h323-call-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): h323-conf-id(24): h323-conf-id=<$CALL_ID>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): escc-domain-name=<$DOMAIN>
Vendor-Specific(26): Cisco(9): h323-setup-time(25): h323-setup-time=<$TIME_SETUP>
Vendor-Specific(26): Cisco(9): h323-call-origin(26): h323-call-origin=originate
Vendor-Specific(26): Cisco(9): h323-call-type(27): h323-call-type=<$CALL_TYPE>
Vendor-Specific(26): Cisco(9): h323-connect-time(28): h323-connect-time=<$TIME_CONNECT>
Vendor-Specific(26): Cisco(9): h323-disconnect-time(29): h323-disconnect-time=<$TIME_DISCONNECT>
Vendor-Specific(26): Cisco(9): h323-disconnect-cause(30): h323-disconnect-cause=<$LOCAL_DISCONNECT_CAUSE>
Vendor-Specific(26): Cisco(9): Cisco-AVPair(1): xpgk-local-disconnect-cause=<$LOCAL_DISCONNECT_CAUSE>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-address=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-gw-id(33): h323-gw-id=<$SSW_IP>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): h323-remote-id=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-trunkgroup-label=<$InTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-trunkgroup-label=<$OutTrunkGroup>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): in-iface=<$InIface>
Vendor-Specific(26): Cisco(9): h323-remote-id(1): out-iface=<$OutIface> |
Таблица 1 - Описание переменных | Переменная | Описание и возможные значения |
|---|
| $CdPN_IN | номер вызываемого абонента до преобразования (принятого из интерфейса) | | $CdPN_OUT | номер вызывающего абонента после преобразования (переданного в интерфейс) | | $CgPN_IN | номер вызывающего абонента до преобразования (принятого из интерфейса) | | $CgPN_OUT | номер вызывающего абонента после преобразования (переданного в интерфейс) | | $LOCAL_DISCONNECT_CAUSE | причина завершения вызова в формате системы ECSS-10, описание значений приведено в следующей таблице | | $DISCONNECT_CAUSE | причина завершения вызова согласно рекомендации Q.850 | | $CALL_TYPE | тип вызова, всегда "Telephony" | | $CALL_ID | идентификатор вызова | | $SSW_IP | IP-адрес интерфейса системы ECSS-10, аутентифицирующего пользователя | | $SSW_PORT | транспортный порт интерфейса системы ECSS-10, аутентифицирующего пользователя | | $ROUTE_RETRIES | текущий номер попытки, отсчёт начинается с 1 (для первой попытки, соответственно) | | $SESSION_ID | идентификатор сессии | | $INTERIM_SESSION_TIME | время разговора к моменту отправки промежуточного сообщения | | $SESSION_TIME | время продолжительности разговора | | $TIME_SETUP | время поступления инициирующего запроса во входящий интерфейс в формате hh:mm:ss.uuu t www MMM dd yyyy | | $TIME_CONNECT | время ответа вызываемой стороны в формате hh:mm:ss.uuu t www MMM dd yyyy | | $TIME_DISCONNECT | время отбоя вызова одной из сторон в формате hh:mm:ss.uuu t www MMM dd yyyy | | $DOMAIN | имя виртуальной АТС | | $Auth | уникальный идентификатор запроса | | $InTrunkGroup | имя входящей транковой группы | | $OutTrunkGroup | имя исходящей транковой группы | | $InIface | имя входящего интерфейса | | $OutIface | имя исходящего интерфейса | | $INTERIM_INTERVAL | интервал времени (в секундах), через который будут посылаться промежуточные Acct-Interim-Update сообщения. Значение должно быть не меньше 60. В случае, если на уровне домена задано свойство interim_interval (domain/DOMAIN_NAME/aaa/accounting/info), то значение $INTERIM_INTERVAL будет вычислено на основе его значения | | $SESSION_TIMEOUT | выделенное время на разговор (в секундах). В случае, если время равно 0 - то вызов запрещен. -1 - вызов не ограничен | | $H323_CREDIT_TIME | выделенное время на разговор (в секундах). В случае, если время равно 0 - то вызов запрещен. -1 - вызов не ограничен. В случае, если данный параметр пришел на Acct-Interim-Update запрос, то это время на оставшуюся часть разговора |
Таблица 2 – Описание внутренних системных причин разъединения, которые могут передаваться в LOCAL_DISCONNECT_CAUSE | Внутренняя причина | Значение причины согласно рекомендации Q.850 | Описание |
|---|
| normal | 16 | нормальное разъединение | | originationDenied | 16 | абоненту запрещено совершать вызов, возможно административная блокировка | | authorisationFailure | 50 | ошибка авторизации | | aPtyAbandon | 16 | вызывающий абонент положил трубку до ответа | | invalidCollectedInformation | 1 | номер набран неверно, не найден маршрут | | collectInformationFailure | 1 | ошибка сбора цифр номера, может возникнуть, когда система ожидает дополнительных цифр номера, но они не поступают до истечения таймера | | aPtyDisc | 16 | разъединение по инициативе вызывающего абонента | | bPtyDisc | 16 | разъединение по инициативе вызываемого абонента | | routeSelectFailure | 1 | ошибка установления соединения, обычно возникает, когда все каналы в исходящем интерфейсе заняты либо от интерфейса принята ошибка | | oNoAnswer | 34 | внутренняя ошибка, возникает, когда таймер ожидания ответа в плече вызывающего абонента истек, а со стороны плеча вызываемого абонента не было ни ответа, ни сообщения отбоя | | terminationDenied | 27 | вызов на вызываемого абонента запрещен, например абонент заблокирован | | notReachable | 3 | вызываемый абонент недоступен, например не зарегистрирован или номер не существует | | bPtyNoAnswer | 18 | вызываемый абонент не отвечает | | bPtyBusyUDUB | 17 | отбой по инициативе вызываемого абонента до ответа | | bPtyBusyNDUB | 17 | вызываемый абонент занят | | ss7Failure | 38 | ошибка на сети ОКС7 | | calledPartyRejected | 21 | вызов к вызываемому абоненту запрещен, например анонимный вызов на абонента с активным сервисом ACB | | tException | 41 | ошибка обслуживания вызова, возникает обычно в случае системных проблем | | routeFailure1 | 2 | ошибка маршрутизации к вызываемому абоненту по причине занятости всех каналов в исходящем транке | | routeFailure2 | 2 | ошибка маршрутизации к вызываемому абоненту по причине занятости всех каналов направления на каком-то транзитном участке сети | | conversationTimeout | 31 | возникает, когда истек таймер, ограничивающий общую продолжительность разговора | | systemFailure | 127 | внутренняя неустранимая ошибка, детальное описание ошибки доступно в системном журнале |
|