Сейчас разберем, как на смартфон 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.117
  • Login: 1001
  • Pass: 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 Аккаунт

  • Активный аккаунт: +
  • Имя аккаунта: 1001
  • SIP-сервер: 172.33.33.7
  • ID пользователя 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.