Александр Мисюрин
25.02.2019
17984

Установка DAHDI, LibPRI и Asterisk 16 на Centos7

Asterisk – бесплатное решение для организации VoIP телефонии, обладая всеми возможностями АТС, предоставляет более многофункциональное управление звонками.   В данной статье рассмотрена подробная установка Asterisk 16 на CentOs 7.5. Asterisk 16 выпущен с расширенной поддержкой (LTS), обновления будут выпускаться в течении пяти лет, в которых основное внимание уделяется обеспечению оптимизации производительности и стабильности.    Основные улучшения, […]

DAHDI, LibPRI и Asterisk 16

Asterisk – бесплатное решение для организации VoIP телефонии, обладая всеми возможностями АТС, предоставляет более многофункциональное управление звонками. 

 В данной статье рассмотрена подробная установка Asterisk 16 на CentOs 7.5. Asterisk 16 выпущен с расширенной поддержкой (LTS), обновления будут выпускаться в течении пяти лет, в которых основное внимание уделяется обеспечению оптимизации производительности и стабильности.

   Основные улучшения, представленные в Asterisk 16:

  1. Увеличение производительности обработки SIP – вызовов.
  2. Снижена нагрузка на CPU и уменьшено потребление памяти в канальном драйвере PJSIP.
  3. Добавление поддержки обмена текстовыми сообщениями, использование Asterisk как коммуникационную платформу широкого профиля.
  4. Повышена производительность обработки видеопотоков и улучшена адаптация к изменению качества канала связи.
  5. В модуль app_queue появилась возможность настройки времени ожидания завершения вызова в привязке к отдельным участникам (агентам), а не только для каждой очереди. Так же добавлена поддержка обработчика predial, вызываемого перед созданием канала вызываемого или вызывающего абонента.
  6. В модуль app_originate добавлена опция `a`, которая информирует о вызове в асинхронном режиме, т.е. управление сразу возвращается в приложение вместо ожидания ответа.
  7. Модуль app_fax в новой версии объявлен устаревшим, вместо него следует использовать res_fax.
  8. Добавлены новые вызовы AMI (Asterisk Manager Interface) в драйвер PJSIP, которые позволяют инспектировать настройки:
  9. PJSIPShowAors для вывода списка AOR (Address-Of-Record);
  10. PJSIPShowAuths для получаения списка секций с параметрами аутентификации;
  11. PJSIPShowContacts для вывода контактов.

   Вместе с Asterisk выпущен релиз проекта FreePBX 15, в рамках которого совершенствуется интерфейс для управления Asterisk и готовый дистрибутив для удобного развертывания VoIP – системы. Статья по установке FreePBX 15 так же представлена на нашем сайте.

   Перейдем к установке Asterisk 16.

Перед установкой необходимо отключить SELINUX, так же желательно отключить iptables.

Проверка отключения Selinux и iptables

   Далее необходимо установить зависимости и утилиты.

   Для установки некоторых пакетов необходимо подключить дополнительный репозиторий:

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Далее необходимо выполнить yum –y update. Вместе с зависимостями и утилитами необходимо обязательно установить gcc, gcc-c++.ьс

   Необходимые устанавливаемые зависимости и утилиты:

# yum groupinstall core && yum groupinstall base && yum groupinstall web server && yum groupinstall development tools

 # yum -y install gcc gcc-c++ lynx bison mysql-devel e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libselinux-devel libsepol-devel gmp php-gd php-pdo gnutls-devel libogg-devel openssl-devel zlib-devel perl-DateManip mysql-server php php-mysql php-pear php-mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel libtool libtool-ltdl-devel sqlite-devel libuuid-devel sqlite unixODBC unixODBC-devel mysql-connector-odbc texinfo curl-devel net-snmp-devel neon-devel speex-devel gsm-devel iksemel-devel spandsp-devel mc htop doxygen path svn 

 # yum -y install lynx mysql-devel e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libselinux-devel libsepol-devel gmp php-gd php-pdo gnutls-devel libogg-devel openssl-devel zlib-devel perl-DateManip mysql-server php php-mysql php-pear php-mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel kernel-devel php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel libtool-ltdl-devel sqlite-devel libuuid-devel sqlite unixODBC unixODBC-devel mysql-connector-odbc texinfo curl-devel net-snmp-devel neon-devel speex-devel gsm-devel iksemel-devel spandsp-devel mc htop patch perl automake* kernel kernel-headers-`uname -r` kernel-devel-`uname -r` glibc-headers ipset.x86_64 ipset-devel.x86_64 nmap 

