The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Организация прямого SIP-соединения компьютеров при помощи GNU SIP Witch
Проект GNU SIP Witch позволяет напрямую связать несколько компьютеров,
предоставив возможность прямой отправки и приёма SIP-звонков через интернет,
без использования внешних SIP-сервисов и шлюзов, а также давая возможность
соединения машин, доступ в сеть которых организован через транслятор адресов
(NAT). Выступая в роли посредника, GNU SIP Witch может быть установлен как на
локальной машине, на которой запускается SIP-клиент, так и на сервере, позволяя
обеспечить работу сразу для нескольких машин в локальной сети. Все операции
обработки и кодирования медиапотоков осуществляются на стороне SIP-клиента, GNU
SIP Witch занимается лишь согласованием SIP-соединений, обеспечивает простейшие
операции проброса канала связи до абонента и маршрутизации вызовов по
URI-идентификаторам абонентов, что делает программу легковесной и не
требовательной к ресурсам.

Рассмотрим процесс установки и настройки GNU SIP Witch в Ubuntu Linux для
организации прямых звонков через интернет, используя такие SIP-клиенты, как
Twinkle Softphone и SIP Communicator.

Установим GNU SIP Witch, который присутствует в стандартном репозитории Ubuntu и Debian:

   sudo apt-get install sipwitch sipwitch-plugin-forward 

автоматически в систему будут установлены библиотеки libexosip2-4, libosip2-4,
libsipwitch0 и libucommon2.

Конфигурация сервера:

Активируем в настройках плагин forward, если планируем задействовать функции
для перенаправления соединений для Asterisk или FreeSwitch. В
/etc/default/sipwitch заменяем

   PLUGINS="none"

на 

   PLUGINS="forward"

или PLUGINS="auto" для загрузки всех доступных плагинов.

Добавляем себя в группу sipwitch:

   sudo usermod -aG sipwitch myname


Настройка регистратора SIP Witch

Основная конфигурация SIP Witch находится в файле /etc/sipwitch.conf, в котором
описны настройки SIP-стека, план нумерации абонентов и маршрутизация.

Наиболее важные настройки в блоке <registry>:

<prefix> - задает дополнительный префикс локальной нумерации абонентов.
Рассмотрим пример присвоения абонентам трехзначных номеров из диапазона
100-699. Блок <range> определяет диапазон доступных номеров. Блок <mapped>
задает максимальное число пользовательских агентов, которые могут быть
зарегистрированы на сервере.

   <prefix>100</prefix>
   <range>600</range>
   <mapped>700</mapped>

Если сервер планируется использовать для осуществления звонков в другие
SIP-сети, например через задействование Asterisk или FreeSwitch, то следует
указать параметр <realm>, который определит уникальный идентификатор сервера.
Для осуществления вызова абонентов Asterisk в качестве realm нужно прописать
значение, указанное в конфигурации sip.conf Asterisk-сервера, например:

   <realm>Asterisk</realm>

иначе, можно указать любой другой идентификатор.

Настройка SIP-стека

Рассмотрим блок <stack> в файле /etc/sipwitch.conf, в котором определяются
такие параметры как сетевой интерфейс и номер порта для привязки. Большинство
настроек можно оставить по умолчанию, обратить внимание стоит на параметры
<mapped> и <localnames>.

В <mapped> задается марсимальное число одновременных телефонных вызовов,
которое sipwitch может обработать. При превышении данного лимита попытки
подключения приведут к выводу сигнала "занято". Для обеспечения возможности
одновременной работы всех абонентов, с учетом того, что в каждом локальном
вызове фигурирует два локальных номера, значение <mapped> можно установить как
половину от величины <mapped> из секции <registry>.

В <localnames> задаются поддерживаемые имена хостов (аналогичные тем, что
указаны в настройке "domain" VoIP-клиента twinkle), по умолчанию принимаются
все имена.

Например:

   <localnames>sip.test.ru, server.local</localnames>

Для ограничения доступа к серверу только абонентов локальной сети, следует указать:

   <restricted>local</restricted>
   <trusted>local</trusted>

Список локальных подсетей можно указать в блоке <access>, например:

   <access>     
      <local>172.16.59.0/24</local>
   </access>

Настройка маршрутизации в SIP Witch

SIP Witch может использоваться для установки на несколько узлов, позволяя
построить большую сеть, каждый сервер в которой обслуживает  абонентов со своей
нумерацией (например, можно соединить территориально разнесенные офисы предприятия).

Указание информации о дополнительных серверах и задание правил перераправления
вызовов производится в секции <routing>.

Например, для перенаправления обращений по номерам с 200 по 299 на другой
SIP-сервер с именем server2.local можно использовать следующее правило:

   <routing>
     <redirect pattern="2xx" server="server2.local"/>
   </routing>

Для перенаправления обращений к номерам "3xx" на удаленный сервер можно использовать правило:

   <redirect pattern="3xx" target="sip:local@myserver.somewhere"/>


Резервирование номеров для заданных пользователей


Для привязки номеров к абонентам и определения их параметров в директории
/etc/sipwitch.d следует создать файл c описанием абонентов. В простейшем виде
создадим /etc/sipwitch.d/test.xml в котором заведем несколько номеров:


   <provision>
      <user id="логин1">
        <secret>пароль</secret>
        <extension>101</extension>
        <display>Отображаемое имя абонента 1</display>
      </user>
      <user id="логин2">
        <digest>хэш пароля</digest>
        <extension>102</extension>
        <display>Отображаемое имя абонента 2</display>
      </user>
    </provision>

