Все же начинаю воплощать все свои задумки (у меня они перечислены в 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
получаю:
На заметку: Нужно всегда все задействованный файлы в настройках собирать себе чтобы не зависеть от путей интернета, т.к. другая сторона может в любой момент времени убрать ссылки.
Перешел в каталог: 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
Шаг №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
Произвожу настройку аккаунта с номером 1000
Нажимаю в правом верхнем углу программу MicroSIP
на стрелочку, направленную вниз — выбираю "Добавить аккаунт"
Название аккаунта: 1000
SIP сервер: 172.33.33.117
Имя пользователя: 1000
Домен: 172.33.33.117
Логин: 1000
Пароль: Aa1234567
Ваше имя: 1000
Шифрование медиа: Отключено
Транспорт: UDP
Публичный адрес: Авто
Обновление регистрации: 180
Keep-Alive: 15
и нажимаю "Сохранить"
Если все указано верно, то если посмотреть на сам SoftPhone
, то Вы увидите, что статус: "Онлайн"
Это говорит, что вы успешно произвели регистрацию 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.