AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Kamailio как NAT + SIP Proxy перенаправлющий запросы клиентов. Или всетаки Asterisk ????

OpenSER 13 сообщений -
#1

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 тут лучше применять.

Заранее спасибо за ответ.
#2

дык для MVTS все равно NAT будет. нее ?
_________________
рву шаблоны. дорого.
#3

По идее камаилио - то что нужно для этого, он сможет и медиа потоки спроксировать с iprtpproxy.
Правда не очень понятно что значит "не может работать с клиентами за NAT".
Не умеет угадывать куда клиенту отвечать?
#4

Данная версия MVTS не корректно работает с NAT, почему так происходит я пока не разобрался так как недавно в проэкте. Но аргуметируют тем что это транзитный Софт Свич и он не предназначен для работы с оконечными абонентами являясь Softswitch class IV, а для таких целей поддержка ALOE Systems (производители, разработчики MVTS) предлагает купить их продукт за "много денег" который все умеет и являеться полоценным Softswitch class V.
На MVTS нету многих функция Софт Свича класса 5, например нужно реализовать бесплатные звонки между абонентами, IVR, DID номера и много другое.
Поэтому я планирую его оставить в этой схеме, так как они и работал: для коммутации с провайдерами и тарификации абонентов совместно с биллингом.

А вот для всех дополнительных услуг нужно внедрять OpenSource решения ИМХО.
Много работал с Asterisk, но он тут не подходит.

Упал взгляд на Kamailio - достаточно сложный в освоении - читаю "Building Telephony Systems with OpenSIPS 1.6". Поставил Веб Интерфес администратора siremis - кто то польовался ?
Вот и прошу помощи порекомендовать конфиг Kamailio для моих задач, каким модулем лучше перенаправлять SIP запросы на MVTS ?
#5

siremis не использовал, ничего сказать не могу.
Конфиг камаилио коментировать - дело не благодарное, оно по сути является скриптом обработки sip сообщений на своём языке.
Дефолтный конфиг для проксирования запросов на регистрацию не подходит, его нада сразу писать под себя.
#6

А как у Kamailio, SER обстоят дела с ДВО:
- Перевод звонков
- Постановка звонка на удержание
- Уведомление о поступлении нового вызова
- Голосовая почта
- Интерактивный голосовой ответ (IVR)
- итд...

это можно реализовать ?
#7

Kamailo может практически что угодно сделать с sip сигналкой, но вообще не имеет представления о медиа.
#8

В таком случаее мне только Kamailio не обойтись... Нужны функции ДВО.
Основная задача которую я хочу решить - это передача запроса RIGISTER на MVTS для авторизации клиента.

Как я писал выше не хочу ломать связку MVTS + Billing. Нужно перед MVTS поставить какой-то Softswitch, если звонки например между абонентами, то они не должны биллинговаться, а если звонок на внешний мир, то он должен пойти через MVTS. В свою очередь MVTS должна распознать верно абонента и что бы выдать ему правильные маршруты ИТД.

Как лучше сделать ?
#9

Если звонок между клиентами - он должен быть пробилингован по бесплатному тарифу. Но должен быть учтён в принципи.
По поводу "ДВО" - смотря что нужно, по логике нада рядом с mvts ставить asterisk/freeswitch/yate/somethingelse и крутить на нём дополнительные фишки.
#10

Потихоньку разбираюсь с Kamailio...
В моей схеме нужно сделать как бы двойную регестрацию.
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


Заранее спасибо за ответы.
#11

Последний вариант.
Но звонки между сип пользователями так же пропускать через меру
#12

Приветсвую!

Есть задачка когда клиент звонит через удаленный шлюз тот требует авторизацию (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.
Этот вариант подходит - таким образом авторизации должна произойти только по требованию. Но почему то делаю все как на примере и в документации к модулю, а ни..на не получаеться Sad
Уже доблбаюсь с этой темой почти месяц... буду рад любым советам.


Вопрос к спецам по Камайлио - кто то пользовался данным модулем ?



Заранее благодарен.
#13

Если еще актуально - можно попробовать скомбинировать и сделать примерно следующее:
- транслировать REGISTER на MVTS, при этом делая save_location (для звонков между абонентами kamailio)
и меняя Contact на вновь сгенерированный и ставя там свой (kamailio) ip. Соотвествие оригинального и сгенерированного Contact хранить в базе
- при входящем INVITE от MVTS восстанавливать оригинальный Contact и отправлять дальше.