Подключение к провайдеру с регистрацией и без по PJSIP
Как подключить провайдера по PJSIP с регистрацией или без неё? На этот вопрос я дам ответ в статье на примере подключения к популярным провайдерам. Статья входит в цикл статей по PJSIP: Установка Asterisk 16 на centos 8 TLS SRTP для драйвера PJSIP в Asterisk 15 Pjsip. Базовая настройка. Идеология настройки. Описание параметров конфигурации PJSIP в […]
Как подключить провайдера по PJSIP с регистрацией или без неё? На этот вопрос я дам ответ в статье на примере подключения к популярным провайдерам.
Статья входит в цикл статей по PJSIP:
Установка Asterisk 16 на centos 8
TLS SRTP для драйвера PJSIP в Asterisk 15
Pjsip. Базовая настройка. Идеология настройки.
Описание параметров конфигурации PJSIP в Asterisk с
примерами
Работа PJSIP за NAT
Вопросы безопасности канала PJSIP в Asterisk
Настройка realtime для PJSIP на Centos 7
Раскрывать секреты подключения транков по PJSIP будем на FreePBX Distro 15 с Asterisk 16.
Транк в Asterisk настраивается в текстовом файле /etc/asterisk/pjsip.conf , который внутри поделён на так называемые секции. В FreePBX pjsip.conf разделён на отдельные файлы по основным секциям через опцию include. Для подключения к провайдеру нужно прописать настройки в секциях transports, endpoint, aor, auth, registration, identify.
Начнём с transports
Она отвечает за то по какому протоколу будет осуществляться подключение доступные UDP, TCP, WebSockets (WS, WSS) и методы шифрования TLS/SSL.
В FreePBX настройка производится в settings — Asterisk SIP settings — SIP Settings [chan_pjsip]
Есть важное ограничение при создание секций транспорта:
Они не могут использовать одну и ту же комбинацию IP + порт или IP + протокол. То есть каждая секция, которая связывается с тем же IP-адресом, что и другая, должна использовать отличный порт или протокол.
При изменение настроек протоколов для их применения необходимо перезагрузить Asterisk. Можно обойтись и без перезагрузки если выставить опцию на транспорте allow_reload=yes, однако он приводит к сбросу вызова и еще ряду проблем.
Сделать это лучше через консоль :
systemctl stop asterisk — останавливаем asterisk
systemctl status asterisk — проверяем его статус
systemctl start asterisk — запускаем asterisk
systemctl status asterisk — проверяем что он запустился
Можно перезагрузить и через интерфейс CLI командой
freepbx*CLI> core restart now
Чтобы войти в интерфейс CLI на сервере введите
asterisk -r
Посмотрим в CLI изменился ли транспорт для этого вводим команду
freepbx*CLI> pjsip show transports
Файл pjsip.transports.conf который был автоматически сгенерирован FreePBX, имеет теперь вот такую секцию транспорт
[0.0.0.0-tcp]
type=transport
protocol=tcp
bind=0.0.0.0:5060
external_media_address=98.76.54.321
external_signaling_address=98.76.54.321
allow_reload=no
tos=cs3
cos=3
local_net=192.168.32.0/24
external_media_address — указывает внешний ip-адрес АТС при нахождении ее за NAT для RTP протокола
external_signaling_address — указывает внешний ip-адрес АТС при нахождении ее за NAT для SIP сигнализации
Транспортный протокол задан можно переходить к созданию транка. Создадим его в веб-интерфейсе FreePBX, а затем посмотрим что там произошло в файлах.
Итак в браузере открываем веб-интерфейс нашей станции.
Если вы не знаете как перейти на веб-интерфейс, то окно приветствия вам напомнит.
Переходим Connectivity — Trunks
На странице Trunk жмём кнопку Add Trunk — Add SIP (chan_pjsip) Trunk
Подключение к оператору Zadarma
Откроется окно Add Trunk вкладка General.
Заполняем:
- Trunk Name – Имя транка (обычно <название оператора>_<номер транка>) может быть любым
- Hide CallerID – спрятать CID при исходящем вызове.
- Outbound CallerID – CallerID для исходящего вызова.
- CID Options – определяет какие CID будут разрешены в этом транке – разрешить все, запретить иностранные и т.д.
- Maximum Channels – максимальное количество одновременных исходящих вызовов для этого транка. Пустое значение без ограничений.
- Asterisk Trunk Dial Options – параметры команды Dial, которые будут использоваться при вызове этого транка. Для переопределения параметров по умолчанию, установите флажок в значение «Override», а затем обратно
- Continue if Busy – если Yes перенаправляет вызов на следующий транк даже если канал сообщает «BUSY» или «INVALID NUMBER».
- Disable Trunk – отключает транк.
- Monitor Trunk Failures – если установлен параметр в значение Yes, возможно указать пользовательский сценарий AGI, который будет вызываться для отчетов, журналов, электронной почты или других действий при падении транка или в случаях таких ошибок как NOANSWER, CANCEL.
Я заполнил только название транка, т.к. на этом транке Outbound CallerID будет заменен оператором на иной, а остальные опции мне не нужны.
Переходим к вкладке pjsip Settings, в ней ещё 3 подвкладки General, Advanced, Codecs. Идём по порядку General в ней указываем:
- Username – сюда указываем тот логин что выдает оператор
- Secret – пароль выданный оператором для этого транка
- Authentication – тип аутентификации обычно Outbound, меняйте только если этого требует оператор. Если вы выберете «None», все вызовы с или на указанный SIP-сервер не проходят аутентификации. Установка «None» может быть небезопасной!
- Registration – как регистрируемся на сервере оператора и нужно ли его регистрировать. Обычно операторы не отвечают на наш запрос о регистрации, так что оставляйте Send. Если только оператор не требует иного.
- Language Code – язык для стандартных голосовых подсказок.
- SIP Server – SIP адрес оператора, обычно выдается вместе с логином и паролем
- SIP Server Port – SIP порт сервера
- Context – контекст для входящего звонка
- Transport – выбираем транспортный протокол, из тех что мы задали ранее.
Подвкладка Advanced здесь много настроек не бойтесь, нам нужны не все, а только вот такие:
- Contact User – сюда указываем тот логин что выдает оператор
- From Domain – имя домена, используемое в заголовке поля From в запросах к этому транку.
- From User – всё тот же логин, что выдаёт провайдер.
- Client URI – URI SIP-клиента, используемый при попытке исходящей регистрации. Этот параметр автоматически генерируется УАТС, если оставить его пустым. Формат: sip:[username]@[ip]:[port].
- Server URI – URI SIP-сервера регистрации. Этот параметр генерируется автоматически, если оставить его пустым. Формат: sip:[username]@[ip]:[port].
- AOR Contact – Постоянный контакт AoR для регистрации endpoint.
Support Path – Если этот параметр включен, исходящие запросы REGISTER объявят о поддержке заголовка, чтобы промежуточные прокси-сервера могли добавлять их в свои заголовки по необходимости.
В подвкладке Codecs по умолчанию стоят кодеки ulaw и alaw т.к. их поддерживают большинство (если не все) IP-телефонов и софтфонов оставим без изменения.
Жмём Submit , затем Apply Config.
Проверим подключился ли транк. Можно перейдя нажав вверху вкладку Reports — Asterisk info. Либо через интерфейс CLI командой
freepbx*CLI> pjsip show registrations
Если вы не видите заветного Registered
- Перезагрузите Asterisk через консоль ещё разок.
- Проверьте правильно ли заполнены поля настроек транка и нету ли там ошибок. Не тот пароль, лишний символ в названии, пробел в домене и т.п.
- Посмотрите свой Firewall, как на сервере так и на роутере, разрешен ли на нём домен, IP-адрес, порт до оператора и обратно.
- Если и это не помогает смотрите на нашем сайте статьи по траблшутингу — Оперативная диагностика SIP в консоли Asterisk каналы PJSIP и CHAN_SIP
Ну вот можно теперь можно посмотреть как наш транк сконфигурирован в файлах.
Файл pjsip.registration.conf отвечает за исходящую регистрацию
[Zadarma]
type=registration
transport=0.0.0.0-tcp
outbound_auth=Zadarma
retry_interval=60
fatal_retry_interval=30
forbidden_retry_interval=30
max_retries=10000
expiration=3600
line=yes
endpoint=Zadarma
auth_rejection_permanent=no
contact_user=691515
server_uri=sip:sip.zadarma.com
client_uri=sip:[email protected]
Файл pjsip.auth.conf отвечает за аутентификацию содержит в себе опции и полномочия для входящих и исходящих регистрации. Разные endpoint и registrations могут использовать одну и ту же секцию auth.
[Zadarma]
type=auth
auth_type=userpass
password=PassWord0123
username=691515
Файл pjsip.aor.conf определяет как Asterisk будет связываться с endpoint. Если не задана секция AOR Asterisk не сможет подключиться к точкам будь то телефон или транк.
[Zadarma]
type=aor
qualify_frequency=60
contact=sip:sip.zadarma.com
Файл pjsip.endpoint.conf определяет многочисленные параметры SIP , а также связь с такими секциями как auth, aor, transport.
[Zadarma]
type=endpoint
transport=0.0.0.0-tcp
context=from-pstn
disallow=all
allow=ulaw,alaw
aors=Zadarma
send_connected_line=false
language=ru
outbound_auth=Zadarma
from_domain=sip.zadarma.com
from_user=691515
contact_user=691515
user_eq_phone=no
t38_udptl=no
t38_udptl_ec=none
fax_detect=no
trust_id_inbound=no
t38_udptl_nat=no
direct_media=no
rtp_symmetric=yes
dtmf_mode=auto
Файл pjsip.identify.conf определяет endpoint с помощью IP-адреса источника.
[Zadarma]
type=identify
endpoint=Zadarma
match=sip.zadarma.com
Если сейчас попробовать сделать звонок на
ATC скорее всего ничего не получится. Так-как нужно настроить входящие и
исходящие маршруты, а также подключить абонентов.
Настройка и управление исходящей маршрутизации во FreePBX
13
Настройка и управление входящей маршрутизации во FreePBX 13 — Voxlink
Подключение к оператору Zadarma по IP адресу
Теперь подключим zadarma с авторизацией по IP адресу. Для этого у вас Asterisk должен быть на “белом” IP адресе. И сделать соответствующие настройки в личном кабинете Zadarma.
В личном кабинете, в разделе «Настройки — Подключение по SIP» внизу страницы нажмите «Добавить SIP-транк».
Укажите название для SIP-транка и выберите один из существующих сип-логинов, он будет идентификатором SIP-транка и станет недоступен для регистрации(приема входящих звонков).
Добавьте ваш статический IP адрес или несколько IP адресов (Например если к вашей АТС подведен основной интернет-канал и резервный).
Теперь создаём новый либо редактируем уже существующий (как в моём случае).
Открываем Connectivity — Trunks — <ваш транк> — pjsip Settings
Подвкладка General
Включаем в Authentication и Registration значение None.
SIP Server sip.zadarma.com
Подвкладка Advanced
Так как регистрируемся по IP адресу нам понадобятся указать для endpoint From Domain, для AOR указать contact и для секции identify match в которой будут сравниваться IP адреса. Zadarma указывает, что для подключения по IP-адресу нужны следующие сравнения.
match=sip.zadarma.com
match=sipurifr.zadarma.com
match=sipurims.zadarma.com
match=sipuriny.zadarma.com
Указываем их через запятую.
После сохранения настроек необходимо позвонить на номер 8888 с этого транка для подтверждения нашего IP-адреса.
В конфигурационных файлах на сервере по этому транку секции должны быть в aor, endpoint и identify.
[Zadarma]
type=aor
qualify_frequency=60
contact=sip:sip.zadarma.com
[Zadarma]
type=endpoint
transport=0.0.0.0-tcp
context=from-pstn
disallow=all
allow=ulaw,alaw
aors=Zadarma
send_connected_line=false
language=ru
from_domain=sip.zadarma.com
user_eq_phone=no
t38_udptl=no
t38_udptl_ec=none
fax_detect=no
trust_id_inbound=no
t38_udptl_nat=no
direct_media=no
rtp_symmetric=yes
dtmf_mode=auto
[Zadarma]
type=identify
endpoint=Zadarma
match=sipurifr.zadarma.com,sipurims.zadarma.com,sipuriny.zadarma.com
Подключение к оператору MSM.ru
Оператор нам выдал следующие данные
логин: 1077077
пароль: password123
домен для подключения: sip.ipport.net
порт стандартный 5060
Добавляем новый транк Connectivity — Trunks — <ваш транк> — pjsip Settings
Даем имя нашему транку в Trunk Name: MSM.ru
Открываем pjsip Settings, подвкладка General здесь всё как и для Zadarma см.в.
Username: 1044077
Secret: password123
Authentication: Outbound
Registration: Send
SIP Server: sip.ipport.net
SIP Server Port: 5060
Двигаемся дальше Advanced.
Contact User: 1044077
From Domain: sip.ipport.net
From User: 1044077
Client URI: sip:[email protected]
Server URI: sip:sip.ipport.net
AOR Contact: sip:sip.ipport.net
Сохраняем, а затем и применяем настройки.
Проверим подключился ли транк.
Подключение к оператору Mango Office
У нас есть:
Строка регистрации выданная оператором
hrid:[email protected]
Отлично всё что нужно одной строкой.
Поясню hrid это логин. символы после “:” двоеточия и до “@” это пароль, домен вполне очевиден braslet24.mangosip.ru
По привычному маршруту заходим в Connectivity — Trunks — Add Trunk — Add SIP (chan_pjsip) Trunk
Задаём название транку и открываем pjsip Settings.
Заполняем:
Username: hrid
Secret: password123
Authentication: Outbound
Registration: Send
SIP Server: braslet24.mangosip.ru
SIP Server Port: 5060
Подвкладка Advanced заполняем:
Contact User: hrid
From Domain: braslet24.mangosip.ru
From User: hrid
Client URI: sip:[email protected]
Server URI: sip:braslet24.mangosip.ru
AOR Contact: sip:braslet24.mangosip.ru
Проверяем регистрацию.
Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Просто потрясающее объяснение! Спасибо большое! Наконец-то решил свою проблему.
Очень доступно, спасибо. Но есть вопрос.
Если оператор для регистрации выделяет порт не 5060, а например 5061, то как быть? Транспорт же указан 0.0.0.0:5060. И в браузер для pjsip вроде бы нет возможности добавить ещё один транспорт.
Добрый день, транспорт на Вашей АТС, это то, что вы слушаете (Bind Port). Если провайдер указал порт 5061, то его нужно указать в настройках транка к нему (SIP Server Port).