Установка и базовая настройка сервера Asterisk на Ubuntu

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

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

Инструкция позволит быстро познакомиться с сервером Asterisk, выполнив базовые действия по установке и настройке сервера. Нижеописанные действия протестированы на Ubuntu 16.04 и Asterisk 15.

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

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

apt-get update

Синхронизируем время:

ntpdate ru.pool.ntp.org

Установка

Установку можно выполнить с помощью команды apt install asterisk. Но в данной инструкции мы разберем установку путем сборки из исходников. 

Рекомендуется установить Asterisk с DAHDI (драйверы плат интерфейсов телефонии) и LibPRI (библиотека для работы с потоковыми TDM-интерфейсами). Сначала необходимо собрать DAHDI, затем LibPRI и только потом — Asterisk.

Устанавливаем пакеты, необходимые для корректной сборки DAHDI и LibPRI:

apt install make gcc

Сборка 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

make install

make config

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

cd ..

Сборка LibPRI

Загружаем исходник:

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

Распаковываем:

tar -xvf libpri-current.tar.gz

cd libpri-*

Собираем и устанавливаем:

make

make install

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

cd ..

Установка Asterisk

Переходим по ссылке https://downloads.asterisk.org/pub/telephony/asterisk и копируем ссылку на последнюю версию asterisk. Используя ссылку, скачиваем исходник:

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

* в моем случае, последняя версия была 15.

Распаковываем архив и переходим в папку, появившуюся после распаковки:

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-dahdi — с драйверами DAHDI.
  • --with-pri — с библиотекой PRI.
  • --with-iconv — с возможностью конвертации кодировок (будет не лишним для поддержки русских символов).
  • --with-libcurl — возможность извлекать данные посредством CURL-запросов (по http).
  • --with-speex — дополнительный VBR-кодек (используется на многих софт-фонах).

** список всех доступных опций можно посмотреть командой ./configure -h.

Мы должны увидеть логотип астериска:


               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
        .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.
 

Вызываем оконное меню настройки модулей:

make menuselect

Для большинства случаев, настройки можно оставить по умолчанию. В противном случае рекомендуется изучить опции и выбрать необходимые. После нажимаем Save & Exit.

Затем собираем исходник:

make

И выполняем установку:

make install

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

make samples

make progdocs

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

make config

Устанавливаем скрипты для отсекания логов:

make install-logrotate

Создаем конфигурационный файл для указания дополнительного пути с библиотеками:

vi /etc/ld.so.conf.d/asterisk.conf

Добавляем в него одну строчку:

/usr/lib64

* это путь до каталога с библиотеками, с которым мы собирали asterisk (опция --libdir).

Применяем настройку:

ldconfig

Настройка и запуск

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

vi /etc/asterisk/asterisk.conf

И редактируем следующее:

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

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

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

Исправляем ошибки и предупреждения. В моем случае были следующие.

Ошибки запуска

No configured users for ARI. ARI предоставляет API для Asterisk REST Interface. В данном примере, отключаем поддержку:

vi /etc/asterisk/ari.conf

enabled = no

Name or service not known. Если появится такая ошибка, система не может разрешить имя компьютера в IP-адрес. Необходимо правильно настроить DNS или прописать имя компьютера в файл /etc/hosts.

No directory URL or host found. Модуль для работы lpad неправильно настроен или не настроен.
PostgreSQL RealTime: Failed to connect database asterisk on 127.0.0.1. Модуль для работы с СУБД PostgreSQL.
Failed to open /dev/dahdi/transcode: No such file or directory. Ошибку можно увидеть, если нет оборудования DAHDI.

Вышеописанные ошибки возникают из-за включенных, но не используемых модулей. Отключаем:

vi /etc/asterisk/modules.conf

noload => res_config_ldap.so
noload => res_config_pgsql.so
noload => codec_dahdi.so

Предупреждения при запуске

  • Unable to find a valid server address or name.
  • Process_dahdi: Ignoring any changes to ...
  • CEL pgsql config file missing global section.
  • Cel_tds module had config problems; declining load.

Отключаем следующие модули: 

noload => res_phoneprov.so
noload => app_dahdiras.so
noload => chan_dahdi.so
noload => res_pjsip_phoneprov_provider.so
noload => cel_pgsql.so
noload => cel_tds.so

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

ls -la /usr/lib64/asterisk/modules/

Разрешаем сервис asterisk и запускаем его:

systemctl enable asterisk

systemctl start asterisk

Заведение первых номеров

Для первой настройки достаточно завести 2 номера с возможностью подключения по SIP.

Создаем правило обработки вызова (контекст). Открываем следующий файл:

vi /etc/asterisk/extensions.conf

И добавляем в него следующее:

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

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

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

vi /etc/asterisk/sip.conf

И добавляем в него два внутренних номера (extensions):

[1001]
type=friend
regexten=1001
secret=1234
context=outcaling
host=dynamic
callerid="1001" <1001>
disallow=all
allow=alaw
allow=ulaw
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no
 

[1002]
type=friend
regexten=1002
secret=1234
context=outcaling
host=dynamic
callerid="1002" <1002>
disallow=all
allow=alaw
allow=ulaw
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no

* где:

  • [1001], [1002] — имена для обозначения номеров.
  • type — типы номеров. Могут быть peer, user или friend. Peer — входящие вызовы сопоставляются с IP-адресами, а не логином и паролем пользователя. User для входящих вызовов. Friend включает возможности peer и user и подходит для телефонов и телефонных программ.
  • 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.

Перезапускаем asterisk:

systemctl restart asterisk

Проверка

Все, что происходит в Asterisk можно посмотреть в лог-файле командой:

tail -f /var/log/asterisk/messages

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

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

# Телефония # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет