Установка Asterisk в Debian 12 Bookworm

Asterisk - это мощная и гибкая открытая система коммутации голосовых и видео-вызовов, которая предоставляет возможность создания автоматизированных телефонных систем или даже провайдеров сотовой связи. В этой статье мы рассмотрим процесс установки Asterisk в операционной системе Debian 12.

Подготовка системы

Внимание!!!
Далее все команды выполняются от имени суперпользователя root!
В противном случае используйте sudo

Для начала необходимо убедиться, что ваша система Debian 12 полностью обновлена и имеет все необходимые зависимости для успешной установки Asterisk, для чего выполним следующую команду:

apt update && apt upgrade  

Установка зависимостей

Asterisk требует несколько пакетов и библиотек для своей работы.

  • Установим необходимые зависимости с помощью apt:
apt -y install git vim curl wget libnewt-dev libssl-dev libncurses5-dev subversion\
 libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev
  • Перейдём в каталог, в котором будем работать с исходными кодами Asterisk и загрузим исходники:
cd /usr/src/
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-21-current.tar.gz
  • Извлечём исходные коды Asterisk из архива:
tar xvf asterisk-21-current.tar.gz
  • Для использования mp3 кодека нам необходимо загрузить и добавить его в исходный код, до того как мы начнём сборку Asterisk. Сделаем это:
cd asterisk-21*/
contrib/scripts/get\_mp3\_source.sh

В результате выполнения скрипта, который мы запустили командой приведённой выше, мы должны получить вывод в терминале, представленный ниже:

root@aster:/usr/src/asterisk-21.1.0# contrib/scripts/get\_mp3\_source.sh
A    addons/mp3
A    addons/mp3/MPGLIB_README
A    addons/mp3/common.c
A    addons/mp3/huffman.h
A    addons/mp3/tabinit.c
A    addons/mp3/Makefile
A    addons/mp3/README
A    addons/mp3/decode_i386.c
A    addons/mp3/dct64_i386.c
A    addons/mp3/MPGLIB_TODO
A    addons/mp3/mpg123.h
A    addons/mp3/layer3.c
A    addons/mp3/mpglib.h
A    addons/mp3/decode_ntom.c
A    addons/mp3/interface.c
Exported revision 204.
  • В завершении процедуры установки зависимостей, выполним их проверку запустив проверочный скрипт следующей командой:
contrib/scripts/install_prereq install

Данный скрипт проверит все зависимости, установит недостающие компоненты и библиотеки. В результате его выполнения, в самом конце, мы должны получить следующее сообщение:

#############################################
## install completed successfully
#############################################

Все зависимости установлены, можно переходить к следующему шагу.

Конфигурирование, сборка и установка Asterisk

Выполним конфигурирование кода с целью удовлетворения всех зависимостей на нашей системе:

./configure  

В результате, в самом конце, получим такой вывод в консоли терминала:

configure: Menuselect build configuration successfully completed

               .$$$$$$$$$$$$$$$=..      
            .$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$$$$$$$$$.$$$$$$      
       $$$$$$$$$$$$$$$$.                

configure: Package configured for: 
configure: OS type  : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :

Теперь вызовем псевдографический интерфейс выбора необходимых компонентов:

make menuselect

Здесь я стараюсь не вмешиваться в стандартный набор предлагаемый Астериском “из коробки”, лишь добавляю звуковые файлы.
То, что я изменяю показано на скриншотах ниже:

Add-ons

Core Sound Packages
Music On Hold
Extras Sound

По окончании выбора компонентов нажимаем клавишу Save&Exit и переходим к следующему шагу.

Совет
В стоковой конфигурации устанавливается много различных модулей, но я предпочитаю их отключать при настройке Asterisk.

Пришло время выполнить сборку нашего Asterisk. Сделаем это выполнив команду:

make

Результат успешной сборки выглядит так:

Building Documentation For: channels pbx apps codecs formats cdr cel bridges funcs tests main res addons 
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, and +
 + can be installed by running:              +
 +                                           +
 +                make install               +
 +-------------------------------------------+

