admin / 23.12.2017
.
Содержание
Тематические термины: Asterisk, Linux, Ubuntu
Инструкция позволит быстро познакомиться с сервером Asterisk, выполнив базовые действия по установке и настройке сервера. Нижеописанные действия протестированы на Ubuntu 16.04 и Asterisk 15.
Актуализируем список пакетов:
Синхронизируем время:
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-*
Собираем пакет и устанавливаем его:
Выходим из каталога dahdi:
Загружаем исходник:
wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
Распаковываем:
tar -xvf libpri-current.tar.gz
Собираем и устанавливаем:
Выходим из каталога 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
Устанавливаем зависимости:
./contrib/scripts/install_prereq install
./contrib/scripts/install_prereq install-unpackaged
Удаляем мусор:
Устанавливаем библиотеки для работы с 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$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
Вызываем оконное меню настройки модулей:
Для большинства случаев, настройки можно оставить по умолчанию. В противном случае рекомендуется изучить опции и выбрать необходимые. После нажимаем Save & Exit.
Затем собираем исходник:
И выполняем установку:
Установим примеры конфигурационных файлов и документацию:
Устанавливаем скрипт инициализации (для автозапуска):
Устанавливаем скрипты для отсекания логов:
Создаем конфигурационный файл для указания дополнительного пути с библиотеками:
vi /etc/ld.so.conf.d/asterisk.conf
Добавляем в него одну строчку:
* это путь до каталога с библиотеками, с которым мы собирали asterisk (опция —libdir).
Применяем настройку:
Открываем конфигурационный файл:
vi /etc/asterisk/asterisk.conf
И редактируем следующее:
runuser = asterisk
rungroup = asterisk
defaultlanguage = ru
documentation_language = ru_RU
Создаем системную учетную запись asterisk:
Задаем права:
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
Проверяем конфигурацию:
Исправляем ошибки и предупреждения. В моем случае были следующие.
No configured users for ARI. ARI предоставляет API для Asterisk REST Interface. В данном примере, отключаем поддержку:
vi /etc/asterisk/ari.conf
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
Отключаем следующие модули:
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
Для первой настройки достаточно завести 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
* где:
Могут быть peer, user или friend. Peer — вызовы сопоставляются с IP-адресами и номерами портов.
User — проверка username. Friend — включает возможности peer и user (проверка username и IP-адреса источника) и лучше всего подходит для телефонов и телефонных программ.
Перезапускаем asterisk:
systemctl restart asterisk
Все, что происходит в Asterisk можно посмотреть в лог-файле командой:
tail -f /var/log/asterisk/messages
Для теста настроенного сервера можно воспользоваться IP-телефоном или софт-фоном на компьютере или телефоне. Например, а качестве SIP-клиента под Windows можно установить бесплатную программу X-Lite, для Android — Zoiper.
Настраиваем первый клиент для подключения с логином и паролем 1001 / 1234, второй — 1002 / 1234. Пробуем позвонить.
# Телефония# Серверы
Да Нет
.
.
FILED UNDER : IT