Задача: Разворачиваю собственный сервис телефонии на базе Asterisk под Ubuntu 18.04 Server amd64

В виду того факта, то работа моей домашней АТС на базе Asterisk с использованием SIP транка от Мультифон желает лучшего, я принял решение перейти на сервис от Zadarma. И пока не жалею об этом, плюс прокачиваю дополнительные навыки и оформляю, как заметки интересующие меня вещи по части конфигурирования.

Отправная точка эта заметка: tips_ubuntu_18_04_asterisk_v1.odt

ekzorchik@srv-bionic:~$ sudo asterisk -rx "core show version"

Asterisk 15.7.1 built by root @ srv-bionic on a x86_64 running Linux on 2019-01-06 12:04:30 UTC

Далее в личном кабинете https://my.zadarma.com

  • Login: <LOGIN>
  • Pass: <PASSWORD>

Настройки — SIP настройки, получаю необходимые аутентификационные данные.

  • Сервер: sip.zadarma.com
  • Login: <LOGIN_SIP>
  • Pass: <PASSWORD_SIP>
  • Отображаемое имя: zadarma
  • CallerID: +74996775464 (номер купленный)
ekzorchik@srv-bionic:~$ sudo mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup

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

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

[general]

srvlookup=yes

[<LOGIN_SIP>]

host=sip.zadarma.com

;invite → Не требовать аутентификации входящих сообщений INVITE

; port → разрешить проверку соответствия пира по ip-адреса без проверки соответствия номера порта

insecure=invite,port

type=friend

fromdomain=sip.zadarma.com

disallow=all

allow=alaw

allow=ulaw

dtmfmode=auto

secret=<PASSWORD_SIP>

username=<LOGIN_SIP>

trunkname=<LOGIN_SIP>

fromuser=<LOGIN_SIP>

callbackextension=<LOGIN_SIP>

context=zadarma-incoming

qualify=400

directmedia=no

nat=force_rport,comedia

[zadarma-sip](!)

host=dynamic

type=friend

srvlookup=yes

context=phones

[1002](zadarma-sip)

username=1002

secret=pbx1002

[1003](zadarma-sip)

username=1003

secret=pbx1003

Теперь настроим правила набора звонков:

ekzorchik@srv-bionic:~$ sudo nano /etc/asterisk/extensions.conf

[general]

[globals]

[default]

;Вешаем трубку

[handup-sip]

exten => _X!,1,HangUp()

[zadarma-incoming]

;все входящие на транк <LOGIN_SIP> будут направлены на номер 1002

exten => <LOGIN_SIP>,Dial(SIP/1002)

;exten => 74996775464,1,Dial(SIP/1002)

[zadarma-outgoing]

;звонки на трехзначные номера через транк <LOGIN_SIP>

exten => _XXX,1,Dial(SIP/${EXTEN}@<LOGIN_SIP>)

;Номер для эхо-теста на сервис Zadarma

exten => 4444,1,Dial(SIP/${EXTEN}@<LOGIN_SIP>)

;Маска XXX. допускает любой набор — 8, 7 или +7.

;exten => _XXX.,1,Dial(SIP/${EXTEN}@<LOGIN_SIP>)

;звонки на оператора Megafon через транк <LOGIN_SIP>

;exten => _7926XXXXXXX,1,Dial(SIP/${EXTEN}@<LOGIN_SIP>)

;либо звонки которые провайдер SIP разрешает у себя

exten => _8XX.,1,Dial(SIP/7${EXTEN:1}@<LOGIN_SIP>)

exten => _7XX.,1,Dial(SIP/${EXTEN}@<LOGIN_SIP>)

exten => _+7X.,1,Dial(SIP/${EXTEN:1}@<LOGIN_SIP>)

include => handup-sip

[zadarma-local]

;звонки на четырехзначные внутренние номера asterisk

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

[test]

exten => 1111,1,Dial(SIP/${EXTEN}@<LOGIN_SIP>)

[phones]

include => zadarma-incoming

include => zadarma-local

include => zadarma-outgoing

include => test

На заметку: Для перезагрузки диалплана (extensions.conf)
ekzorchik@srv-bionic:~$ sudo asterisk -rx "dialplan reload"

ekzorchik@srv-bionic:~$ sudo systemctl restart asterisk && sudo systemctl status asterisk | head -n 5

● asterisk.service - LSB: Asterisk PBX

Loaded: loaded (/etc/init.d/asterisk; generated)

Active: active (exited) since Sun 2019-01-06 15:33:47 MSK; 30ms ago

Docs: man:systemd-sysv-generator(8)

Process: 2967 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS)

ekzorchik@srv-bionic:~$ sudo asterisk -rx "core reload"

ekzorchik@srv-bionic:~$ sudo asterisk -rx "sip show registry"

Host dnsmgr Username Refresh State Reg.Time

sip.zadarma.com:5060 N <LOGIN_SIP> 105 Registered Sun, 06 Jan 2019 15:41:03 1 SIP registrations.

Для безопасности с каких IP адресов провайдера Zadarma инициализировать подключение c моей сетью:

/ip firewall address-list

add address=185.45.152.0/24 list=zadarma

add address=185.45.155.0/24 list=zadarma

add address=37.139.38.0/24 list=zadarma

add address=195.122.19.0/27 list=zadarma

/ip firewall filter add action=accept chain=forward comment=SIP dst-address=172.33.33.25 dst-port=5060,10000-20000 log=yes log-prefix=_zadarma protocol=udp src-address-list=zadarma

После на смартфоне устанавливаю программу CsipSimple, включаю Wi-Fi и подключаюсь к собственной сети

На заметку: Аккаунт успешно зарегистрируется если в настройках программы отмечены галочки: CsipSimple — Настройки — Сеть -
  • (Входящие вызовы) Использовать WiFi
  • (Исходящие вызовы) Использовать WiFi

, далее регистрирую аккаунт на внутренний номер 1003 и проверяю звонком на номер 4444 с целью услышать эхо произносимого от сервиса Zadarma. Если звонок проходит и я слышу что говорю, то исходящие звонки отрабатывают согласно указанному в диалплане.

Задача выполнена. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.