И наконец пришло время установить Asterisk:

make install

По завершению установки получим:

done
 +---- Asterisk Installation Complete -------+
 +                                           +
 +    YOU MUST READ THE SECURITY DOCUMENT    +
 +                                           +
 + Asterisk has successfully been installed. +
 + If you would like to install the sample   +
 + configuration files (overwriting any      +
 + existing config files), run:              +
 +                                           +
 + For generic reference documentation:      +
 +    make samples                           +
 +                                           +
 + For a sample basic PBX:                   +
 +    make basic-pbx                         +
 +                                           +
 +                                           +
 +-----------------  or ---------------------+
 +                                           +
 + You can go ahead and install the asterisk +
 + program documentation now or later run:   +
 +                                           +
 +               make progdocs               +
 +                                           +
 + **Note** This requires that you have      +
 + doxygen installed on your local system    +
 +-------------------------------------------+

Теперь сгенерируем образцы файлов настроек и конфигураций выполнив следующие команды:

make samples && make config
ldconfig

Создаём пользователя и запускаем Asterisk

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

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk

Теперь созданные группу и пользователя asterisk назначим пользователем и группой по умолчанию в самом Asterisk, для чего отредактируем файлы конфигураций следующим образом (раскомментируем следующие параметры в соответствующих файлах):

# nano /etc/default/asterisk

AST_USER="asterisk" 
AST_GROUP="asterisk"
# nano /etc/asterisk/asterisk.conf

runuser = asterisk              ; The user to run as.
rungroup = asterisk             ; The group to run as. 

Запустим Asterisk выполнив команду:

systemctl start asterisk

и проверяем его статус командой:

systemctl status asterisk

Asterisk запустился, однако в статусе есть ошибки:

Asterisk status

Данной ошибке уже много лет и она перемещается из дистрибутива в дистрибутив с завидным постоянством. А так как ошибка стара как Мир, то и её лечение тоже давно известно. Выполним следующие команды:

sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf

Перезапустим сервис командой:

systemctl restart asterisk

И снова проверим статус:

systemctl status asterisk
Asterisk status

Всё, сервис запущен - никаких ошибок нет!
Движемся дальше…

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

systemctl enable asterisk

Проверим правильно ли работает Asterisk подключившись к его консоли:

asterisk -rvv

видим:

root@aster:~# asterisk -rvv
Asterisk 21.1.0, Copyright (C) 1999 - 2022, Sangoma Technologies Corporation and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
Connected to Asterisk 21.1.0 currently running on aster (pid = 484)
aster*CLI> 

Всё в порядке.

Настройка файервола

Настройка файервола для Asterisk - это довольно творческий вопрос, однозначного подхода к которому нет.
Так возможны разные конфигурации сети, оборудования и наконец самих файерволов.
Подробно рассмотреть данный вопрос в этой статье не представляется возможным, однако рассмотрим два общих случая открытия портов в наиболее популярных фаерволах применяющихся в Debian - это iptables и ufw:

  1. ufw

Для того, чтобы открыть порты минимально необходимые для работы Asterisk, выполним следующую команду:

ufw allow proto tcp from any to any port 5060,5061
  1. iptables

Правила для iptables будут выглядеть следующим образом:

# iptables -A INPUT -p tcp --dport 5060 -j ACCEPT
# iptables -A INPUT -p tcp --dport 5061 -j ACCEPT
Внимание!!!
Повторюсь - приведённые выше правила для ufw и iptables не являются абсолютно верными и приведены лишь для общего понимания. Для тщательной настройки файерволов и проброса портов необходимых для правильной работы Asterisk, в случае если он находится за NAT, необходимо изучать дополнительные материалы и выполнять конфигурацию согласно вашей, фактической ситуации.

Заключение

В этой статье мы рассмотрели процесс установки Asterisk в Debian 12. Вы можете продолжить настройку и дальнейшую работу с Asterisk с помощью его конфигурационных файлов и функциональных модулей.
Так же я планирую в последующих статьях более детально развивать тему настройки и конфигурации Asterisk.

Следите за обновлениями на сайте….

0%