Yate — SIP-телефония дома или в офисе за 5 минут!

Все вокруг обсуждают Asterisk и его форки, для крупных компаний предлагают использовать Cisco или Avaya, но почему-то практически нигде нет информации о Yate — простом и удобном, но, в то же время, очень функциональном решении для IP-телефонии.

В этой статье я хотел бы кратко рассказать о сборке Yate под Linux, а также его первоначальной настройке для работы с SIP.

Yate написан на C++, позволяет использовать модули и расширения, может быть установлен практически на любую операционную систему, поддерживает SIP, H.323, IAX и Jingle.

Yate Logo

Часть 1. Сборка.


Т.к. на домашнем компьютере стоит Ubuntu, то далее инструкция вся будет адаптирована исключительно под данную ОС, но, в целом, для других систем она сильно отличаться не будет.

В репозиториях доступна лишь первая версия Yate, хотя официально уже существует 2.1, которая вышла в ноябре. Так что загружаем исходники и приступаем к действиям.

Для начала следует установить все необходимые для сборки пакеты (в данном случае для сборки кодеков):
apt-get install libspeex-dev libgsm1-dev libopencore-amrnb-dev

После успешной установки можно приступать к сборке Yate:
./configure; make; make install

Все! Сборка завершена и мы можем приступать к настройке сервера.

Часть 2. Настройка.


Настраивая Asterisk, мне был не совсем понятен его синтаксис. В Yate все оказалось намного проще: файлы конфигурации имеют структуру INI-файлов, все четко разделено по секциям, к каждой опции идет комментарий. По умолчанию префикс для установки — /usr/local, поэтому переходим в папку /usr/local/etc/yate, в которой нам будут нужны следующие файлы:
  • regfile.conf
  • accfile.conf
  • regexroute.conf

Далее по очереди:

Часть 2.1. Настройка regfile.conf.

Файл regfile.conf содержит информацию о пользователях, которым разрешено подключение. Состоит он из секции [general], в которой указаны общие настройки, а также из секций с именем пользователя. Для того, чтобы добавить нового пользователя, нам лишь нужно добавить следующие строки:

[username]
password=secret


Таким образом, если я хочу подключаться как пользователь с именем 100 и паролем secret, то файл должен иметь следующее содержание (комментарии здесь и далее опущены):

[general]

[100]
password=secret


Часть 2.2. Настройка accfile.conf.

В моем случае необходимо было настроить возможность исходящих вызовов через несколько провайдеров. Файл accfile.conf позволит настроить подключения к другим серверам. Добавляем необходимых нам провайдеров и получаем:

[sip1]
enabled=yes
protocol=sip
username=user1
password=secret1
registrar=sip1.server.net

[sip2]
enabled=yes
protocol=sip
username=user2
password=secret2
registrar=sip2.server.net


Часть 2.3. Настройка regexroute.conf.

Несмотря на то, что сервер уже вполне может работать, нам все-таки необходимо прописать маршруты для исходящих вызовов, а также (при необходимости) для входящих. Для тех, кто уже работал с регулярными выражениями, это будет достаточно просто. Структура regexroute.conf позволяет нам определить через какого провайдера следует осуществлять звонки, а также куда следует направлять входящие вызовы. Здесь мне требовалось следующее: если номер начинается с 00, то следует направить звонки через первого провайдера, если 01 — через второго. Входящие звонки все следует направить на номер 100. В итоге получилось следующее:

[priorities]

[$once]

[$init]

[extra]

[contexts]

[default]
; опции для проверки работоспособности
^99991001$=tone/dial
^99991002$=tone/busy
^99991003$=tone/ring
^99991004$=tone/specdial
^99991005$=tone/congestion
^99991006$=tone/outoforder
^99991007$=tone/milliwatt
^99991008$=tone/info

; набираем 00<номер телефона>, выходим через первого провайдера
^00\(.*\)$=sip/sip:\1;line=sip1
; набираем 01<номер телефона>, выходим через второго провайдера
^01\(.*\)$=sip/sip:\1;line=sip2
; получен вызов от первого провайдера, направляем вызов на внутренний номер
^sip1$=route/100
^sip2$=route/100


Часть 3. Запуск сервера.


Запуск сервера осуществляется простым вводом:
yate -d

Если нам хочется посмотреть весь debug-вывод, то можно просто запустить:
yate -vvvvvvvvvv

Все! Теперь можно регистрироваться как SIP-клиент и звонить :)

Часть 4. Итоги. Плюсы и минусы.


Таким образом, люди даже малознакомые с телефонией могут настроить собственный сервер. Жаль, лишь документации по серверу слишком мало.

Плюсы

  • простая настройка
  • низкое потребление ресурсов (при 4 клиентах использует лишь 5 мбайт RAM)
  • способность обслуживать большое количество клиентов (по заверениям авторов, до 10000)
  • функциональность

Минусы

  • мало документации
  • отсутствие поддержки SIP через TCP/TLS
  • малофункциональный telnet-интерфейс


Несмотря на все минусы, авторов можно почти всегда найти на их канале в IRC. Также есть mailing list, в котором вы можете задать все интересующие вопросы. Плюс все-таки документация, пусть и неполная, но на сайте присутствует.

PS> моя первая статья, если есть замечания/предложения — с радостью выслушаю их
PPS> также если есть вопросы по Yate, постараюсь помочь чем смогу :)

Who's online

There are currently 1 user and 1 guest online.