Установка параметра тайм зоны:


Таймзона

 Для установки параметром необходимо выполнить команду: tzselect

Параметры таймзоны

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
yum install -y ntp*
ntpdate ru.pool.ntp.org
yum upgrade tzdata
chkconfig ntpd on
service ntpd start
date

 Перезагружаем систему: reboot.

В рамках статьи используется ОС с разрядностью 64 бита, обратите внимание на разрядность своей ОС, этот параметр влияет на скачиваемые зависимости и утилиты. 

   В дальнейшем может пригодиться  Midnight Commander. Midnight Commander – файловый менеджер с текстовым интерфейсом для Unix-подобных операционных систем, а так же Microsoft Windows и Windows NT, OS/2, Mac OS X. Midnight Commander является частью проекта GNU.

   Скачивание Midnight Commander: yum –y install mc.

   Приступаем непосредственно к установке Asterisk. Оно состоит из нескольких этапов. Далее рассмотрена установка с использованием аналоговых или цифровых сетей. Для этого используется модуль DAHDI. Этот модуль канала пришел на смену Zap и наследует весь его основной функционал, также были расширены возможности по работе с программными эхоподавителями, добавлены новые параметры в файл конфигурации. Модуль DAHDI обеспечивает интерфейсный уровень между Asterisk с одной стороны и драйвером интерфейса Dahdi+программные эхоподавители с другой. Драйвера интерфейсов позволяют использовать аппаратные средства для соединения Asterisk с традиционными аналоговыми и цифровыми телефонными сетями.

Asterisk <-> chan_dahdi <-> Драйвера Dahdi <-> Карта <-> Телефон/Коммутатор/Телефонная сеть

   На данный момент драйвер DAHDI поддерживает следующее аппаратное обеспечение:

   Аналоговые карты: 

  • wctdm24xxp (Digium TDM2400P/AEX2400: до 24 аналоговых портов, Digium TDM800P/AEX800: до 8 аналоговых портов, Digium TDM410P/AEX410: до 4 аналоговых портов);
  • wctdm (Digium TDM400P, до 4 аналоговых портов);
  • xpp: (Xorcom Astribank: USB устройство, до 32 портов включая цифровые BRI и E1/T1 модули);
  • wcfxo (X100P, оригинал и его клоны. Простая однопортовая FXO карта).

    Цифровые карты

  •   wct4xxp (Digium TE205P/TE207P/TE210P/TE212P: PCI 2 порта T1/E1/J1, Digium TE405P/TE407P/TE410P/TE412P: PCI 4 порта T1/E1/J1, Digium TE220: PCI-Express 2 порта T1/E1/J1, Digium TE420: PCI-Express 4 порта T1/E1/J1);
  • wcte12xp: (Digium TE120P: PCI один порт T1/E1/J1, Digium TE121: PCI-Express один порт T1/E1/J1, Digium TE122: PCI один порт T1/E1/J1);
  • wcte11xp: (Digium TE110P: PCI один порт T1/E1/J1);
  • wct1xxp: (Digium T100P: PCI один порт T1, Digium E100P: PCI один порт E1);
  • tor2: (Tormenta 4 портовая T1/E1 карта от «Zapata Telephony project»).

    Другие драйвера

  • pciradio (Zapata Telephony PCI Quad Radio Interface);
  • wctc4xxp (Аппаратный транскодер кодеков от Digium (необходим модуль dahdi_transcode);
  • dahdi_dynamic_eth (Драйвер TDM через Ethernet (TDMoE). Ему необходим модуль dahdi_dynamic);
  • dahdi_dynamic_loc (Mirror a local span. необходим модуль dahdi_dynamic);
  • dahdi_dummy  (Устройство, не предоставляющее каналов, используется только как источник DAHDI сигналов таймера).

   Для реализации работы так же необходимо установить LibPRI.

   LibPRI – это библиотека, которая предназначена для работы с потоковым  TDM-интерфейсами ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface).

  Для скачивания переходим в директорию: cd /usr/src/

   Скачиваем последние версии Asterisk, DAHDI и LibPRI, для этого используем утилитуwget.

Утилита wget может быть не установлена, поэтому необходимо ее установить командой yum –y install wget.

 Для данной статьи Asterisk 16 устанавливался на виртуальную машину, соответственно без DAHDI и LibPRI, но ниже представлен список полный:

  1. wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.0+2.10.0.tar.gz
  2. wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
  3. wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

   Далее распаковываем:

tar zxvf dahdi-linux-complete*
tar zxvf libpri*
tar zxvf asterisk*

   После распаковки необходимо установить пакеты.

