Как установить и настроить PBX Asterisk на Linux CentOS 7

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: Asterisk, CentOS.

В описанной инструкции рассмотрим пример установки с нуля Asterisk версии с длительной поддержкой на Linux CentOS 7.

Подготовка сервера

1. Устанавливаем необходимые программы

Обновляем пакеты:

yum update

Устанавливаем пакеты:

yum install gcc wget ntpdate automake libtool

gcc нужен для сборки исходников, wget — для загрузки файлов из командной строки; ntpdate — синхронизации времени; automake — участвует в создании Makefile при запуске configure; libtool — обеспечивает процесс сборки и использования динамических библиотек.

2. Настраиваем время

Устанавливаем временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере московское время.

Устанавливаем утилиту для синхронизации времени и запускаем ее:

yum install chrony

systemctl enable chronyd —now

3. Настройка безопасности:

Создаем новый сервис в брандмауэре:

firewall-cmd —permanent —new-service=asterisk

Добавим в сервис нужные порты:

firewall-cmd —permanent —service=asterisk —add-port=5060/tcp

firewall-cmd —permanent —service=asterisk —add-port=5060/udp

firewall-cmd —permanent —service=asterisk —add-port=5061/tcp

firewall-cmd —permanent —service=asterisk —add-port=5061/udp

firewall-cmd —permanent —service=asterisk —add-port=4569/udp

firewall-cmd —permanent —service=asterisk —add-port=5038/tcp

firewall-cmd —permanent —service=asterisk —add-port=10000-20000/udp

* где 5060 — SIP, 5061 — SIP over TLS, 4569IAX, 5038 — AMI (Asterisk Manager Interface), 10000-20000 — диапазон для динамических портов.

Теперь добавляем созданный сервис как разрешенный:

firewall-cmd —permanent —add-service=asterisk

и перезапускаем фаервол:

firewall-cmd —reload

Установка Asterisk

Установка астериска выполняется путем сборки исходников. Сама процедура проходит в 3 этапа:

  1. Установка DAHDI (драйверов плат интерфейсов);
  2. Установка LibPRI (библиотека для работы с потоковыми TDM-интерфейсами);
  3. Собственно, сборка и установка Asterisk.

1. Сборка DAHDI

Загружаем исходник, распаковываем его и переходим в распакованный каталог:

wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

tar -xvf dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*/

Выполняем сборку и установку:

make install

make config

Выходим из каталога с исходником:

2. Сборка LibPRI

Процедура, во многом, похожа на сборку DAHDI. Загружаем исходник, распаковываем его и переходим в распакованный каталог:

wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

tar -xvf libpri-current.tar.gz

cd libpri-*/

Выполняем сборку и установку:

make install

Выходим из каталога с исходником:

3. Установка самого астериска

Для начала, загружаем исходник на сервер. Так как мы планируем установить LTS версию, заходим на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions, раздел «Long Term Support (LTS) Releases» и копируем ссылку на загрузку пакета:

Копируем ссылку на LTS версию Asterisk PBX

* Certified Asterisk — бизнес версия с поддержкой для коммерческих клиентов.

Используя ссылку, скачиваем на сервер программу:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

Распаковываем архив и переходим в него:

tar -xvf asterisk-*.tar.gz

cd asterisk-*

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

./contrib/scripts/install_prereq install

./contrib/scripts/install_prereq install-unpackaged

Чистим образовавшиеся временные файлы:

make distclean

Добавляем библиотеку для работы с mp3:

./contrib/scripts/get_mp3_source.sh

Конфигурируем исходник:

./configure —prefix=/usr —sysconfdir=/etc —localstatedir=/var —libdir=/usr/lib64 —with-dahdi —with-pri —with-iconv —with-libcurl —with-speex —with-mysqlclient

* полный перечень опция и что они означают можно посмотреть командой ./configure -h.

Продолжаем настройку:

make menuselect

Выбираем необходимые компоненты (в данном примере res_config_mysql, app_mysql, cdr_mysql):

