Денис Здесенко
16.03.2020
35910

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

Введение. Итак, что же такое PjSIP? Это, по сути своей не протокол, как многие считают, а библиотека для работы со стеком протоколов, таких как непосредственно SIP, RTP, SDP, STUN и его модификаций TURN и ICE. В данной статье мы коснемся идеологии настройки PjSIP и проведем базовую конфигурацию. Идеология В идеологию библиотеки заложена модульность. Разберем, что […]

Введение.

Итак, что же такое PjSIP? Это, по сути своей не протокол, как многие считают, а библиотека для работы со стеком протоколов, таких как непосредственно SIP, RTP, SDP, STUN и его модификаций TURN и ICE. В данной статье мы коснемся идеологии настройки PjSIP и проведем базовую конфигурацию.

Идеология

В идеологию библиотеки заложена модульность. Разберем, что это означает. Конфигурационный файл библиотеки (pjsip.conf) разделен на секции, каждая секция определяет конфигурацию для объекта конфигурации res_pjsip. В большинстве своем имена секций, которые задаются в квадратных скобках могут быть произвольными, но есть исключение: имена типов ENDPOINT и AOR должны быть идентичны с заголовком SIP URI. Для каждой секции обязательна опция «type =», потому что в ней определяется назначение секции в конфигурации. Стоит перечислить возможные типы:

  • ENDPOINT
  • AOR
  • TRANSPORT
  • AUTH
  • REGISTRATION
  • DOMAIN_ALIAS
  • ACL
  • IDENTIFY
  • CONTACT
  • System
  • Global

А теперь пройдемся по каждому типу. Начнем с ENDPOINT – этом модуль, в котором описываются опции протокола SIP и взаимодействие с модулями AOR, AUTH и TRANSPORT. Можно сказать, что ENDPOINT это аналог пира в sip.conf. Количество опций для этой секции весьма обширно, впрочем, как и для остальных.

Важно помнить, что секция ENDPOINT обязательно должна быть связана с секцией AOR (одной или несколькими)!

Следующей секцией мы рассмотрим TRANSPORT. В ней описывается использование протоколов транспортного уровня, веб-сокеты и методы шифрования. Можно использовать как одну секцию для множества эндпоинтов, так и сконфигурить уникальную секцию для одной конкретной конечной точки (ENDPOINT). Что-то вроде аналога раздела general в sip.conf.

В данной секции присутствует параметр allow_reload= (по умолчанию значение — false), он отвечает за необходимость перезапуска Asterisk для применения изменения конфигураций транспорта. Если опция принимает значение yes – достаточно будет просто перечитать конфиг.

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

REGISTRATION – ну тут все итак понятно, в этой секции прописываются опции отвечающие за исходящие регистрации, например транк от провайдера. А вот в модуле AUTH ассоциируются между собой эндпоинты и регистрации.

В DOMAIN_ALIAS прописываются псевдонимы домена. IDENTIFY – секция в которой задается определенный ip-адрес эндпоинту, если это необходимо. CONTACT используется для того, чтобы не приходилось явно указывать SIP URI в диалплане.

Секция ACL используется res_pjsip для контроля всех входящих соединений SIP (аналог permit/deny в sip.conf).

Отдельно нужно выделть секции System и Global в которых определяются глобальные опции, такие как, например, включение/выключение дебага, использование коротких SIP заголовков и многие другие.

PjSIP Configuration Wizard

PJSIP Configuration Wizard – это фича Астериска (начиная с версии 13.2.0) разработанная для упрощения настройки стандартных сценариев (например настройка транка), использующих базовые объекты chan_pjsip, предоставляя единственный объект «wizard».

В качестве примера рассмотрим itcp-сценарий:

ITCP-сценарий в pjsip.conf
ITCP-сценарий в pjsip.conf

А вот тоже самое, но уже с использованием Configuration Wizard’a:

ITCP-сценарий в pjsip_wizard.conf
ITCP-сценарий в pjsip_wizard.conf

В обоих случаях получаем одинаковый результат. Фактически, wizard создает «за кадром» стандартные объекты chan_pjsip:

  • Конечная точка и aor создаются с тем же именем, что и визард
  • К ним добавляются параметры endpoint/context и aor/qualify_fequency
  • Контакт для aor создается для каждого удаленного хоста
  • send_auth = yes вызывает создание объекта аутентификации
  • outbound_auth/username и outbound_auth/password добавляются к нему
  • Строка outbound_auth добавляется в endpoint
  • send_registrations = yes вызывает создание объекта регистрации
  • Строка outbound_auth добавляется к регистрации
  • Server_uri и client_uri создаются с использованием удаленного хоста и имени пользователя
  • Идентификационный объект создается, и для каждого удаленного хоста добавляется соответствие

Так же можно в качестве примера рассмотреть создание транка без регистрации с помощью визарда:

Транк без регистрации с помощью wizard
Транк без регистрации с помощью wizard

Стоит отметить, что в данном случае все параметры «sends_» и «accepts_» будут иметь значения по умолчанию «no», поэтому их даже не нужно указывать, если только мы не планируем в шаблоне указать их как «yes».

Базовая конфигурация на примере транка с регистрацией и эндпоинта

Итак, самое время перейти к небольшой практической задаче, а точнее к двум:

Первая — настроить SIP-транк с исходящей регистрацией. Делается это следующим образом:

Транк с исходящей регистрацией в pjsip.conf
Транк с исходящей регистрацией в pjsip.conf

Далее переходим ко второй задаче – создаем два эндпоинта с номерами 101 и 102 и готовим их к работе. Идентефикация у них происходит по юзернэйму/паролю, 101й регистрируется с динамического ip-адреса, а для 102го мы задали статический 192.168.32.109

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