В поле id указывается логический идентификатор пользователя, например можно
указать логин или email. В поле secret/digest задается пароль/хэш для доступа.
В поле extension указывается телефонный номер абонента. В поле display
указывается имя которое будет отображаться при звонке. Перенаправление вызова
можно указать через блок <forward>.
Для формирования хэша пароля можно использовать утилиту (-realm  можно не
указывать, тогда будет использован realm текущего сервера):

   sipdigest -realm Реалм_сервера логин пароль

Управление сервисом SIP Witch

Запускаем sipwitch:

   sudo /etc/init.d/sipwitch start

Для управления сервисом нужно использовать команду sipwitch, например:

Вывод списка активных звонков:
   sipwitch calls

Список зарегистрировавшихся клиентов:

   sipwitch registry

Статус работы:

   sipwitch status

Статистика по обслуживаемым звонкам:

   sipwitch stats 

Применение изменений в файлах конфигурации:

   sipwitch reload


Логи

В процессе работы создается три основных лога:


/var/log/sipwitch.log - лог для ошибок и системных событий
/var/log/sipwitch.stats - почасовая статистика звонков
/var/log/sipwitch.calls - полный список всех звонков

Для ротации логов в систему установлен файл /var/logrotate.d/sipwitch
Для формирования почасовой статистики используется скрипт /etc/cron.hourly/sipwitch

Подключение SIP-клиентов

Для осуществления звонков подойдет любой SIP-совместимый клиент, для примера настроим Twinkle:

   sudo apt-get install twinkle

В процессе заполнения профиля, указываем приведенный в секции <user id="xxx">
идентификатор (логин) в поле имени пользователя и имени аутентификации, в поле
домена вводим sip.test.ru или server.local, в поле realm указываем содержимое
поля <realm> (в нашем случае Asterisk). Во вкладке "безопасность" включаем
шифрование ZRTP/SRTP.

Соединяемся и проверяем:

   sipwitch registry

    ext user  type profile    use expires address
    101 test1   user *   0    3580 127.0.0.1:5061
    found 1 entries active of 600
 
15.03.2011 , Источник: http://www.gnutelephony.org/index.p...
Ключи: sip, voip, sipwitch, ubuntu, linux / Лицензия: CC-BY
Раздел:    Корень / Маршрутизаторы Cisco, VoIP / VoIP

Обсуждение [ RSS ]
  • 1.1, Crazy Alex (??), 18:21, 15/03/2011 [ответить]  
  • +/
    Э... Это чтобы астериск не поднимать? Или в чём цимус по сравнению с полноценными PBX?

    Больше того - на кой нужен SIP-сервер на локале вообще?

     
     
  • 2.2, x0r (??), 20:02, 15/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    это в будущем убийца скайпа
     
     
  • 3.5, Crazy Alex (??), 17:10, 16/03/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да видел я эту статью - не убеждает абсолютно. Начиная с того, что ни один из новых проектов GNU не взлетел толком, и заканчивая совершенно безумной реализацией, идущей против современных тенденций "всё в браузере" и использующей SIP, который сам с собой перманентно не совместим и, как правило, требует от пользователя слишком много телодвижений при настройке. В отличие от скайпа, который "просто работает", имеет громадную пользователскую базу, принят как стандарт массой корпораций и отлично проходит через NAT/файрволлы.
    Лучше б они занялись пропихиванием в HTML5 UDP-based реализации обобщенного P2P-протокола, умеющего с NAT бороться, с возможностью гонять по нему медиа-данные. А "убийц скайпа" на этом протоколе им бы написали вагон за полгода.
     

  • 1.3, admin (??), 22:33, 15/03/2011 [ответить]  
  • +/
    вы бы хоть описали, какая практическая польза от продукта. Сценарий использования на практике.
     
     
  • 2.4, littlejon (?), 00:37, 16/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    В  удаленном отделе или малой фирме развернул законектился к SIP провайдеру и будет тебе простая телефония. Хотя ИМХО проще астерискNOW в виртуалке развернуть, там и гуй есть и вкусности разные, IAX2 например. Ресурсов много не надо. Я тут, намедни, астериск поднял на 3 пеньке с 254 метрами мозгов, на пару транков вполне хватает.
     
     
  • 3.6, Crazy Alex (??), 17:15, 16/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > В  удаленном отделе или малой фирме развернул законектился к SIP провайдеру
    > и будет тебе простая телефония. Хотя ИМХО проще астерискNOW в виртуалке
    > развернуть, там и гуй есть и вкусности разные, IAX2 например. Ресурсов
    > много не надо. Я тут, намедни, астериск поднял на 3 пеньке
    > с 254 метрами мозгов, на пару транков вполне хватает.

    Ну, вообще-то на этой железке много больше можно пропустить, если не брать прожорливые кодеки вроде iLBC или speex. У меня 4 потока на GSM беспроблемно на 400-мегагерцовом Geode бегало - и жрало 10, что ли, процентов...

    А насчет AsteriskNOW или еще каких сборок - согласен, они всяко более обкатаны чем упомянутое чудо, и информации по ни много больше. Это если о возможностях вообще не упоминать.

     

  • 1.7, sergey (??), 18:30, 21/03/2011 [ответить]  
  • +/
    Crazy Alex  для вас
      В отличие от скайпа, который "просто работает", имеет громадную пользователскую базу, принят как стандарт массой корпораций и отлично проходит через NAT/файрволлы.
    Очень большое заблуждение, или недопонимание как эти протоколы работают
     
  • 1.9, Евгений (??), 15:24, 13/02/2012 [ответить]  
  • +/
    Все настроил как в статье, запустил twinkee и sipdroid. Они зарегисрировались, однако вызов почему-то не идет. Постоянно пишется busy. Что бы это могло быть?
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру