Кирилл Золотавин
09.03.2020
1669

Yate как шлюз для H323 устройств и интеграции с Asterisk по SIP

Yate — свободная и бесплатная кроссплатформенная программная VoIP-система, предназначенная для создания телефонных IP-АТС с поддержкой основных протоколов IP-телефонии, такие как SIP, H.323 и IAX. В рамках данной статьи будет рассмотрено как выполнить сборку и настройку Yate в качестве H323 шлюза  между IP АТС Asterisk и Avaya. В статье использовались файлы: yate-SVN.zip — исходники Yate ptlib-2_10_9_3.tar.gz […]

Yate — свободная и бесплатная кроссплатформенная программная VoIP-система, предназначенная для создания телефонных IP-АТС с поддержкой основных протоколов IP-телефонии, такие как SIP, H.323 и IAX.

В рамках данной статьи будет рассмотрено как выполнить сборку и настройку Yate в качестве H323 шлюза  между IP АТС Asterisk и Avaya.

Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 7 + Asterisk 13 + FreePBX 13.

В статье использовались файлы:
yate-SVN.zip —
исходники Yate
ptlib-2_10_9_3.tar.gz —
 библиотека ptlib
h323plus-1_27_1.zip —
библиотека h323plus

Инструкция:

  1. Выполним подключение по SSH к серверу IP АТС Asterisk. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
    1. Установим ряд дополнительных пакетов:
# yum -y install flex gcc-c++ с++ make wget bison libtiff-devel mod_dav_svn subversion autoconf
Установка дополнительных зависимостей
Установка дополнительных зависимостей

3. Установим библиотеку ptlib, библиотека переносимых инструментальных средств, являющаяся библиотекой классов:

# cd /usr/local/src
# wget https://github.com/willamowius/ptlib/archive/v2_10_9_3.tar.gz
# mv v2_10_9_3.tar.gz ptlib-2_10_9_3.tar.gz
# tar -xzvf ptlib-2_10_9_3.tar.gz
# cd ptlib-2_10_9_3
# ./configure
# make
# make install
Скачивание и конфигурирование библиотеки Ptlib
Скачивание и конфигурирование библиотеки Ptlib
Сборка  библиотеки Ptlib
Сборка  библиотеки Ptlib
Установка  библиотеки Ptlib
Установка  библиотеки Ptlib
  • Установим библиотеку h323plus для поддержки Voip протокола H323:
# cd /usr/local/src
# wget https://github.com/willamowius/h323plus/archive/v1_27_1.zip
# mv v1_27_1.zip h323plus-1_27_1.zip
# unzip h323plus-1_27_1.zip
# mv h323plus-1_27_1 h323plus
# cd h323plus
# ./configure 
# make
# make install
Скачивание и распаковка архива с библиотекой H323plus
Скачивание и распаковка архива с библиотекой H323plus
Конфигурирование библиотеки H323plus
Конфигурирование библиотеки H323plus
Сборка  библиотеки H323plus
Сборка  библиотеки H323plus
Установка  библиотеки H323plus
Установка  библиотеки H323plus
  • Приступим к сборке Yate, для этого выполним ряд команд вида:
# cd /usr/src
# svn checkout http://voip.null.ro/svn/yate/trunk yate-SVN
# cd yate-SVN
# ./autogen.sh
# ./configure --with-openh323=/usr/local/src/h323plus
# make
# make install-noapi
Скачивание Yate с репозитория
Скачивание Yate с репозитория
Конфигурирование Yate
Конфигурирование Yate
Сборка Yate
Сборка Yate
Установка Yate
Установка Yate
  • Добавляем в систему дополнительный путь для поиска библиотек YATE
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
Указание расположения дополнительных библиотек для Yate
Указание расположения дополнительных библиотек для Yate
  • Создаем unit systemctl для сервиса YATE
# cp /usr/src/yate-SVN/packing/rpm/yate.service /etc/systemd/system/multi-user.target.wants/
# nano /etc/systemd/system/multi-user.target.wants/yate.service


И приведем команду запуска ExecStart к виду:
ExecStart=/usr/local/bin/yate -d -p /var/run/yate.pid $OPTS

Создание unit systemctl сервиса в CentOS 7
Создание unit systemctl сервиса в CentOS 7
  • Приступим к редактированию конфигурационных файлов. Первым отредактируем конфигурационный файл SIP модуля:
# nano /usr/local/etc/yate/ysipchan.conf

Приведем данный файл к виду:

[general]
port=5070
addr=XXX.XXX.XXX.XXX
useragent=YATE/6.1.1
info=enable
dtmfinband=yes
rfc2833=yes
[sip-t]

[codecs]
default=off
alaw=yes
mulaw=yes
[hacks]
g729_annexb=no

где ключевые параметры для изменения:
port – порт сигнализации, должен быть отличным от порта Asterisk
addr – IP адрес сервера на котором производится установка Yate

Редактирование конфигурационного файла ysipchan.conf
Редактирование конфигурационного файла ysipchan.conf

Отредактируем конфигурационный файл H323 модуля:

# nano /usr/local/etc/yate/h323chan.conf

Приведем данный файл к виду:

[general]
debug=0
vendor=Yate
major=2
minor=0
build=0
status=release
needmedia=yes
dtmfinband=yes
external_rtp=yes
fallback_rtp=yes
forward_rtp=no
[codecs]
default=no
alaw=yes
mulaw=yes
[ep]
ep = true
gw = false
port=1720
faststart=true
h245tunneling=true
dtmfinband = true
silencedetect = none
gkclient = false
gkttl = 180
gkretry = 320

[gk]
server = false
[incoming]
context=default

где ключевые параметры для изменения:
debug – уровень логирования H323
needmedia – сбрасывать или не сбрасывать вызовы с несогласованными(не поддерживаемыми) медиа данными(согласование кодеков)(может принисать значения «yes» или «no»)
dtmfmethods — протокол поддерживаемого тонального сигнала(rfc2833,h323,inband)
external_rtp — использование внешнего модуля RTP вместо встроенного стека RTP H323plus(может принисать значения «yes» или «no»)
fallback_rtp — использование встроенного стека RTP H323plus если внешний модуль недоступен(может принисать значения «yes» или «no»)
forward_rtp — передача голосового трафика напрямую по приниципу «peer to peer»(может принисать значения «yes» или «no»)
ep – включения Endpoint сервера для принятия сигнализации по протоколу H323(может принимать значения «true» или «false»)
port – порт для принятия сигнализации по протоколу H323(по умолчанию 1720)
faststart – режим предварительного согласования медиа данных(может принисать значения «yes» или «no»)
h245tunneling — режим туннелирования H.245, очень важен при использовании NAT(может принимать значения «true» или «false»)
silencedetect – режим определения тишины(может принимать значения: none, fixed, adaptive)
context – контекст обработки входящих/исходящих вызовов(настраиваемый в конфигурационном файле regexroute.conf)

Редактирование конфигурационного файла h323chan.conf
Редактирование конфигурационного файла h323chan.conf

Отредактируем конфигурационный файл голосовых RTP портов:

# nano /usr/local/etc/yate/yrtpchan.conf

Приведем данный файл к виду:

[general]
minport=10000
maxport=20000
[timeouts]

где ключевые параметры для изменения:
minport – начальное значения диапазона RTP портов
maxport — конечное значение  диапазона RTP портов

Редактирование конфигурационного файла yrtpchan.conf
Редактирование конфигурационного файла yrtpchan.conf
Диапазон RTP для Yate должен быть отличным от выделяемого диапазона RTP для Asterisk.

Отредактируем конфигурационный файл интерфейса управления Yate:

# nano /usr/local/etc/yate/rmanager.conf

Приведем данный файл к виду:

[general]
port=5039
Редактирование конфигурационного файла rmanager.conf
Редактирование конфигурационного файла rmanager.conf
Порт интерфейса управления Yate должен быть отличным от AMI порта Asterisk.

Отредактируем конфигурационный файл маршрутизации звонков Yate:

# nano /usr/local/etc/yate/regexroute.conf

Приведем данный файл к виду:

[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
.$=echo called is '${called}' = '${formats}' = '${caller}' = '${sip_to}' = '${callername}' =
${rtp_forward}possible=;rtp_forward=yes
${formats}^\([^,]*\)=;formats=\1;
${module}^sip$=h323/${called}@YYY.YYY.YYY.YYY;caller=${caller};callername=${caller};
${module}^h323$=sip/sip:${called}@XXX.XXX.XXX.XXX:5060;caller=${caller};callername=${caller};
.*=-;error=forbidden;reason=Protocol not allowed

где ключевые параметры для изменения:
XXX.XXX.XXX.XXX – IP адрес сервера Asterisk
YYY.YYY.YYY.YYY – IP адрес IP АТС Avaya

Редактирование конфигурационного файла regexroute.conf
Редактирование конфигурационного файла regexroute.conf

Отредактируем конфигурационный файл подключаемых модулей Yate:

# nano /usr/local/etc/yate/yate.conf

Приведем данный файл к виду:

[general]
[modules]
jabberserver.yate=false
jbfeatures.yate=false
jabberclient.yate=false
yradius.yate=false
mysqldb.yate=false
yjinglechan.yate=false
ciscosm.yate=false
mgcpca.yate=false
mgcpgw.yate=false
ysnmpagent.yate=false
g729.yate=true
[localsym]
h323chan.yate=yes
Редактирование конфигурационного файла yate.conf
Редактирование конфигурационного файла yate.conf
  • Выполним запуск и добавление в автозагрузку Yate:
# systemctl daemon-reload
# systemctl start yate.service
# systemctl enable yate.service
Запуск сервиса Yate
Запуск сервиса Yate
  1. Перейдем к настройке Asterisk, для этого перейдём в WEB панель управления FreePBX через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида: http://IP_адрес_сервера_Asterisk/ В примере ссылка имеет вид: http://192.168.170.163/
Главная страница FreePBX
Главная страница FreePBX
  1. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»
Авторизация во FreePBX
Авторизация во FreePBX
  1. Перейдем в меню Connectivity -> Trunks -> Add Trunk -> Add SIP Trunk и на вкладке «sip Settings» пропишем следующие настройки транка:
deny=0.0.0.0/0.0.0.0
host=XXX.XXX.XXX.XXX
type=peer
port=5070
qualify=yes
nat=no
context=from-internal
insecure=invite,port
permit=XXX.XXX.XXX.XXX/255.255.255.255
canreinvite=no
disallow=all
allow=allow

где ключевые параметры для изменения:
XXX.XXX.XXX.XXX – IP адрес сервера на который производилась установка Yate

Добавление SIP транка
Добавление SIP транка
Добавление SIP транка
Добавление SIP транка
  1. Перейдем в меню Connectivity -> Outbound Routes -> Add Outbound Route и добавим маршрут для исходящих звонков на внутренние номера Avaya через созданный SIP транк
Переход в меню добавления исходящего маршрута
Переход в меню добавления исходящего маршрута
Указание имени маршрута и выбор созданного SIP транка
Указание имени маршрута и выбор созданного SIP транка
Указание патерна вызываемых внутренних номеров и применение настроек
Указание патерна вызываемых внутренних номеров и применение настроек

14. На данном шаге все необходимые настройки выполнены и можно приступить к проверки прохождения звонков между Asterisk и IP АТС Avaya

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.