Моя цель, получить практические навыки администрирования телефонии на базе Asterisk 22 (теперь только chan_pjsip, chan_sip больше не поддерживается) если операционная система Ubuntu 24.04 LTS Server.

Лучше брать последнюю LTS-ветку — сейчас это Asterisk 22 LTS.

Почему именно LTS:

  • 4+ года поддержки
  • исправления безопасности
  • стабильность
  • используется в боевом окружении
  • без устаревшего chan_sip

❌ Что НЕ стоит брать

  • 16 LTS — уже морально устарел
  • 18 LTS — ещё встречается, но постепенно уходит
  • 20 — можно, но если уж начинать, то лучше 22
  • всё ниже 16 — только если поддержка legacy

Хочу получить конкурентное преимущество в плане своей работы, уйти в удаленку. К тому же это интересно, а то сколько раз начинал и все что-то да отвлекало либо не до конца реализовывал задуманное. Будет исправляться, т.е. 2026 год должен стать переломным моментом.

В качестве тестового полигона выступит стенд на базе Debian 12 + Proxmox 8.2 где материнская плата: Gigabyte C246-WU4 + 32Gb оперативной памяти.

Под стенд обучения Asterisk создаю виртуальную машину:

  • OS: Ubuntu 24.04 LTS Server
  • CPU: 2
  • RAM: 4Gb
  • Network: bridge network, лучше отдельный VLAN чтобы проще анализировать через tcpdump. Это чуть позже.
  • Role: Asterisk 22 собирать буду из исходников дабы понимать как что и как.

Лабораторию Asterisk буду строить, как связка, ну а там посмотрим.

  • 1 VM — Asterisk
  • 1 VM — SIP (нагрузка)
  • 1–2 софтфона (вроде я разбирал клиенты на Android)
  • отдельная сеть (это чуть позже)
  • включённый tcpdump

Шаг №1: Произвожу (это на мой взгляд) первоначальные настройки операционной системы перед дальнейшим использованием:

sudo nano /etc/update-manager/release-upgrades

[DEFAULT]

Prompt=never

ekzorchik@srv-s2404a:~$ sudo visudo

ekzorchik ALL=(ALL) NOPASSWD:ALL

sudo rm -Rf /var/lib/apt/lists

sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove -y

sudo rm -f /etc/localtime

sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

sudo locale-gen en_US.UTF-8

echo "LC_ALL="en_US.UTF-8"" | sudo -s tee /etc/default/locale

echo "LANG="en_US.UTF-8"" | sudo tee -a /etc/default/locale

echo "LANGUAGE="en.US.UTF-8"" | sudo tee -a /etc/default/locale

sudo lvextend -l +100%Free /dev/ubuntu-vg/ubuntu-lv

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

sudo apt-get install -y qemu-guest-agent

Шаг №2: Устанавливаю зависимости для сборки Asterisk из исходников:

ekzorchik@srv-s2404a:~$ sudo apt-get install -y build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git curl autoconf automake libtool cmake autoconf-archive unzip subversion net-tools

Шаг №3: Собираю Asterisk 22 из исходников:

ekzorchik@srv-s2404a:~$ cd /usr/src/

ekzorchik@srv-s2404a:/usr/src$

ekzorchik@srv-s2404a:/usr/src$ sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz

ekzorchik@srv-s2404a:/usr/src$ file asterisk-22-current.tar.gz

asterisk-22-current.tar.gz: gzip compressed data, was "asterisk-22.8.2.tar", last modified: Thu Feb  5 16:50:48 2026, from Unix, original size modulo 2^32 64225280

ekzorchik@srv-s2404a:/usr/src$ sudo tar zxf asterisk-22-current.tar.gz

ekzorchik@srv-s2404a:/usr/src$ cd asterisk-*/

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo contrib/scripts/get_mp3_source.sh

A    addons/mp3

A    addons/mp3/layer3.c

A    addons/mp3/interface.c

A    addons/mp3/MPGLIB_TODO

A    addons/mp3/mpg123.h

A    addons/mp3/mpglib.h

A    addons/mp3/decode_ntom.c

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

Exported revision 204.

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo contrib/scripts/install_prereq install

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo ./configure

На заметку: Важно чтобы терминал был разрешением не менее 80 на 21 иначе sudo make menuselect не запустится.

На заметку: Устанавливать буду пока только следующие звуковые форматы alau,ulaw,g722 (как всегда, если в процессе будут нужны другие, то я их до установлю, т.к. мой принцип лучше столкнуться с ошибкой и осознать, что нужно чем ставить все и вся)

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo make menuselect

  • Add-ons: отмечаю клавишей "ENTER" format_mp3
  • Applications: оставляю все по дефолту
  • Bridging Modules: оставляю все по дефолту
  • Call Detail Recording: оставляю все по дефолту
  • Channel Event Logging: оставляю все по дефолту
  • Channel Drivers: оставляю все по дефолту
  • Codec Translation: а вижу что уже все кодеки отмечены для установки, просто раньше их нужно было выбирать, оставляю все по дефолту, а именно: codec_a_mu,codec_adpcm,codec_alaw,codec_codec2,codec_g722,codec_g726,codec_gsm,codec_ilbc,codec_lpc10,codec_resample,codec_speex,codec_ulaw
  • Format Interpreters: оставляю все по дефолту
  • Dialplan Functions: оставляю все по дефолту
  • PBX Modules: оставляю все по дефолту
  • Resource Modules: оставляю все по дефолту, но пробегаюсь что есть дабы проверить что вот эти модули отмечены к установке
    • res_pjsip
    • res_pjsip_authenticator_digest
    • res_pjsip_endpoint_identifier_ip
    • res_pjsip_outbound_registration
  • Test Modules: оставляю все по дефолту
  • Alternate Channel Storage Backend: не отмечаю пока во всяком случае
  • Compiler Flags: не отмечаю пока во всяком случае
  • Utilities: не отмечаю пока во всяком случае
  • AGI Samples: не отмечаю пока во всяком случае
  • Core Sound Packages: отмечаю CORE-SOUNDS-EN-ULAW,CORE-SOUNDS-EN-ALAW,CORE-SOUNDS-EN-G722, CORE-SOUNDS-RU-ULAW,CORE-SOUNDS-RU-ALAW,CORE-SOUNDS-RU-G722
  • Music On Hold File Packages: отмечаю MOH-OPSOUND-ULAW,MOH-OPSOUNG-ALAW,MOH-OPSOUND-G722
  • Extras Sound Packages: отмечаю EXTRA-SOUNDS-EN-ULAW,EXTRA-SOUNDS-EN-ALAW,EXTRA-SOUNDS-EN-G722