Конфигурирование пакета перед сборкой

Запускаем сборку и установку:

make install

Устанавливаем скрипты для автозапуска АТС и готовые конфигурационные файлы:

make config

make samples

Установка завершена!

Базовая настройка и запуск

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

vi /etc/asterisk/asterisk.conf

Снимаем комментарии и редактируем следующие пункты:

runuser = asterisk
rungroup = asterisk
defaultlanguage = ru
documentation_language = ru_RU

Создаем учетную запись:

useradd asterisk -m

Задаем права на следующие каталоги:

chown -R asterisk:asterisk /var/run/asterisk

chown -R asterisk:asterisk /etc/asterisk

chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk

chown -R asterisk:asterisk /usr/lib64/asterisk

chown -R asterisk:asterisk /var/log/asterisk

и проверяем настройки:

asterisk -c

Если программа запустится, мы увидим Asterisk Ready:

Успешный запуск Asterisk

* все ошибки и предупреждения можно проигнорировать, но правильнее их исправить, отключив неиспользуемые модули.

Теперь можно запустить астериск как службу:

systemctl enable asterisk

systemctl start asterisk

Заведение пользователя

Создадим наш первый диалплан (правило обработки звонков):

vi /etc/asterisk/extensions.conf

Допишем в него следующее: 

[outcaling]
exten => _XXX,1,Dial(SIP/${EXTEN},,m)

* в данном примере мы создаем контекст с именем outcaling для трехзначных номеров (XXX) с вызовом по SIP по внутреннему номеру.

Теперь создадим два внутренних номера:

vi /etc/asterisk/sip.conf

[public](!)
type=friend
context=outcaling
host=dynamic
disallow=all
allow=alaw
allow=ulaw
language=ru
qualify=yes
canreinvite=yes
call-limit=4
nat=no
 

[101](public)
regexten=101
secret=1234
callerid=»101″ <101>
callgroup=1
pickupgroup=1
 

[102](public)
regexten=102
secret=5678
callerid=»102″ <102>
callgroup=1
pickupgroup=1

* сначала мы создали шаблон public, в который занесли общие параметры. Шаблон мы применили к создаваемым коротким номерам.
* где:

  • [101], [102] — имена для обозначения номеров.
  • type — типы проверки номеров. Могут быть peeruser или friend. Peer — вызовы сопоставляются с IP-адресами и номерами портов. User — проверка username. Friend — включает возможности peer и user (проверка username и IP-адреса источника) и лучше всего подходит для телефонов и телефонных программ.
  • regexten — добавочный номер. Если не задан, используется имя.
  • secret — пароль для аутентификации.
  • context — контекст или группа правил.
  • host — IP-адрес или имя клиента. Для автоматической регистрации используем dynamic.
  • callerid — идентификатор пользователя при звонке.
  • disallow — запрещает кодеки (задается перед параметром allow).
  • allow — разрешает кодеки. alaw и ulaw — алгоритмы для кодеков g711.
  • language — код используемого языка.
  • callgroup — задает группу устройства (для возможности перехвата).
  • pickupgroup — задает перечень групп, которые можно перехватывать.
  • qualify — включает или отключает периодическую проверку подключенного клиента.
  • canreinvite — включает или отключает прохождение голосового RTP трафика через Asterisk. Устанавливать, только если клиент поддерживает функцию SIP re-invites.
  • call-limit — ограничение количества одновременных вызовов.
  • nat — устанавливается в yes, если клиент находиться за NAT.

Перезапускаем наш сервис:

systemctl restart asterisk

Подключение телефона и проверка

Для проверки сервера устанавливаем софт-телефон на компьютер. Например, а качестве SIP-клиента под Windows можно установить бесплатную программу X-Lite, для Android — Zoiper.

Пример настройки клиента X-Lite:

Пример настройки X-Lite

Настраиваем подключение с логином и паролем 101 / 1234, второй — 102 / 5678. Пробуем позвонить.