Asterisk, установка которого будет рассмотрена в данном материале, представляет собой программное обеспечение для организации так называемой офисной телефонной станции или IP-АТС (англ. Private Branch eXchange, PBX). Оно объединяет все телефоны в офисе в одну информационную сеть, на базе которой работают разнообразные службы голосовой связи. Asterisk работает на Linux, BSD, OS X и на Windows с использованием эмулятора.
Asterisk может осуществлять передачу голоса по четырем различным протоколам VoIP и взаимодействовать практически со всеми стандартизованными телефонными аппаратами (включая мобильные) при помощи относительно недорогого оборудования. Asterisk реализует различные возможности голосовой почты (voicemail), включая телефонный справочник, конференц-связь, интерактивный голосовой ответ и очереди вызовов.
В данном материале мы рассмотрим процесс установки Asterisk на ОС Linux, в частности на популярных дистрибутивах CentOS и Debian, а также базовые процедуры настройки сервера голосовой почты.
Установка сервера Asterisk из исходников
Для начала рассмотрим алгоритм инсталляции сервера IP-телефонии, который доступен абсолютно на любом дистрибутиве Linux, а именно сборку и установку программного обеспечения из исходного кода. Данный метод позволяет выполнить установку Asterisk с нуля.
Перед установкой сервера IP-телефонии в системе должен быть обеспечен ряд условий. Asterisk должен устанавливаться на систему, работающую на ядре версии не ниже 2.6, при этом в системе должны присутствовать файлы заголовков, чтобы программа успешно скомпилировалась. Asterisk написан на языке C, поэтому для сборки в системе должен быть установлен компилятор gcc с сопутствующими библиотеками, такими как termcap и openssl. Для сборки дополнений Asterisk также требуются предустановленные библиотеки и клиент mysql, а также соответствующие им файлы заголовков.
Когда система подготовлена для установки, вам будет необходимо перейти в раздел Download на официальном сайте и загрузить с него следующие архивы:
asterisk.
asterisk-sounds.
asterisk-addons.
zaptel.
libpri.
Файлы необходимо скопировать на сервер, который будет осуществлять функции офисной АТС. Разместите их в папке /usr/src/.
После этого запустите на сервере терминал. Перейдите в каталог с архивами и распакуйте каждый из них командой:
tar-xzf<имя_архива>tar.gz
Архивы будут распакованы в папки с именами, совпадающими с названиями архивов. Последовательно перейдите в каждую из папок командой:
cd<имя_папки>
И выполните в каждой папке нижеуказанные команды.
1. Подготовка к сборке:
./configure
2. Сборка:
make
3. Установка:
make install
Если вышеприведенные команды завершатся с успешным результатом, вы соберете и установите Asterisk на своем сервере.
Процедура установки из исходников одинакова для всех дистрибутивов Linux, но не всем привычна. Как правило, большинство пользователей предпочитает методы установки, предлагаемые конкретным дистрибутивом.
В связи с этим, рассмотрим процедуры инсталляции Asterisk на двух популярных платформах для создания офисных АТС: CentOS и Debian GNU/Linux.
Установка Asterisk на CentOS
В рамках данного примера мы будем устанавливать Asterisk 13. Мы выполним установку Asterisk на CentOS 7.
Предполагается, что инсталляция будет выполняться в текстовом консольном режиме от имени суперпользователя (root).
Для начала необходимо установить все необходимые пререквизиты. Убедитесь, что в системе присутствуют все пакеты, указанные ниже. Их достаточно много:
В результате в системе будут присутствовать все зависимости, требующиеся для успешной сборки сервера телефонии Asterisk.
Следующим шагом должно стать отключение SELinux. Система безопасности Security-Enhanced Linux в CentOS включена по умолчанию и очень часто препятствует нормальному функционированию Asterisk. Поэтому для успешной настройки и работы сервера ее необходимо отключить.
Проверим статус активности системы SELinux следующей командой:
sestatus
Если система сообщает, что SELinux включен, выполним процедуру отключения. Для этого необходимо внести изменения в конфигурационный файл в папке /etc/selinux, установив соответствующий флаг.
sed -i 's/\(^SELINUX=\).*/\SELINUX=DISABLED/' config
Далее требуется проверить установки системного времени и, в частности, выбрать корректный часовой пояс. Для выбора нужно использовать команды, которые позволят определить и установить текущий пояс:
tzselect
timedatectl set-timezone <имя_зоны>
(например, America/Los_Angeles
)
Для того, чтобы проверить, был ли установлен часовой пояс, можно использовать следующую команду:
timedatectl status
После этого потребуется перезагрузить систему, чтобы активировать изменения. Для этого используйте команду reboot
.
Теперь непосредственно перейдем к установке Asterisk.
Фактически, установка Asterisk на CentOS сводится к той же самой сборке из исходников, с которой мы познакомились в предыдущем разделе. Здесь же мы рассмотрим процесс сборки с учетом особенностей конкретного дистрибутива Linux, а именно CentOS 7.
Для начала загрузим и установим сам сервер IP-телефонии.
Скачаем из раздела Downloads на официальном сайте продукта архив с Asterisk 13 и сохраним его в папку /usr/src. Распакуем архив командой:
tar zxvf <имя_архива>
Перейдем в папку с распакованным архивом и выполним команды, приведенные ниже.
make distclean
./configure --libdir=/usr/lib64 --with-pjproject-bundled
Данная последовательность команд позволит подготовить исходники к сборке.
Далее установим настройки компиляции:
make menuselect.makeopts
После настройки опций компиляции выполните следующую последовательность действий:
1. Создайте отдельную учетную запись пользователя для сервера IP-телефонии.
adduser asterisk -s /sbin/nologin -c "Asterisk User"
2. Соберите и установите сервер.
make && make install
3. Задайте права доступа к Asterisk для вновь созданного пользователя.
chown -R asterisk. /var/lib/asterisk
В результате базовый сервер Asterisk будет собран и установлен.
Помимо самого Asterisk, аналогичным способом на CentOS можно установить полезные дополнения к серверу. Об этом читайте ниже.
FreePBX
FreePBX – это полнофункциональный графический Web-интерфейс, предназначенный для настройки и управления офисной АТС. Установка Asterisk с FreePBX осуществляется в нижеприведенной последовательности.
Запустим базу данных:
systemctl start mariadb
Скачаем с сайта GitHub в папку /usr/src исходный код FreePBX:
git clone -b release/13.0 https://github.com/FreePBX/framework.git freepbx
Далее выполним в папке следующие команды для установки:
./start_asterisk start
./install -n
И ряд команд для настройки FreePBX:
DAHDI
DAHDI – это драйвер, обеспечивающий взаимодействие Asterisk с различным телефонным оборудованием. Он отвечает за работу плат интерфейсов телефонии, устанавливаемых непосредственно в сервер, на котором работает Asterisk. Процедура установки DAHDI описана ниже.
Скачайте в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:
PJSIP
PJSIP – это библиотека, написанная на С, которая отвечает за поддержку различных протоколов IP-телефонии. С версии Asterisk 13.8 включительно библиотека PJSIP может устанавливаться отдельно. Впрочем, если Asterisk компилируется с флагом --with-pjproject-bundled (что мы и сделали в предыдущем разделе), библиотека PJSIP будет установлена непосредственно при компиляции сервера.
Для того, чтобы установить PJSIP отдельно, требуется произвести следующую процедуру.
Скачайте с сайта pjsip.org в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:
Пост-инсталляционные процедуры
По завершению установки Asterisk необходимо выполнить ряд дополнительных действий. Данные процедуры являются обязательными.
1. Установить защиту для сервера базы данных:
mysql_secure_installation
Для выполнения процедуры просто ответьте Y на все вопросы.
2. Изменить настройки веб-сервера:
3. Открыть доступ к службам и портам, необходимым для работы Asterisk:
firewall-cmd --permanent --zone=public --add-service={http,https}
--add-port=5060-5061/tcp
--add-port=5060-5061/udp
--add-port=10000-20000/udp
4. Настроить автозагрузку базы данных:
systemctl enable mariadb
5. Настроить загрузку веб-сервера при запуске системы:
systemctl enable httpd
6. Настроить автозапуск FreePBX при загрузке системы:
nano /etc/systemd/system/freepbx.service
systemctl enable freepbx
7. Настроить соединение с базой данных через ODBC. Если установлен устаревший модуль cdr_mysql.so, этот пункт опционален, но все же рекомендуется:
nano /etc/odbc.ini
Для того, чтобы проверить связь по ODBC, используйте следующую команду:
isql -v asteriskcdrdb <username> <password>
8. Перезагрузите систему, чтобы применить сделанные изменения:
reboot
Установка Asterisk 13 на Debian
В данном разделе мы рассмотрим процедуру установки на другой популярной платформе – Debian. Хорошая новость для пользователей: она относительно проста, несмотря на то, что также включает в себя сборку из исходников. В качестве примера мы выполним установку Asterisk на Debian 8.
Установка производится от имени суперпользователя (root). Откройте терминал, получите соответствующие права, после чего можно приступить к инсталляции.
Сначала загрузите Asterisk 13 с официального сайт и распакуйте загруженный архив. Перейдите в папку с распакованными исходниками.
Теперь установим необходимые зависимости. Самая важная – компилятор gcc – в Debian уже есть. Поэтому просто загрузим оставшиеся:
После того, как все зависимости загружены и установлены, выполните в папке с распакованным архивом Asterisk следующую команду:
./configure
Команда должна завершиться без ошибок. Если в результате возникнет сообщение об отсутствии некоторых зависимостей, установите их.
Перед компиляцией Asterisk есть возможность включить или отключить отдельные модули:
make menuselect
Будет открыто консольное приложение со списком модулей. Перемещаясь клавишами вниз и вверх по списку, вы можете включать и отключать их. Некоторые дополнительные модули требуют установки зависимостей. Это можно сделать при помощи apt-get.
Теперь приступим к компиляции Asterisk. Введите в консоли уже знакомые команды:
1. Сборка исходников:
make
2. Установка в системные каталоги:
make install
Когда выполнение компиляции завершится без ошибок, нужно запустить команду:
make samples
На этом завершается установка. Asterisk успешно проинсталлирован на ваше сервер. Следующая команда вызовет консоль управления Asterisk:
asterisk -vvvvvvgc
Настройка Asterisk
Теперь рассмотрим базовые процедуры настройки сервера телефонии Asterisk. Они принципиально одинаковы для всех дистрибутивов Linux.
Для начала нужно добавить следующий текст в файл sip.conf:
Тем самым мы создадим пять учетных записей, которые могут использоваться любым клиентом SIP (Cisco SIP Phone, xlite, ATA и тому подобные). Все пользователи будут зарегистрированы в Asterisk. Если данная конфигурация не работает, попробуйте отключить сетевой экран до завершения настройки программного обеспечения.
Создание первого номерного плана
Номерной план (диалплан) предоставляет собой формализованное описание процессов обработки телефонных звонков. Диалплан в деталях указывает системе, что нужно делать с исходящими и входящими звонками. Например, Asterisk может переадресовывать их, отвечать на них при помощи автоответчика и так далее.
Откройте файл extension.conf в папке /etc/asterisk и добавьте в него строку:
exten=> _XXXX,1,Dial(SIP/${EXTEN})
Теперь все сконфигурированные клиенты SIP смогут принимать и отправлять звонки. Благодаря простоте настройки диалплана, Asterisk и является одной из самых дружелюбных платформ IP-телефонии. Не так уж и много навыков требуется, чтобы поднять офисную АТС.
Создание первого транка SIP
Asterisk может выполнять исходящие и входящие вызовы. Для исходящих вызовов нам требуется провайдер, который будет перенаправлять вызовы в нашу систему, а также публичный IP-адрес.
Для этого нужно настроить SIP-транк – канал виртуальной связи между клиентским оборудованием и телефонным оператором. Если в роли оборудования клиента будет выступать наш сервер с Asterisk, настройка транка позволит подключить к нему любое количество городских телефонных номеров по протоколу SIP
Для создания транка добавьте следующий код в файл sip.conf:
После этого нужно будет внести в extension.conf еще одну строку:
exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})
Это позволит установить связь с провайдером для осуществления исходящих вызовов.
Заключение
Настройка полноценной офисной АТС на базе Asterisk, установка которого была рассмотрена в данной статье, включает в себя гораздо больше процедур, чем описано выше. Подробная информация о сервере телефонии и его возможности представлена к официальной документации по Asterisk.