Тематические термины: Asterisk, Linux, Ubuntu
Инструкция позволит быстро познакомиться с сервером 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
Загружаем исходник:
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
Выходим из каталога dahdi:
wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
Распаковываем:
tar -xvf libpri-current.tar.gz
cd libpri-*
Собираем и устанавливаем:
Выходим из каталога libpri:
Переходим по ссылке 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
* где:
** список всех доступных опций можно посмотреть командой ./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 samples
make progdocs
Устанавливаем скрипт инициализации (для автозапуска):
Устанавливаем скрипты для отсекания логов:
make install-logrotate
Создаем конфигурационный файл для указания дополнительного пути с библиотеками:
vi /etc/ld.so.conf.d/asterisk.conf
Добавляем в него одну строчку:
/usr/lib64
* это путь до каталога с библиотеками, с которым мы собирали asterisk (опция –libdir).
Применяем настройку:
Открываем конфигурационный файл:
vi /etc/asterisk/asterisk.conf
И редактируем следующее:
runuser = asteriskrungroup = asteriskdefaultlanguage = rudocumentation_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.sonoload => res_config_pgsql.sonoload => codec_dahdi.so
Отключаем следующие модули:
noload => res_phoneprov.sonoload => app_dahdiras.sonoload => chan_dahdi.sonoload => res_pjsip_phoneprov_provider.sonoload => cel_pgsql.sonoload => 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=friendregexten=1001secret=1234context=outcalinghost=dynamiccallerid=”1001″ <1001>disallow=allallow=alawallow=ulawlanguage=rucallgroup=1pickupgroup=1qualify=yescanreinvite=yescall-limit=4nat=no
[1002]type=friendregexten=1002secret=1234context=outcalinghost=dynamiccallerid=”1002″ <1002>disallow=allallow=alawallow=ulawlanguage=rucallgroup=1pickupgroup=1qualify=yescanreinvite=yescall-limit=4nat=no
Перезапускаем asterisk:
systemctl restart asterisk
Все, что происходит в Asterisk можно посмотреть в лог-файле командой:
tail -f /var/log/asterisk/messages
Для теста настроенного сервера можно воспользоваться IP-телефоном или софт-фоном на компьютере или телефоне. Например, а качестве SIP-клиента под Windows можно установить бесплатную программу X-Lite, для Android — Zoiper.
Настраиваем первый клиент для подключения с логином и паролем 1001 / 1234, второй — 1002 / 1234. Пробуем позвонить.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies