Все же начинаю воплощать все свои задумки (у меня они перечислены в tips_theme_asterisk_v1.txt) по телефонии на базе Asterisk, нужно расширять свои навыки дабы быть более востребованным специалистом + это мое хобби: Изучать, документировать, применять, публиковать на своих ресурсах. Сегодня речь пойдет на тему, как поднимается Asterisk 16 последней версии на 12.02.2024 — это версия 16.9.0. Asterisk 16 версии будет установлен на Ubuntu 22.04 Server, как виртуальная машина под Debian 10 + Proxmox 6.4-13, использовать буду SIP-протокол, не PJSIP, т.к. в последствии хочу организовать себе домашнюю АТС на его основе для совершения звонков, голосового ассистента, запись входящего и исходящего трафика и т.д.

Схема будет следующей:

srv-proxmox

  • VM: srv-pbx
  • OS: Ubuntu 22.04 Server
  • Description: Asterisk 16 (SIP)

Шлюз для домашней сети на базе Mikrotik RB2011UiAs-2HnD

Шаг №1: На Ubuntu 22.04 Server изменяем hostname на srv-pbx

sudo nano /etc/hosts

127.0.0.1 localhost

127.0.1.1 srv-pbx

sudo nano /etc/hostname

srv-pbx

sudo nano /etc/netplan/00-installer-config.yaml

# This is the network config written by 'subiquity'

network:

  ethernets:

    ens18:

      dhcp4: true

  version: 2

sudo netplan generate

sudo netplan apply

Шаг №2: Обновляю систему до самого актуального состояния в рамках текущего LTS релиза:

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

[DEFAULT]

Prompt=never

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

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

sudo reboot

uname -a && lsb_release -a

Linux srv-vpn 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 22.04.3 LTS

Release:        22.04

Codename:       jammy

Шаг №3: Настройки Locale:

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

Шаг №4: Опираясь на заметку: "Поднимаем Asterisk 16 на Ubuntu 22.04 LTS Server" устанавливаю Asterisk 16, но опять ссылки не работают:

ekzorchik@srv-pbx:/usr/src$ sudo curl -O http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100   177  100   177    0     0    285      0 --:--:-- --:--:-- --:--:--   285

ekzorchik@srv-pbx:/usr/src$

ekzorchik@srv-pbx:/usr/src$ file asterisk-16-current.tar.gz

asterisk-16-current.tar.gz: HTML document, ASCII text, with CRLF line terminators

ekzorchik@srv-pbx:/usr/src$

Проверяю что могу через браузер обратиться к URL адресу:

http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

получаю:

Не отрабатывает ссылка на скачивание пакета Asterisk 16

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

Перешел в каталог: https://downloads.asterisk.org/pub/telephony/asterisk/ и в нем уже более нет пакет Asterisk 16.

Теперь ссылка на Asterisk самой последней версии из Asterisk 16 на 12.02.2024:

https://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-16.9.0.tar.gz

ekzorchik@srv-pbx:/usr/src$ sudo curl -O https://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-16.9.0.tar.gz

ekzorchik@srv-pbx:/usr/src$ file asterisk-16.9.0.tar.gz

asterisk-16.9.0.tar.gz: gzip compressed data, was "asterisk-16.9.0.tar", last modified: Thu Mar 12 14:45:34 2020, max compression, original size modulo 2^32 67440640

ekzorchik@srv-pbx:/usr/src$ sudo tar zxf asterisk-16.9.0.tar.gz

ekzorchik@srv-pbx:/usr/src$ cd asterisk-16.9.0/

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

ekzorchik@srv-pbx:/usr/src/asterisk-16.9.0$ sudo contrib/scripts/install_prereq install

ekzorchik@srv-pbx:/usr/src/asterisk-16.9.0$ sudo ./configure

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

На заметку: выбираю звуковые форматы WAV,ULAW,ALAW,G722 (если в процессе нужны будут другие, то до установлю, а то порой не понятно, что нужно и что не нужно, лучше столкнуться с ошибкой и осознать, что нужно так я считаю полезнее для изучения).

ekzorchik@srv-pbx:/usr/src/asterisk-16.9.0$ sudo make menuselect
  • Add-ons: отмечаю клавишей Enter format_mp3
  • Application: по умолчанию
  • Bridging Modules: по умолчанию
  • Call Detail Recording: по умолчанию
  • Channel Event Logging: по умолчанию
  • Channel Drivers: по умолчанию, за исключением снимаю отметку с chan_pjsip, т.к. я всю телефонию буду строить на chan_sip
  • Codec Translators: по умолчанию
  • Format Interpreters: по умолчанию
  • Dialplan Functions: по умолчанию
  • PBX Modules: по умолчанию
  • Resource Modules: по умолчанию
  • Test Modules: по умолчанию
  • Compiler Flags: по умолчанию
  • Voicemail Build Options: по умолчанию
  • Utilities: по умолчанию
  • AGI Samples: по умолчанию
  • Core Sound Packages: отмечаю CORE-SOUNDS-EN-{WAV,ULAW,ALAW,G722), CORE-SOUNDS-RU-{WAV,ULAW,ALAW,G722)
  • Music On Hold File Packages: отмечаю MOH-OPSOUND-{WAV,ULAW,ALAW,G722)
  • Extras Sound Packages: отмечаю EXTRA-SOUNDS-EN-{WAV,ULAW,ALAW,G722)

И нажимаю Save & Exit

sudo make -j$((`nproc`+1))

sudo make install

sudo make progdocs

sudo make samples

sudo make config

sudo ldconfig

cd $HOME

На заметку: если эту команду sudo make samples не указывать, то можно испугаться, т.к. в каталоге /etc/asterisk будет пусто.

А когда команда sudo make samples указана, то в каталоге /etc/asterisk

Примеры файлов в каталоге /etc/asterisk

Шаг №5: Далее применяем "Шаг №5" из заметки "Поднимаем Asterisk 16 на Ubuntu 22.04 LTS Server"

Шаг №6: Далее применяем "Шаг №6" из заметки "Поднимаем Asterisk 16 на Ubuntu 22.04 LTS Server"

ekzorchik@srv-pbx:~$ sudo netstat -tulpn | grep asterisk

tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN      824/asterisk

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

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

udp        0      0 0.0.0.0:57895           0.0.0.0:*                           824/asterisk

udp        0      0 0.0.0.0:2727            0.0.0.0:*                           824/asterisk

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

udp        0      0 0.0.0.0:5060            0.0.0.0:*                           824/asterisk

udp6       0      0 :::54704                :::*                                824/asterisk

ekzorchik@srv-pbx:~$

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

Asterisk 16.9.0, Copyright (C) 1999 - 2018, Digium, Inc. 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 16.9.0 currently running on srv-pbx (pid = 824)

srv-pbx*CLI> quit

Asterisk cleanly ending (0).

Executing last minute cleanups

ekzorchik@srv-pbx:~$

Итак, Asterisk 16.9.0 успешно установлен на Ubuntu 22.04 Server

Шаг №7: Создаю базовый собственный sip.conf:

ekzorchik@srv-pbx:~$ sudo mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup

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

[general]

allowguest=no                   ;Разрешить/Запретить гостевые подключения

alwaysauthreject=yes            ;Разрешить/Запретить отвечать на INVITE и REGISTER

allowoverlap=no                 ;Разрешить/Запретить набор по одной цифре

limitonpeers=yes                ;Разрешить/Запретить лимит на кол-во одновременных разговоров

language=ru                     ;локализация звуков

srvlookup=yes                   ;Принимать SIP вызовы на основании доменных имен

useragent=Asterisk ekz          ;Значение поля useragent в SIP заголовке

transport=udp



[authentication]

;Шаблон для внутренних номеров

[internal_numbers](!)

type=friend                     ;peer(Исходящие) и user(Входящие) в одном

context=local                   ;Контекст обработки входящих вызовов

host=dynamic

nat=yes                         ;Политика работы через nat

deny=0.0.0.0/0.0.0.0            ;Сети из которых запрещено подключение

permit=10.90.90.0/255.255.255.0 ;Сети из которых разрешено подключение

qualify=yes                     ;Переодическая проверка доступности клиента

canreinvite=no                  ;Разрешить/Запретить потоки peer-to-peer в обход сервера

insecure=port,invite            ;port (не требовать совпадения порта), invite (не требовать аутентификации)

callgroup=1                     ;группа вызова

pickupgroup=1                   ;группа перехвата вызовов

call-limit=2                    ;Лимит входящих вызовов

dtmfmode=rfc2833                ;Какую спецификацию использовать при передачи DTMF сигналов

disallow=all                    ;запретить использование всех кодеков, ниже разрешаем нужны

allow=alau

allow=ulaw

allow=g722



;Для Extensions с номером 1000 задейсвуем шаблон internal_numbers

[1000](internal_numbers)

callerid="Phone 1000"

secret=Aa1234567



;Для Extensions с номером 1001 задействуем шаблон internal_numbers

[1001](internal_numbers)

callerid="Phone 1001"

secret=Aa1234567

ekzorchik@srv-pbx:~$ sudo asterisk -rx "sip reload"

Список созданных номеров (sip show users):

ekzorchik@srv-pbx:~$ sudo asterisk -rx "sip show users"

Username                   Secret           Accountcode      Def.Context      ACL  Forcerport

1000                       Aa1234567                         local            Yes  Yes

1001                       Aa1234567                         local            Yes  Yes

ekzorchik@srv-pbx:~$

Шаг №8: Создаю базовый собственный extensions.conf:

ekzorchik@srv-pbx:~$ sudo mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup

ekzorchik@srv-pbx:~$ sudo nano /etc/asterisk/extensions.conf
[general]
[local]
include => default
[default]

;синтаксис: => имя(или номер),приоритет,приложение(команда), т. е.

exten => _1XXX,1,Dial(SIP/${EXTEN},,m)

ekzorchik@srv-pbx:~$ sudo asterisk -rx "dialplan reload"

Dialplan reloaded.

ekzorchik@srv-pbx:~$

Шаг №9: Настраиваю SoftPhone из сети 172.33.33.0/24 на SIP аккаунт 1000 и проверяю все ли успешно пройдет, будет ли выполнена регистрация Extensions 1000 на Asterisk

настраивать SoftPhone буду на Windows 10 Pro, а в роли программного телефона на системе выступит приложение MicroSIP.

Скачиваю с официального сайта, на момент данной заметки пакет: MicroSIP-3.21.3.exe

  • Please select a language: Русский

нажимаю "Далее", "Принимаю"

Выберите компоненты программы для установки:

  • MicroSIP (required): отмечаю галочкой
  • Desktop Shortcut: отмечаю галочкой
  • Run at System Startup: отмечаю галочкой
  • Links association: отмечаю галочкой

и нажимаю "Далее"

  • Папка установки: C:\Users\ekzorchik\AppData\Local\MicroSIP\

и нажимаю "Далее", "Установить"

  • Запустить MicroSIP: оставляю отмеченным галочкой

и нажимаю "Готово"

Вот так выглядит запущенный SoftPhone

Так выглядит в первый раз запущенный MicroSIP

Произвожу настройку аккаунта с номером 1000

Нажимаю в правом верхнем углу программу MicroSIP на стрелочку, направленную вниз — выбираю "Добавить аккаунт"

  • Название аккаунта: 1000
  • SIP сервер: 172.33.33.117
  • Имя пользователя: 1000
  • Домен: 172.33.33.117
  • Логин: 1000
  • Пароль: Aa1234567
  • Ваше имя: 1000
  • Шифрование медиа: Отключено
  • Транспорт: UDP
  • Публичный адрес: Авто
  • Обновление регистрации: 180
  • Keep-Alive: 15

и нажимаю "Сохранить"

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

Extensions с номером 1000 успешно зарегистрирован на Asterisk 16

Это говорит, что вы успешно произвели регистрацию SoftPhone на своем Asterisk, также можно проверить на самом Asterisk что выполнена регистрация:

ekzorchik@srv-pbx:~$ sudo asterisk -rx "sip show peers"

Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description

1000/1000                 172.33.33.143                            D  Yes        Yes         A  52029    OK (1 ms)          

1001                      (Unspecified)                            D  Yes        Yes         A  0        UNKNOWN            

2 sip peers [Monitored: 1 online, 1 offline Unmonitored: 0 online, 0 offline]

ekzorchik@srv-pbx:~$

Что по итогу, я развернул на своем тестовом стенде под управлением Debian 10 + Proxmox 6.4-13 операционную систему Ubuntu 22.04 Server и вогрузил на нее благодаря своим заметкам Asterisk последней версии в рамках релиза 16, т.е. 16.9.0. Просто хочу все таки собрать все свои наработки применительно к телефонии и оформить их для себя в виде пошаговых руководств и опубликовать на блоге https://voip.ekzorchik.ru + к этому, покуда есть время на работе его нужно посвятить самообразованию.

На этом заметка завершена, по мере необходимости она будет дополняться.

С уважением, автор блога Олло Александр aka ekzorchik.