Сейчас разберем, как на смартфон Honor 9X установить SoftPhone в лице приложения GS Wave, как произвести настройку на собственный сервис телефонии на базе связки Ubuntu 22.04 Server + Asterisk 16.9.0, какие нюансы подключения, ошибки на консоли и все это в шагах от и до.
Шаг №1: Домашняя АТС на базе Asterisk 16.9.0 развернута, как контейнер виртуальной машины на базе Debian 10 + Proxmox 6.4-13, а операционная система — это Ubuntu 22.04 Server опираясь на заметку: "Поднимаем дома Asterisk 16 на Ubuntu 22.04 Server"
Шаг №2: Адрес домашней АТС следующие и данные внутреннего номера (см. sip.conf из "Шаг №1" заметки "Поднимаем дома Asterisk 16 на Ubuntu 22.04 Server")
Hostname: 172.33.33.117Login: 1001Pass: Aa1234567
Шаг №3: Скачиваем и устанавливаем на смартфон Honor 9X приложение GS Wave.
ekzorchik@ekzorchik:~$ sudo mkdir /var/www/html/voip/out
https://voip.ekzorchik.ru/out/GSWave1_0_3_34.apk
Шаг №4: Сейчас попробуем подключить смартфон Honor 9X к домашней АТС, только разберем вот такую вот схему, у меня смартфон подключается к домашней сети через OpenVPN, но в таком случае он получает IP-адрес из сети 10.9.0.0/24, а потому в консоли Asterisk version 16 получаю уведомления что искомый адрес телефона не включен в разрешающие на подключение к сервису телефонии:
Приложение GS Wave - Параметры - Параметры аккаунта — и нажимаю "+" — выбираю SIP Аккаунт
Активный аккаунт: +Имя аккаунта: 1001SIP-сервер: 172.33.33.7ID пользователя SIP: 1001Аутентификационный идентификатор SIP: 1001Пароль: Aa1234567Отображаемое Имя: 1001
и нажимаю "Галочка" в верхнем правом углу.
После в настройках аккаунта с именем 1001
Активный аккаунт: Включено изменяю на Выключено и снова на включено
после в открытой консоли Asterisk вижу, что пытается выполнится аутентификация из сети 10.9.0., а точнее с полученного IP-адреса смартфоном: 10.9.0.10, но она не проходит, т.к. в sip.conf директива permit не предопределена для этой сети.
ekzorchik@srv-pbx:~$ sudo asterisk -rvvv 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 = 696) [Feb 12 13:38:16] NOTICE[758]: acl.c:783 ast_apply_acl_internal: SIP Peer ACL: Rejecting '10.9.0.10' due to a failure to pass ACL '(BASELINE)' [Feb 12 13:38:16] NOTICE[758]: chan_sip.c:29029 handle_request_register: Registration from '<sip:1001@172.33.33.117>' failed for '10.9.0.10:21954' - Device does not match ACL [Feb 12 13:38:16] NOTICE[758]: acl.c:783 ast_apply_acl_internal: SIP Peer ACL: Rejecting '10.9.0.10' due to a failure to pass ACL '(BASELINE)' [Feb 12 13:38:16] NOTICE[758]: chan_sip.c:29029 handle_request_register: Registration from '<sip:1001@172.33.33.117>' failed for '10.9.0.10:21954' - Device does not match ACL [Feb 12 13:38:16] NOTICE[758]: acl.c:783 ast_apply_acl_internal: SIP Peer ACL: Rejecting '10.9.0.10' due to a failure to pass ACL '(BASELINE)' [Feb 12 13:38:16] NOTICE[758]: chan_sip.c:29029 handle_request_register: Registration from '<sip:1001@172.33.33.117>' failed for '10.9.0.10:21954' - Device does not match ACL srv-pbx*CLI> srv-pbx*CLI> quit Asterisk cleanly ending (0). Executing last minute cleanups ekzorchik@srv-pbx:~$ а доступ с каких сетей разрешено подключаться обозначен: ekzorchik@srv-pbx:~$ sudo nano /etc/asterisk/sip.conf [authentication] ;Шаблон для внутренних номеров [internal_numbers](!) type=friend ;peer(Исходящие) и user(Входящие) в одном context=local ;Контекст обработки входящих вызовов host=dynamic nat=yes ;Политика работы через nat deny=0.0.0.0/0.0.0.0 ;Сети из которых запрещено подключение permit=172.33.33.0/255.255.255.0 ;Сети из которых разрешено подключение permit=10.9.0.0/255.255.255.0 ;Сеть OpenVPN 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
После нажимаем Ctrl + O, Enter - Ctrl + X (для выхода из редактора).
Т.е. в sip.conf мы добавили строку permit и только.
После перечитываем внесенные изменения Asterisk'ом:
ekzorchik@srv-pbx:~$ sudo asterisk -rx "sip reload"
Шаг №5: Возвращаемся к смартфону и в созданном аккаунте снова делаем:
После в настройках аккаунта с именем 1001
Активный аккаунт: Включено изменяю на Выключено и снова на включено
Шаг №6: После в консоли Asterisk уже видим успешную регистрацию внутреннего номера 1001 на Asterisk 16.9.0:
ekzorchik@srv-pbx:~$ sudo asterisk -rvvv 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 = 696) -- Unregistered SIP '1001' -- Registered SIP '1001' at 10.9.0.10:10760 [Feb 12 13:48:03] NOTICE[758]: chan_sip.c:24984 handle_response_peerpoke: Peer '1001' is now Reachable. (55ms / 2000ms) srv-pbx*CLI>
Посмотрим с каких IP-адресов к Asterisk'ку выполнена успешная регистрация внутренних номеров:
srv-pbx*CLI> 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/1001 10.9.0.10 D Yes Yes A 10760 OK (55 ms) 2 sip peers [Monitored: 2 online, 0 offline Unmonitored: 0 online, 0 offline] srv-pbx*CLI>
Как видно из вывода, один и внутренней сети, а другой из сети OpenVPN.
Отлично.
Итого, я разобрал, как подключить с своей домашней АТС на базе связки Ubuntu 22.04 Server + Asterisk 16.9.0 из другой сети если другая сеть не предопределена в разрешенных сетях конфигурационного файла sip.conf. Это важно, т.к. если не используется шифрование подключения, то вот такие вот крайние меры обязательны, как по мне.
На этом пока заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.