Список форумов Asterisk Forum Asterisk Forum
The Asterisk Open Source PBX - Russian Community
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ПравилаПравила   ГруппыГруппы   ИзбранноеИзбранное    LinksСсылки   РегистрацияРегистрация 
 RSSRSS   ПрофильПрофиль   Войти и проверить личные сообщения   ВходВход 

Помогите понять технологию скрещивания asterisk+openser(kamailio)

 
Список форумов Asterisk Forum -> OpenSER    вывод темы на печать
Предыдущая тема :: Следующая тема  
Автор Сообщение
vrurg



Зарегистрирован:
26.01.2009
Сообщения: 37

Статус: Оффлайн 

СообщениеДобавлено: Вт Апр 07, 2009 18:59    Заголовок сообщения: Помогите понять технологию скрещивания asterisk+openser(kamailio)

У меня уже просто рвет крышу, рытье по докам и сети помогает мало. Прошу помощи здесь.

Исходные данные такие:

Есть готовая работающая система на CallManager 4.1, к которой хочу добавить SIP-клиентов на kamailio/asterisk. Есть выход на PSTN через Cisco 5300. В рамках системы клиенты разграничены по правам, т.е. не все всем могут звонить.

Клиентов за NAT'ом не будет, все подключаются по VPN.

Планирю следующее:

kamailio принимает регистрации и работает load balancer'ом. Звонки должны проключаться, с учетом прав, заложенных в CallManager (тут я прекрасно понимаю, как это должно быть, так что фокусироваться на этом сильно не надо), на все возможные направления. Т.е. как внутри SIP-сети, так и на CallManager, и в PSTN. Кроме того, asterisk должен заведовать транскодингом, конференциями и, возможно, в будущем - голосовой почтой.

Разводка звонков на asterisk без балансировки уже обкатана и тут проблем как-бы нет. Транки с CallManager, с 5300, скрипт, который вытаскивает необходимые сведения с CallManager и либо разрешает проключать звонок на клиента, либо нет - работает.

А вот с балансировкой уже не могу понять, как это все увязать в единое целое. kamailio худо-бедно подкрутил в первом приближении, регистрации он принимает. И, если не отдавать звонки на asterisk, клиентов между собой соединяет. Но при отдаче звонка на asterisk (при этом хочу оставить kamailio на пути звонка, т.е. record_route()+t_relay()) я даже не вижу со стороны последнего попыток обработки; дело, похоже, даже до dialplan'а не доходит.

С техническими деталями как-нибудь разберусь. Прошу просветить по общему дизайну конкретными советами или подходящими ссылками. В частности, должен ли asterisk каким-то образом учитывать регистрацию от kamailio, или клиенты должны на нем регистрироваться? Если второе - то каким образом asterisk узнает, на какой IP отправлять INVITE?

В общем, даже толком не могу разобраться, какие вопросы задавать... Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZloMurz



Зарегистрирован:
31.01.2008
Сообщения: 303

Статус: Оффлайн 

СообщениеДобавлено: Ср Апр 08, 2009 02:38    Заголовок сообщения:

Читал это?

http://asteriskforum.ru/viewtopic.php?t=2237
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vrurg



Зарегистрирован:
26.01.2009
Сообщения: 37

Статус: Оффлайн 

СообщениеДобавлено: Ср Апр 08, 2009 07:19    Заголовок сообщения:

Конечно читал. Но именно о связке с *, тем более в условиях балансировки, там не сказать, чтобы очень уж много.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZloMurz



Зарегистрирован:
31.01.2008
Сообщения: 303

Статус: Оффлайн 

СообщениеДобавлено: Ср Апр 08, 2009 11:24    Заголовок сообщения:

А эту тему?http://asteriskforum.ru/viewtopic.php?t=2741
есть вообще-то сайт проекта, с очень подробной документацией, или с английским проблемы?
Есть онлайн переводчик http://translate.google.com/
Вот в частности есть ссылка: http://kamailio.org/dokuwiki/doku.php/as ... ing-and-ha
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vrurg



Зарегистрирован:
26.01.2009
Сообщения: 37

Статус: Оффлайн 

СообщениеДобавлено: Ср Апр 08, 2009 11:30    Заголовок сообщения:

Шуршал и по теме (конфиг слил - по мере возможнстей сверяюсь). kamailio тоже изучен подробно. Проблема в том, что везде - технические детали, подробности. Негде получить общую картину, в т.ч. - со стороны *.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZloMurz



Зарегистрирован:
31.01.2008
Сообщения: 303

Статус: Оффлайн 

СообщениеДобавлено: Ср Апр 08, 2009 12:17    Заголовок сообщения:

Цитата:
Негде получить общую картину, в т.ч. - со стороны *.

Не могу я этого понять. Значит SIP протокол темный лес для тебя. Читай книжки. Рано или поздно придет просветление.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vrurg



Зарегистрирован:
26.01.2009
Сообщения: 37

Статус: Оффлайн 

СообщениеДобавлено: Чт Май 07, 2009 17:51    Заголовок сообщения:

ZloMurz писал(а):
Рано или поздно придет просветление.


