- Установка и базовая настройка сервера Asterisk на Ubuntu
- Подготовка сервера
- Установка
- Сборка DAHDI
- Сборка LibPRI
- Установка Asterisk
- Настройка и запуск
- Ошибки запуска
- Предупреждения при запуске
- Заведение первых номеров
- Проверка
- Виртуальная АТС. Часть 1: Простая установка Asterisk на Ubuntu 20.04
- Asterisk + Ubuntu + VDS = IP-PBX
- Установка Asterisk
- Настройка Asterisk
- Подключение абонентов
Установка и базовая настройка сервера Asterisk на Ubuntu
Инструкция позволит быстро познакомиться с сервером Asterisk, выполнив базовые действия по установке и настройке сервера. Нижеописанные действия протестированы на Ubuntu 16.04 и Asterisk 15.
Подготовка сервера
Актуализируем список пакетов:
Установка
Установку можно выполнить с помощью команды apt install asterisk. Но в данной инструкции мы разберем установку путем сборки из исходников.
Рекомендуется установить Asterisk с DAHDI (драйверы плат интерфейсов телефонии) и LibPRI (библиотека для работы с потоковыми TDM-интерфейсами). Сначала необходимо собрать DAHDI, затем LibPRI и только потом — Asterisk.
Устанавливаем пакеты, необходимые для корректной сборки DAHDI и LibPRI:
apt install make gcc
Сборка DAHDI
Распаковываем его и переходим в распакованный каталог:
tar -xvf dahdi-linux-complete-current.tar.gz
Собираем пакет и устанавливаем его:
Выходим из каталога dahdi:
Сборка LibPRI
tar -xvf libpri-current.tar.gz
Собираем и устанавливаем:
Выходим из каталога libpri:
Установка Asterisk
Переходим по ссылке https://downloads.asterisk.org/pub/telephony/asterisk и копируем ссылку на последнюю версию asterisk. Используя ссылку, скачиваем исходник:
* в моем случае, последняя версия была 15.
Распаковываем архив и переходим в папку, появившуюся после распаковки:
tar -xvf asterisk-*.tar.gz
Устанавливаем библиотеки для работы с mp3:
./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.
Мы должны увидеть логотип астериска:
Вызываем оконное меню настройки модулей:
Для большинства случаев, настройки можно оставить по умолчанию. В противном случае рекомендуется изучить опции и выбрать необходимые. После нажимаем Save & Exit.
Затем собираем исходник:
И выполняем установку:
Установим примеры конфигурационных файлов и документацию:
Устанавливаем скрипт инициализации (для автозапуска):
Устанавливаем скрипты для отсекания логов:
Создаем конфигурационный файл для указания дополнительного пути с библиотеками:
Добавляем в него одну строчку:
* это путь до каталога с библиотеками, с которым мы собирали asterisk (опция —libdir).
Настройка и запуск
Открываем конфигурационный файл:
И редактируем следующее:
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/
chown -R asterisk:asterisk /usr/lib64/asterisk
chown -R asterisk:asterisk /var/log/asterisk
Исправляем ошибки и предупреждения. В моем случае были следующие.
Ошибки запуска
No configured users for ARI. ARI предоставляет API для Asterisk REST Interface. В данном примере, отключаем поддержку:
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.
Вышеописанные ошибки возникают из-за включенных, но не используемых модулей. Отключаем:
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.
Создаем правило обработки вызова (контекст). Открываем следующий файл:
И добавляем в него следующее:
[outcaling]
exten => _XXXX,1,Dial(SIP/$
* создаем контекст с именем outcaling для четырехзначных номеров (XXXX) с вызовом по SIP по внутреннему номеру.
Открываем следующие конфигурационный файл:
И добавляем в него два внутренних номера (extensions):
[1001]
type=friend
regexten=1001
secret=1234
context=outcaling
host=dynamic
callerid=»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″
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 — проверка 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
Проверка
Все, что происходит в Asterisk можно посмотреть в лог-файле командой:
tail -f /var/log/asterisk/messages
Для теста настроенного сервера можно воспользоваться IP-телефоном или софт-фоном на компьютере или телефоне. Например, а качестве SIP-клиента под Windows можно установить бесплатную программу 3CX, для Android — Zoiper.
Подробнее рассмотрим настройку 3CX. Скачиваем ее с официального сайта. Устанавливаем, приняв лицензионное соглашение и нажимая далее. После установки запускаем приложение и на запрос отвечаем, что создадим новый профиль. Нажимаем New и вводим данные для подключения:
* настраиваем первый клиент для подключения с логином и паролем 1001 / 1234, второй — 1002 / 1234.
Источник
Виртуальная АТС. Часть 1: Простая установка Asterisk на Ubuntu 20.04
Из-за перехода на удаленку в небольших компаниях часто возникают проблемы с телефонной связью. Обычно такие фирмы сидят в арендованных офисах, а услуги телефонии им оказывает бизнес-центр. О подключении сотрудников из дому придется позаботиться самостоятельно: самый недорогой способ это сделать — развернуть бесплатный сервер VoIP с открытым исходным кодом Asterisk на виртуальной машине. В статье для примера мы использовали Ubuntu 20.04, но этот рецепт подойдет и для других версий популярного дистрибутива — 18.04 и 18.10, а также (в теории, мы не проверяли) для актуальных версий Debian.
Asterisk + Ubuntu + VDS = IP-PBX
Существуют и другие серверы VoIP, при этом некоторые коммерческие продукты ограниченное время можно использовать бесплатно. Считается, что они гораздо проще в настройке, но требуют для работы Windows или установки с собственного дистрибутива Linux. Это сразу отсекает большинство недорогих VDS, а собственное железо с каналом передачи данных или аренда выделенного аппаратного сервера обходятся дороже. Бесплатный Asterisk разворачивается на любой виртуальной машине, к тому же внедрить его не так сложно. Для этого не потребуется даже сборка из исходных текстов. С помощью Asterisk нетрудно наладить телефонную связь между IP-телефонами (аппаратными и программными), а если подключиться к внешнему провайдеру VoIP, то за небольшую сумму денег вы получите полноценную IP АТС (IP-PBX). Если потребность в ней исчезнет, отказаться можно в любой момент — аренда выгоднее вложений в железо и софт.
Установка Asterisk
Для тестов мы взяли недорогую виртуальную машину, но боевая конфигурация зависит от потребностей заказчика. Здесь проявляется главное преимущество VDS: ресурсов можно заказать по минимуму, а потом добавить, если возникнет такая потребность. Обычно для полноценной работы АТС нужно не меньше 2 ГБ оперативной памяти, но если их будет много, отказаться от лишних ресурсов нетрудно.
Инсталляция сервера VoIP на Ubuntu 20.04 — самая простая часть квеста. Необходимый пакеты есть в официальном репозитории дистрибутива и добавляются в систему парой команд. В Ubuntu мы используем механизм повышения привилегий sudo, а в Debian он скорее всего не понадобится, поскольку там практикуются интерактивные сеансы с правами root:
Запуск и остановка службы Asterisk производятся через systemd, а посмотреть ее статус после инсталляции можно с помощью команды systemctl :
Если все прошло удачно, результат будет примерно таким:
Для старта/остановки/перезапуска (например, после изменения конфигурационных файлов) службы в ручном режиме используются следующие команды:
Пока все стандартно, но самая увлекательная часть нашего приключения впереди. Сервер VoIP нужно настроить.
Настройка Asterisk
Файлы конфигурации находятся в каталоге /etc/asterisk, причем их там огромное количество.
Продукт настраивается очень гибко и обладает массой возможностей, но для решения простых задач большинство из них нам не понадобится. В этой статье мы ограничимся правкой двух конфигурационных файлов: /etc/asterisk/sip.conf и /etc/asterisk/extensions.conf. Предварительно стоит сделать их резервные копии:
Переходим к редактированию новых конфигурационных файла (самые любопытные могут изучить резервные копии дистрибутивных, там много интересного):
В файл нужно добавить минимум двух пользователей (внутренних абонентов) с номерами 1001 и 1002, а также задать для них пароли (параметр secret). На вашем сервере внутренние номера и пароли будут другими:
[general]
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes
[1001]
type=friend
host=dynamic
secret=1234
[1002]
type=friend
host=dynamic
secret=5678
Аналогично делаем новый extensions.conf:
Его содержание будет следующим:
[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no
[default]
exten => 1001,1,Dial(SIP/1001,10)
exten => 1002,1,Dial(SIP/1002,10)
Меняем владельца и права доступа к файлам, поскольку там лежат, в частности, пароли пользователей нашей АТС
Теперь нам остается только перезапустить службу и проверить ее работоспособность:
На этом настройка IP АТС с возможностью телефонной связи между внутренними абонентами завершена. Перейдем к проверке ее работоспособности.
Подключение абонентов
Чаще всего для подключения к виртуальной АТС используют программные телефоны для настольных и мобильных операционных систем. Их существует великое множество, для тестов мы взяли бесплатный Linphone для iOS и Android. При первом запуске нужно будет выбрать опцию «ИСПОЛЬЗОВАТЬ SIP ПОЛЬЗОВАТЕЛЯ», а затем указать в настройках IP нашего сервера, логин и пароль. Учетную запись сервиса Linphone создавать не надо, у нас есть собственный.
После подключения к нашей АТС клиенты готовы общаться между собой. На рабочей станции с Linux и графическим окружением можно использовать тот же самый Linphone, доступный в официальном репозитории дистрибутива:
Настраивается он примерно так же. Теперь у нас есть виртуальная АТС, обеспечивающая связь между внутренними абонентами. Не бог весть какое достижение, но и трудозатраты на ее внедрение тоже невелики. В следующей статье мы научимся подключаться к SIP-провайдеру, звонить через него в мобильные и кабельные телефонные сети, принимать входящие внешние звонки, а также делать переадресацию и другие интересные штуки.
Источник