Для настройки NAS мы должны вначале добавить тип устройства и устройство данного типа(ссылки!).
В типе устройства могут быть указан Обработчик процессора протокола(сылка).
В первую очередь надо указать код вендора
#по умолчанию cisco так как большинcтво параметров оттуда. vendor.code=9
Это параметр по умолчанию(если не указан) имеет значение 9(Cisco).
Еще нужно указать ряд параметров, которые используются из radus-протокола. Все они имеют вид
radius.attr.X.vendor= radius.attr.X.code=
Где в первой строке указывают vendor, во второй code утрибута, X - это имя атрибута. Вот какие атрибуты используются по умолчанию:
########H323-credit-time######################## #по умолчанию берется значение из vendor.code= radius.attr.credit.time.vendor= #по умолчанию используется H323-credit-time из вендора Cisco radius.attr.credit.time.code=102 ########H323-return-code######################## #по умолчанию берется значение из vendor.code= radius.attr.error.vendor= #по умолчанию используется H323-return-code из вендора Cisco radius.attr.error.code=103 ######## H323-credit-amount######################## #по умолчанию берется значение из vendor.code= radius.attr.credit.amount.vendor= #по умолчанию используется H323-credit-amount из вендора Cisco radius.attr.credit.amount.code=101 ######## Acct-Session-Id ######################## #по умолчанию берется значение -1(это стандартные атрибуты) radius.attr.identifier.vendor=-1 #по умолчанию используется стандартный атрибут Acct-Session-Id radius.attr.identifier.code=44 ######## Calling-Station-Id ######################## #по умолчанию берется значение -1(это стандартные атрибуты) radius.attr.calling.station.id.vendor=-1 #по умолчанию используется стандартный атрибут Calling-Station-Id radius.attr.calling.station.id.code=31 ######## Called-Station-Id######################## #по умолчанию берется значение -1(это стандартные атрибуты) radius.attr.called.station.id.vendor=-1 #по умолчанию используется стандартный атрибут Called-Station-Id radius.attr.called.station.id.code=30 ######## H323_call_type######################## #по умолчанию берется значение из vendor.code= radius.attr.call.type.vendor= #по умолчанию используется H323_call_type из вендора Cisco radius.attr.call.type.code=27 ######## H323-call-origin######################## #по умолчанию берется значение из vendor.code= radius.attr.call.origin.vendor= #по умолчанию используется H323_call_origin из вендора Cisco radius.attr.call.origin.code=26 ######## Параметр время соединения( опционально можно не указывать) ######################## #по умолчанию берется значение из vendor.code= radius.attr.connect.time.vendor= #нет значения по умолчанию( тогда это параметр не используется в логике). radius.attr.connect.time.code=
Как видно большинство атрибутов берется по умолчанию для cisco. И несколько стандартных атрибутов.
Вот пример рабочей конфигурации для FreeSwitch(в не стандартном варианте):
#подменяем -1 на код вендора Cisco radius.attr.identifier.vendor=9 #H323_conf_id в качестве идентификатора radius.attr.identifier.code=24
Как видно что в данном случае в качестве идентификатора вместо Acct-Session-Id использовали Cisco-ский атрибут H323_conf-id. Остальное все по умолчанию.
И указываем что устройство является NAS-ом.
Далее заводим устройство данного типа :
Тут указываем или ip в поле Хост/порт. Или идентификатор ( поля в radius). По нему происходит поиск nas.
Режимы поиска аккаунта
Вначале в конфигурации модуля мы задаем возможные режим поиска аккаунта в модуле.
radius.search.mode.pattern.<уникальный код>.rule=<Название атрибута>=<PHONE|LOGIN>
Где PHONE это номер телефона из аккаунта, а LOGIN - логин.
Например
radius.search.mode.pattern.1.rule=Calling-Station-id=PHONE radius.search.mode.pattern.2.rule=Called-Station-id=PHONE radius.search.mode.pattern.3.rule=User-Name=PHONE radius.search.mode.pattern.4.rule=User-Name=LOGIN
Потом мы задаем уже в конфигурации устройства(или типа устройства) как эти режимы будут применяться на устройстве :
#режим поиска при авторизации radius.auth.search.mode.order=exp[,exp] #режим поиска при аккаунтинге radius.acc.search.mode.order=exp[,exp]
Где exp имеет вид
code[:type]
code - это код режима,поиск из конфигурации , описанный выше. type - тип звонка ( 1 - исходящий, 2 - входящий). Тип звонка не обязателен( тогда он определяется другим образом).
Например:
radius.auth.search.mode.order=3 radius.acc.search.mode.order=1:1,2:2,3:1
Так же еще есть настройка, указывается в типе устройства
radius.search.mode.device.deep=1
Она означает что надо искать аккаунт не только на устройстве NAS, но и сразу его потомков.
Определение типа звонка
Для определения типа звонка(входящий или исходящий) есть вот такие настройки :
#входящие при авторизации radius.auth.in=voip/originate #исходящие при авторизации radius.auth.out=voip/answer #входящие при accounting-е radius.acct.in=voip/originate #исходящие при accounting-е radius.acct.out=voip/answer
Для определения типа используются атрибуты h323-call-type и h323-call-origin(эти параметры можно поменять на другие в настройке, описанной выше) из RADIUS-запроса. Значения этих атрибутов, соответствующие каждому типу звонка, необходимо указать через дробь и в нижнем регистре (даже если в запросе указан верхний регистр). В этом случае авторизационные запросы с атрибутами h323-call-type=Voip h323-call-origin=originate будут считаться исходящими, h323-call-type=Voip h323-call-origin=answer входящими. Еще есть специальное значение all . Например вот так можно указать что все вызовы идут как исходящие
radius.auth.out=all/all radius.acct.out=all/all
Так же любой из атрибутов может быть пустым. Например
radius.auth.in=/incoming
Так же тип звонка можно определить в обработчике протокола(ссылка!!!).
Все эти 3 способа способа определения типа звонка направления комбинируются между собой(!!!). Следующим образом:
Для access:
- Определяем типа звонка на основе опций описанных выше( radius.auth.in, radius.auth.out, radius.acct.in, radius.acct.out).
- Если есть скрипт обработки процессора протокола, то он может установить тип звонка.
- При поиске account-а если мы указали направление в опции, то они используется.
Тут есть небольшое отличие как работает обработка access и accounting. Для access мы просто находим первый режим, для которого прошла авторизация. Для accounting при нахождении нескольких режимов, для каждого из них создается отдельная сессия.
Это сделано для того, когда в случае звонка абонент-абонент, создать исходящую сессию на одном абоненте и исходящую на другом.
В конфигурации устройства указываем
radius.auth.in=/incoming radius.auth.out=/outgoing radius.acc.out=all/all radius.auth.search.mode.order=3 radius.acc.search.mode.order=1:1,2:2,3:1 radius.search.mode.device.deep=1 radius.messageAuthenticator.validate=0