Не скажу, чтобы оно пришло, но полегче стало. Все-равно борьба больше напоминает поход слепого по минному полю... Wink

А вообще, не хочется заводить новую тему по этому вопросу - подниму пока эту. Какой модуль может при входящем звонке проверить регистрацию звонящего? Хочется, при необходимости (вдруг накладки какие случились, как с часовым поясом в соседней моей теме) провести принудительную авторизацию.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZloMurz



Зарегистрирован:
31.01.2008
Сообщения: 303

Статус: Оффлайн 

СообщениеДобавлено: Пт Май 08, 2009 04:33    Заголовок сообщения:

Надо проверять при звонке зареган ли пир?
Тогда так
Код:

if (method=="INVITE") {

      if (!proxy_authorize("","subscriber")) {
       # Если получено сообщение INVITE, то мы должны отправить клиенту информацию,
       # необходимую для дайджест авторизации. Если отправитель сообщения не может
       # представить правильные данные дайджест авторизации, тогда сервер SER
       # ответит сообщением с кодом ошибки 403.
       #
       # Обратите внимание: Этот пример требует того, чтобы вызывающий и вызываемый клиент
       # были зарегистрированы на SIP маршрутизаторе. В будущих примерах мы подробнее
       # остановимся на этом моменте, и покажем, как добавить "проверенные" SIP устройства,
       # такие, как шлюзы в публичную телефонную сеть

        proxy_challenge("","0");
        return;
      } else if (!check_from()) {
        sl_send_reply("403", "Use From=ID");
        return;
      };

      consume_credentials();


взято http://www.voip.rus.net/tiki-index.php?page=SER+and+NAT
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vrurg



Зарегистрирован:
26.01.2009
Сообщения: 37

Статус: Оффлайн 

СообщениеДобавлено: Пт Май 08, 2009 09:30    Заголовок сообщения:

Это очевидный путь. В моем случае накладываются два момента. Первый я проверил почти случайно из-за разных часовых поясов на двух серверах. Клиент не зарегистрирован, прокси-авторизацию проходит - но в location-то он после этого не появляется. А по save("location") при каждом звонке в базу ложится новая запись о регистрации, что не есть хорошо.

Второй момент - asterisk, который тоже отправляет 407-й код - и тогда заваривается жуткая каша с обработкой нескольких последовательных INVITE.

Пока поглядываю в сторону reg_fetch_contacts из registrar. Вроде бы с ней можно сделать проверку на наличие регистрации и при необходимости завернуть на ветку www_auth/www_challenge.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
tma



Зарегистрирован:
11.07.2005
Сообщения: 361

Статус: Оффлайн 

СообщениеДобавлено: Пт Май 08, 2009 11:23    Заголовок сообщения:

ZloMurz писал(а):
Надо проверять при звонке зареган ли пир?
Тогда так

Этот вариант не подходит! У меня часть звонков отбивалась!
Дело все в том, что INVITE приходит не один раз, а всякие re-INVITE сюда также попадают, вот на них иногда аудентификация и не проходит, а как результат -- разрыв соединения, причем со стороны телефона А. Телефон Б слушает тишину...

Added after 3 minutes:

Кстати, немного не в тему, но буду премного благодарен за способ авторизации звонка (не аудентификации UA, а именно авторизации самого вызова по номеру телефона).
Вариант -- делать это дальше, вместе с аккаунтингом, но только чем? У меня Quintum CallRelay ведет аккаунтинг, но вот авторизацию не смог прикрутить, что-то с radius'ом для этого не подружить.

_________________
Maksim Timofejev
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZloMurz



Зарегистрирован:
31.01.2008
Сообщения: 303

Статус: Оффлайн 

СообщениеДобавлено: Пт Фев 05, 2010 16:55    Заголовок сообщения:

2 tma, не нашел какого-либо способа для авторизации вызова? Тоже проблема встала осуществления подобного.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
indeec



Зарегистрирован:
17.05.2009
Сообщения: 87
Откуда: Киев

Статус: Оффлайн 

СообщениеДобавлено: Пт Фев 05, 2010 17:09    Заголовок сообщения:

Код:
if (method=="INVITE") {
                        if (!proxy_authorize("domain","subscriber")) {
                                proxy_challenge("domain","0");
                                exit;
                        };
                        consume_credentials();
                };


Использую вот такую конструкцию у себя, всё работает.
Не совсем понял чем плох вариант с proxy_authorize?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
tma



Зарегистрирован:
11.07.2005
Сообщения: 361

Статус: Оффлайн 

СообщениеДобавлено: Пт Фев 05, 2010 18:25    Заголовок сообщения:

ZloMurz писал(а):
не нашел какого-либо способа для авторизации вызова?

Здесь на формуе буквально недавно писали как.
Для меня это сейчас не актуально, но вскоре вновь понадобится -- вот тогда и буду разбираться.

_________________
Maksim Timofejev
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Список форумов Asterisk Forum -> OpenSER Ответить на тему
Страница 1 из 1

Добавить в Избранное

 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
You cannot attach files in this forum
You cannot download files in this forum