Важно соблюдать последовательность установки, самое главное вначале установить DAHDI или LibPRI, а только потом, в последнюю очередь Asterisk.

   Установка DAHDI:

cd /usr/src/dahdi-linux-complete*
make && make install && make config

   Запускаем генератор конфигурации DAHDI: /usr/sbin/dahdi_genconf

   Сразу можно включить DAHDI в автозагрузке: chkconfig dahdi on

   Редактируем файл /etc/dahdi/modules
   Там должна быть одна незакомментированная строка с драйвером для Вашей карты, например, wcte12xp. Остальные модули нам не нужны, их надо закомментировать, чтобы не загружались.
   Далее настраиваем /etc/dahdi/system.conf:

   Настройка подключения:
  

  • span num — порядковый номер спана
  • timing source — выбор источника для синхронизации таймера. 0 – мастер, 1 и более – мастером является удаленная сторона. Чем больше число, тем меньше приоритет.
  • line build out (LBO) — выбор в зависимости от расстояния до удаленной стороны.
  • framing – тип телефонной сигнализации. Для E1 выбирается ccs или cas.
  • coding – кодирование в линии. Для E1 выбирается ami или hdb3.
  • yellow – выполняется ли проверка и генерация crc4.

   Теперь можно стартовать DAHDI: service dahdi start
   При установке DAHDI в /usr/sbin записывается несколько утилит:

  • dahdi_test

   Значения ниже 99,9 — плохой результат. Он означает, что DAHDI-устройство вынуждено конкурировать с другими процессами за прерывания и время процессора, что может привести к ухудшению качества звука.

  • dahdi_tool
    Показывает статус карты и ошибки в её работе
  • dahdi_scan
    Показывает сведения о карте
  • dahdi_cfg [options]
    Показывает конфигурацию
  • dahdi_hardware
    Показывает сведения об установленной карте

Затем LibPRI:

·         cd /usr/src/libpri*
  •     make && make install

   А теперь уже Asterisk:

   Первоначально для того, чтобы  установился Asterisk 16 без ошибки компиляции необходимо установить libuuid-devel и jansson-devel.

  • yum -y install libuuid-devel;
  • yum -y install jansson-devel
Выполнение ./config

   Если у нас установлена 64-разрядная версия ОС (это можно узнать набрав команду uname -r), то запускаем установку со следущими параметрами:

  •      ./configure —libdir=/usr/lib64

   В случае с 32-разрядной ОС строка для установки выглядит немного иначе:   

  • ./configure
Так же необходимо выполнить следующий параметр — ./configure —with-jansson-bundled

Установленный Asterisk

После выполненной команды должен появится знак [*] Asterisk.

 Далее необходимо выполнить make menuselect.


Menuselect

   Нам необходим модуль Core Suond Packages, выбираем параметры для русского языка.

   Далее выполняем ряд команд: make && make install

   После установки копируем файлы с примерами конфигураций в директорию с Asterisk: make samples

   Добавляем скрипт запуска Asterisk в /etc/init.d: make config

Для полного запуска системы, сначала необходимо запустить DAHDI, потом Asterisk:

1.      service dahdi start

2.      service asterisk start


Запуск Asterisk

Для перехода в консоль выполним команды asterisk –rvvv

Консоль Asterisk

   Verbose отвечает за отображение информации о протекающих в Аsterisk процессах: вызовах, их обработке, запуске call файлов, и т.п.
   Для включения отображения такой информации есть 2 варианта:

  1. Подключаясь к asterisk CLI, выполните строку с добавлением буквы «v»:
    asterisk -rv
    asterisk -rvv
    asterisk –rvvvvvvvvvvvv

При этом количество букв «v» указывает на уровень отладки verbose: от verbose 1 до verbose 10 (и выше). Можно также подключиться к Аsterisk, отключив отображении такой информации вообще:
asterisk -r

  • Если у Вас уже открыт asterisk CLI, то выполните в командной строке астериска:
    core set verbose 1
    или
    core set verbose 3

    core set verbose 10

Число после verbose отвечает за подробность и количество сообщений. Число может быть и больше 10 (используйте автозаполнение asterisk).

   Для отключения вывода сообщений verbose наберите в Аsterisk CLI:  core set verbose off.

   В данной статье рассматривалась полная установка Asterisk 16 на CentOS 7 с рассмотрением установки DAHDI и LibPRI, что необходимо для сборки АТС с аналоговыми и цифровыми устройствами.

Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Игорь
Игорь
23.02.2022 13:26

Спасибо огромное за статью.

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

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

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


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

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.