И нажимаю "Save & Exit"

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo make -j$((`nproc`+1))

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo make install

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo make progdocs

Generating C-API documentation. This will take a while.

warning: Tag 'HTML_TIMESTAMP' at line 39 of file 'doc/Doxyfile' has become obsolete.

         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"

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

Generation complete. Any warnings are in ./doxygen.log.

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo make samples

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo make config

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ sudo ldconfig

ekzorchik@srv-s2404a:/usr/src/asterisk-22.8.2$ cd $HOME

ekzorchik@srv-s2404a:~$

Шаг №4: Изменяю работу сервиса Asterisk в сторону что его работа должна вестись не от имени суперпользователя root, а от специально созданного под этот сервис, в моем окружении именовать учетная запись будет, как Asterisk:

ekzorchik@srv-s2404a:~$ sudo groupadd asterisk

ekzorchik@srv-s2404a:~$ sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk

ekzorchik@srv-s2404a:~$ sudo usermod -aG audio,dialout asterisk

ekzorchik@srv-s2404a:~$ sudo chown -R asterisk.asterisk /etc/asterisk

chown: warning: '.' should be ':': ‘asterisk.asterisk’

ekzorchik@srv-s2404a:~$ sudo chown -R asterisk:asterisk /etc/asterisk

ekzorchik@srv-s2404a:~$ sudo chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk

ekzorchik@srv-s2404a:~$ sudo chown -R asterisk:asterisk /usr/lib/asterisk

ekzorchik@srv-s2404a:~$ sudo nano /etc/default/asterisk

AST_USER="asterisk"

AST_GROUP="asterisk"

ekzorchik@srv-s2404a:~$ sudo nano /etc/asterisk/asterisk.conf

runuser = asterisk              ; The user to run as.

rungroup = asterisk             ; The group to run as.

Шаг №5: Настал этап запуска развернутого сервиса Asterisk:

ekzorchik@srv-s2404a:~$ sudo systemctl enable asterisk

asterisk.service is not a native service, redirecting to systemd-sysv-install.

Executing: /usr/lib/systemd/systemd-sysv-install enable asterisk

ekzorchik@srv-s2404a:~$ sudo systemctl restart asterisk.service && sudo systemctl status asterisk.service | head -n5

● asterisk.service - LSB: Asterisk PBX

     Loaded: loaded (/etc/init.d/asterisk; generated)

     Active: active (running) since Thu 2026-03-05 09:08:35 MSK; 14ms ago

       Docs: man:systemd-sysv-generator(8)

    Process: 70455 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS)

ekzorchik@srv-s2404a:~$

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

ekzorchik@srv-s2404a:~$ sudo asterisk -rvv

Asterisk 22.8.2, Copyright (C) 1999 - 2025, 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 22.8.2 currently running on srv-s2404a (pid = 70470)

srv-s2404a*CLI> quit

Asterisk cleanly ending (0).

Executing last minute cleanups

ekzorchik@srv-s2404a:~$

Отлично, вроде как работает.

Шаг №6: Осталось проверить, если отправить систему Ubuntu 24.04 LTS Server в перезагрузку после поднимется ли сервис Asterisk:

ekzorchik@srv-s2404a:~$ sudo reboot

ekzorchik@srv-s2404a:~$ sudo systemctl status asterisk.service | head -n5

● asterisk.service - LSB: Asterisk PBX

     Loaded: loaded (/etc/init.d/asterisk; generated)

     Active: active (running) since Thu 2026-03-05 09:10:34 MSK; 17s ago

       Docs: man:systemd-sysv-generator(8)

    Process: 788 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS)

ekzorchik@srv-s2404a:~$ sudo netstat -tulpn | egrep asterisk

udp        0      0 0.0.0.0:4520            0.0.0.0:*                           814/asterisk

udp        0      0 0.0.0.0:4569            0.0.0.0:*                           814/asterisk

udp        0      0 0.0.0.0:5000            0.0.0.0:*                           814/asterisk

udp        0      0 0.0.0.0:60618           0.0.0.0:*                           814/asterisk

udp6       0      0 :::43222                :::*                                814/asterisk

ekzorchik@srv-s2404a:~$

Ну пока делаю вывод, что сервис после перезагрузки поднимается, порты ожидают подключения. Что ж будет приобщаться к использованию Asterisk 22 отталкиваясь от текущей заметки строя новые.

На этом заметка завершена, с уважением автор блога ekzorchik, продолжение следует.