Александр Михеенко
12.06.2020
52446

Соединение серверов Asterisk по PJSIP

Рассмотри подключение двух серверов с Asterisk по PJSIP Задача соединить два сервера с Asterisk по PJSIP с регистрацией без регистрации. У нас есть два сервера один с Asterisk 16, второй с Asterisk 13 расположены в одной локальной сети. Больше о PJSIP можно узнать из наших статей: Установка Asterisk 16 на centos 8 TLS SRTP для […]

Соединение серверов Asterisk по PJSIP

Рассмотри подключение двух серверов с Asterisk по PJSIP

Задача соединить два сервера с Asterisk по PJSIP с регистрацией без регистрации.

У нас есть два сервера один с Asterisk 16, второй с Asterisk 13 расположены в одной локальной сети.

Больше о PJSIP можно узнать из наших статей:

Установка Asterisk 16 на centos 8

TLS SRTP для драйвера PJSIP в Asterisk 15

Pjsip. Базовая настройка. Идеология настройки

Описание параметров конфигурации PJSIP в Asterisk с примерами

PJSIP: Подключение абонентов. Идеология конфига — Asterisk IP-телефония

Подключение к провайдеру с регистрацией и без по PJSIP — Asterisk IP-телефония

Работа PJSIP за NAT

Вопросы безопасности канала PJSIP в Asterisk

ZRTP по PJSIP для Asterisk? — Asterisk IP-телефонияНастройка realtime для PJSIP на Centos 7

Начнем с соединения серверов без регистрации.

Создаем на обоих серверах транк. Так как для такого подключения нам нет необходимости использовать логин и пароль настройки транков идентичны.

FreePBX вкладка настройки транка

Итак, в веб-интерфейсе FreePBX создаём транк, даём ему имя допустим server_1

открываем вкладку pjsip Settings — General

задаём опции Authentication и Registration как None

  • Authentication – тип аутентификации если «None», все вызовы с или на указанный SIP-сервер не проходят аутентификации.
  • Registration   – как регистрируемся на сервере оператора и нужно ли его регистрировать. Если «None»  то обычно подразумевается, что оба сервера имеют фиксированный ip-адрес и не требуется авторизация.
  • SIP Server указываем адрес сервера Asterisk к которому будем подключаться
  • SIP Server Port  – SIP порт сервера (можно не указывать, он будет использовать порт что установлен в transport)
FreePBX вкладка настройки транка pjsip Settings – General

Теперь, открываем Advanced прописываем ip-адрес второго Asterisk в опции From Domain. 

From Domain – имя домена, используемое в заголовке поля From в запросах к этому транку. Можно попробовать и без него жить, так как это поле меняет только заголовок в поле From, тут уже необходимо смотреть по ситуации.

FreePBX вкладка настройки транка pjsip Settings – Advanced

Сохраняем настройки транка и открываем Settings — Asterisk SIP Settings — General SIP Settings

Проверяем добавлена ли наша сетка в Local Networks, если у вас VPN-туннель его тоже нужно добавлять сюда.

FreePBX вкладка SIP Settings – General

Конфигурационные файлы на обоих серверах будут для такой регистрации одинаковы, за исключением конечно названий транка и ip-адреса. Для asterisk без FreePBX можно все эти файлы запихнуть в один pjsip.conf.

pjsip.transports.conf

