Все же начинаю воплощать все свои задумки (у меня они перечислены в 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.