Проект [[http://www.gnutelephony.org/index.php/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 600URL: http://www.gnutelephony.org/index.php/Howto_Deploy_SIP_Witch...
Обсуждается: https://www.opennet.ru/tips/info/2547.shtml
Э... Это чтобы астериск не поднимать? Или в чём цимус по сравнению с полноценными PBX?Больше того - на кой нужен SIP-сервер на локале вообще?
это в будущем убийца скайпа
Да видел я эту статью - не убеждает абсолютно. Начиная с того, что ни один из новых проектов GNU не взлетел толком, и заканчивая совершенно безумной реализацией, идущей против современных тенденций "всё в браузере" и использующей SIP, который сам с собой перманентно не совместим и, как правило, требует от пользователя слишком много телодвижений при настройке. В отличие от скайпа, который "просто работает", имеет громадную пользователскую базу, принят как стандарт массой корпораций и отлично проходит через NAT/файрволлы.
Лучше б они занялись пропихиванием в HTML5 UDP-based реализации обобщенного P2P-протокола, умеющего с NAT бороться, с возможностью гонять по нему медиа-данные. А "убийц скайпа" на этом протоколе им бы написали вагон за полгода.
вы бы хоть описали, какая практическая польза от продукта. Сценарий использования на практике.
В удаленном отделе или малой фирме развернул законектился к SIP провайдеру и будет тебе простая телефония. Хотя ИМХО проще астерискNOW в виртуалке развернуть, там и гуй есть и вкусности разные, IAX2 например. Ресурсов много не надо. Я тут, намедни, астериск поднял на 3 пеньке с 254 метрами мозгов, на пару транков вполне хватает.
> В удаленном отделе или малой фирме развернул законектился к SIP провайдеру
> и будет тебе простая телефония. Хотя ИМХО проще астерискNOW в виртуалке
> развернуть, там и гуй есть и вкусности разные, IAX2 например. Ресурсов
> много не надо. Я тут, намедни, астериск поднял на 3 пеньке
> с 254 метрами мозгов, на пару транков вполне хватает.Ну, вообще-то на этой железке много больше можно пропустить, если не брать прожорливые кодеки вроде iLBC или speex. У меня 4 потока на GSM беспроблемно на 400-мегагерцовом Geode бегало - и жрало 10, что ли, процентов...
А насчет AsteriskNOW или еще каких сборок - согласен, они всяко более обкатаны чем упомянутое чудо, и информации по ни много больше. Это если о возможностях вообще не упоминать.
Crazy Alex для вас
В отличие от скайпа, который "просто работает", имеет громадную пользователскую базу, принят как стандарт массой корпораций и отлично проходит через NAT/файрволлы.
Очень большое заблуждение, или недопонимание как эти протоколы работают
Все настроил как в статье, запустил twinkee и sipdroid. Они зарегисрировались, однако вызов почему-то не идет. Постоянно пишется busy. Что бы это могло быть?