[0.0.0.0-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
external_media_address=84.42.42.184
external_signaling_address=84.42.42.184
allow_reload=no
tos=cs3
cos=3
local_net=192.168.32.0/24

pjsip.aor.conf

[server_2]
type=aor
qualify_frequency=60
contact=sip:192.168.32.74

pjsip.auth.conf

[server_2]
type=auth
auth_type=userpass
password=
username=server_2

pjsip.identify.conf

[server_2]
type=identify
endpoint=server_2
match=192.168.32.74

pjsip.endpoint.conf

[server_2]
type=endpoint
transport=0.0.0.0-udp
context=from-pstn
disallow=all
allow=ulaw,alaw,gsm,g726,g722
aors=server_2
from_domain=192.168.32.74
direct_media=no
rtp_symmetric=yes
dtmf_mode=auto

Совершим тестовый звонок между станциями для абонентов [email protected] и [email protected]

Окно звонка в Sngrep

Такое подключение довольно простое, если сервера в одной локальной сети или соединены VPN-туннелем.

Соединение сервера Asterisk с использованием регистрации

Основная задача сделать так чтобы один сервер отправлял запрос на регистрацию, а другой её принимал.

Регистрирующим будет тот что живёт по ip 192.168.32.88 настроем его.

Создаём новый транк даём ему имя “priem” в настройках pjsip Settings — General делаем следующие манипуляции:

  • Secret: password123 — задаём пароль для транка лучше использовать символов на 16 с разным регистром и символами.
  • Authentication: Both — выбираем Both так как нам нужно и принимать, и отвечать, стоит заметить, что и с Inbound получилось поднять транк. 
  • Registration: Receive — если нужна регистрация выбираем Receive дословно переводится как “принимать”, что и соответствует его функции регистрировать другой сервер.
  • Context: from-pstn — выбираем в какой контекст будут отправлять ваши звонки с этого транка я оставил по умолчанию, так как мне нет необходимости делать другие маршруты, вы же смотрите по своим
  • Transport: 0.0.0.0-udp — так как у меня сервера в одной локальной сети, то вполне устроит протокол udp с портом 5060
FreePBX вкладка настройки транка pjsip Settings – General

Переходим теперь в настройках pjsip Settings —  Advanced тут можно оставить всё как есть и будет работать, но мы добавим в поле From Domain и AOR Contact ip-адрес регистрируемого сервера.

From Domain: 192.168.32.74

AOR Contact: sip:192.168.32.74 — Постоянный контакт AoR для регистрации endpoint. Он конечно может и автоматически задаваться FreePBX если оставить поле пустым, но пропишем его в явном виде.

На этом сервере с настройками всё, сохраняем применяем.

Отмечу что в поле регистрации на этом сервере этот транк не будет отображаться, так как Asterisk будет его воспринимать через endpoint. Соответственно смотреть его нужно в peers.
FreePBX вкладка Asterisk info

Конфигурационные файлы этого транка:

pjsip.aor.conf

[priem]
type=aor
qualify_frequency=60
max_contacts=1

pjsip.auth.conf

[priem]
type=auth
auth_type=userpass
password=password123
username=priem

pjsip.endpoint.conf

[priem]
type=endpoint
transport=0.0.0.0-udp
context=from-pstn
disallow=all
allow=ulaw,alaw,gsm,g726,g722
aors=priem
language=ru
outbound_auth=priem
auth=priem
from_domain=192.168.32.74
rtp_symmetric=yes
dtmf_mode=auto

Пришло время настроить второй сервер живёт он по ip-адресу 192.168.32.74.

Создаём транк обзываем его допустим “dacha”, потому что хочется на дачу к шашлычку.

В настройках транка pjsip Setting — General заполняем:

  • Username: priem — сюда вписываем имя, транка на втором сервере
  • Secret: password123 — пароль что задали на том сервере
  • Authentication: Outbound  — выбираем “исходящую” аутентификацию, как и при создании обычного транка. 
  • Registration: Send — “отправлять” регистрацию
  • SIP Server: 192.168.32.88 — адресс нашего регистрирующего сервера
  • SIP Server Port: — указываем если порт отличен от 5060
  • Context: from-pstn
  • Transport: 0.0.0.0-udp
FreePBX вкладка настройки транка pjsip Settings – General

Далее для работы транка необходимо заполнить опции в pjsip Setting — Advanced:

  • Contact User: priem– сюда указываем имя того пользователя к которому обращаемся в моём случае это priem
  • From Domain: 192.168.32.88– имя домена, используемое в заголовке поля From в запросах к этому транку,
  • From User: priem – имя пользователя для использования в заголовке From для запросов к этому транку
  • Client URI: sip:[email protected] – URI SIP-клиента, используемый при попытке исходящей регистрации. Этот параметр автоматически генерируется УАТС, если оставить его пустым. Формат: sip:[username]@[ip]:[port].
  • Server URI: sip:192.168.32.88 – URI SIP-сервера регистрации. Этот параметр генерируется автоматически, если оставить его пустым. Формат: sip:[username]@[ip]:[port].
  • AOR Contact: sip:192.168.32.88 – Постоянный контакт AoR для регистрации endpoint.
FreePBX вкладка настройки транка pjsip Settings – Advanced

Сохраняем применяем, смотрим регистрацию транка. В CLI интерфейсе

freepbx*CLI> pjsip show registrations

Интерфейс CLI команда проверки регистрации транка

Файлы конфигурации, которые использует этот транк:

pjsip.aor.conf

[dacha]
type=aor
qualify_frequency=3600
contact=sip:192.168.32.88

pjsip.auth.conf

[dacha]
type=auth
auth_type=userpass
password=password123
username=priem

pjsip.endpoint.con

[dacha]
type=endpoint
transport=0.0.0.0-udp
context=from-pstn
disallow=all
allow=ulaw,alaw
aors=dacha
send_connected_line=false
language=ru
outbound_auth=dacha
from_domain=192.168.32.88
from_user=priem
contact_user=priem
user_eq_phone=no
rtp_symmetric=yes
dtmf_mode=auto

pjsip.identify.conf

[dacha]
type=identify
endpoint=dacha
match=192.168.32.88

pjsip.registration.conf

[dacha]
type=registration
transport=0.0.0.0-udp
outbound_auth=dacha
retry_interval=60
fatal_retry_interval=30
forbidden_retry_interval=30
max_retries=10000
expiration=60
line=yes
endpoint=dacha
auth_rejection_permanent=no
contact_user=priem
server_uri=sip:192.168.32.88
client_uri=sip:[email protected]

Если посмотреть дамп пакеты вначале отбиваются, но при повторном запросе регистрация проходит.

Окно регистрации в Sngrep

Звонки, впрочем, чувствуют себя комфортно.

Окно звонка в Sngrep

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.