Kamailio как NAT + SIP Proxy перенаправлющий запросы клиентов. Или всетаки Asterisk ????
Хочу реализовать следующую схему:
На данный момент MVTS работает с биллингом, и Kamailio SER пока на практике нету в этой схеме.
Тоесть сейчас абоненты указвают в качестве SIP Registar - MVTS Pro. Но в связи с тем что версия MVTS которая у нас есть, не может работать с оконечными абонентами, тоесть являеться Softswitch class IV, хочу добавить функционал Softswitch class V. (в частности не могут регаться абоненты находящиеся за NAT).
Я не хочу изобретать велосипед и завязывать Kamailio через RADIUS с тем же биллингом так как он (биллинг) прекрасно работает с MVTS.
А хочу сделать так что бы sip клиенты указывали ip Kamailio как SIP Registar, а он в свою очередь перенаправлял запросы регестрации на MVTS где и будет происходить авторизация клиента.
Тоесть - Kamailio не будет авторизовать клиентов, а будет работать как НАТ (для тех кому это нужно) и передавать запрос на MVTS который будет авторизовать клиентов.
Asterisk для такой схемы не подходит.
Так как я начал разбираться с Kamailio совсем недавно, возникает вопрос - сможет ли Kamailio (SER) работать в такой схеме?
И посоветуйте какую конфигурацию для Kamailio тут лучше применять.
Заранее спасибо за ответ.
_________________
рву шаблоны. дорого.
Правда не очень понятно что значит "не может работать с клиентами за NAT".
Не умеет угадывать куда клиенту отвечать?
На MVTS нету многих функция Софт Свича класса 5, например нужно реализовать бесплатные звонки между абонентами, IVR, DID номера и много другое.
Поэтому я планирую его оставить в этой схеме, так как они и работал: для коммутации с провайдерами и тарификации абонентов совместно с биллингом.
А вот для всех дополнительных услуг нужно внедрять OpenSource решения ИМХО.
Много работал с Asterisk, но он тут не подходит.
Упал взгляд на Kamailio - достаточно сложный в освоении - читаю "Building Telephony Systems with OpenSIPS 1.6". Поставил Веб Интерфес администратора siremis - кто то польовался ?
Вот и прошу помощи порекомендовать конфиг Kamailio для моих задач, каким модулем лучше перенаправлять SIP запросы на MVTS ?
Конфиг камаилио коментировать - дело не благодарное, оно по сути является скриптом обработки sip сообщений на своём языке.
Дефолтный конфиг для проксирования запросов на регистрацию не подходит, его нада сразу писать под себя.
- Перевод звонков
- Постановка звонка на удержание
- Уведомление о поступлении нового вызова
- Голосовая почта
- Интерактивный голосовой ответ (IVR)
- итд...
это можно реализовать ?
Основная задача которую я хочу решить - это передача запроса RIGISTER на MVTS для авторизации клиента.
Как я писал выше не хочу ломать связку MVTS + Billing. Нужно перед MVTS поставить какой-то Softswitch, если звонки например между абонентами, то они не должны биллинговаться, а если звонок на внешний мир, то он должен пойти через MVTS. В свою очередь MVTS должна распознать верно абонента и что бы выдать ему правильные маршруты ИТД.
Как лучше сделать ?
По поводу "ДВО" - смотря что нужно, по логике нада рядом с mvts ставить asterisk/freeswitch/yate/somethingelse и крутить на нём дополнительные фишки.
В моей схеме нужно сделать как бы двойную регестрацию.
UAC --> Kamailio --> MVTS Pro
Подскажите как лучше это сделать, или как это вообще возможно:
Клиент регаеться на Kamailio и звонки между абонентами происходят внутри Kamailio, но когда клиенту нужно позвонить на внешний мир он должен передать запрос регестрации на MVTS Pro что бы та распознала его как конкретного клиента и применила к нему все правила.
Я вот думаю как можно это сделать:
1. Взять из функции usrloc.so сохраненные данные о клиенте и сформировать новый register который передать на MVTS - так реально ?
2. Делать двойную регестрацию сразу при регестрации на камайлио (только как ?)
прилетел REGISTER от клиента мы делаем save("location"); и еще раз передаем REGISTER на MVTS ?
3. Или как-то делать регестрацию на MVTS но говорить MVTS что клиент находиться на Kamailio.
как в этом примере - http://kb.asipto.com/asterisk:realtime:k ... .7.0-astdb
Заранее спасибо за ответы.
Но звонки между сип пользователями так же пропускать через меру
Есть задачка когда клиент звонит через удаленный шлюз тот требует авторизацию (username, password).
Я вижу выходом из этой ситуации использовать модуль UAC Module htatp://kamailio.org/docs/modules/3.3.x/modules_k/uac.html#id2548056 который умеет эмулировать поведение SIP UAC. Но не совсем получаеться...
В модуле есть несколько возможностей сгенерироваться REGISTER на удаленный шлюз:
- есть таблица uacreg в БД Kamailio, когда в нее внести данные, то после перезагрузки Kamailio она выдаст все регестрации что занесены в таблицу, тоесть было в таблице 200 учеток, они одним мигом при старте будут регаться - это не правильно, не подходит. Потом табица перечитываеться только при рестарте К (Камайлио).
- дальше есть способ регестрации с помощью ф-ии uac_auth() - как показано на примере:
| Код: |
| 6.2. Client authentication Many SIP platforms relay calls to SIP-to-PSTN third party gateways which require SIP authentication. The example show how calls from all local users are forwarded and authenticated against the PSTN gateway. The PSTN terminator provides with one username and password for authentication. The script will look like: Example 9. Restricting access example ... #define the credential modparam("uac","credential","gw_user:gw_realm:gw_passwd") ..... route { ..... # set failure route for authentication t_on_failure("3") # reset flag to mark no authentication yet performed resetflag(7); # forward to PSTN t_relay_to_udp("GW_IP","GW_PORT"); .... } failure_route[3] { # authentication reply received? if ( t_check_status("401|407") ) { # have we already tried to authenticate? if (isflagset(7)) { t_reply("503","Authentication failed"); break; } if (uac_auth()) { # mark that auth was performed setflag(7); # trigger again the failure route t_on_failure("3"); # repeat the request with auth response this time append_branch(); t_relay(); } } } ... |
Как видно в примере выше - при получении ответа 401, 407 попадаем в failure route и теоретически uac_auth() должна добавить требуемые заголовки credentinals которые указаны в uac modparam.
Этот вариант подходит - таким образом авторизации должна произойти только по требованию. Но почему то делаю все как на примере и в документации к модулю, а ни..на не получаеться
Уже доблбаюсь с этой темой почти месяц... буду рад любым советам.
Вопрос к спецам по Камайлио - кто то пользовался данным модулем ?
Заранее благодарен.
- транслировать REGISTER на MVTS, при этом делая save_location (для звонков между абонентами kamailio)
и меняя Contact на вновь сгенерированный и ставя там свой (kamailio) ip. Соотвествие оригинального и сгенерированного Contact хранить в базе
- при входящем INVITE от MVTS восстанавливать оригинальный Contact и отправлять дальше.