Freepbx настройка транка sip дом ру

Обновлено: 03.07.2024

Как подключить провайдера по PJSIP с регистрацией или без неё? На этот вопрос я дам ответ в статье на примере подключения к популярным провайдерам. Статья входит в цикл статей по PJSIP: Установка Asterisk 16 на centos 8 TLS SRTP для драйвера PJSIP в Asterisk 15 Pjsip. Базовая настройка. Идеология настройки. Описание параметров конфигурации PJSIP в […]

Как подключить провайдера по PJSIP с регистрацией или без неё? На этот вопрос я дам ответ в статье на примере подключения к популярным провайдерам.

Статья входит в цикл статей по PJSIP:

Раскрывать секреты подключения транков по 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.

Есть важное ограничение при создание секций транспорта:

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

При изменение настроек протоколов для их применения необходимо перезагрузить Asterisk. Можно обойтись и без перезагрузки если выставить опцию на транспорте allow_reload=yes, однако он приводит к сбросу вызова и еще ряду проблем.

Сделать это лучше через консоль :

Можно перезагрузить и через интерфейс CLI командой

freepbx*CLI> core restart now

Чтобы войти в интерфейс CLI на сервере введите

Посмотрим в CLI изменился ли транспорт для этого вводим команду

freepbx*CLI> pjsip show transports

Файл pjsip.transports.conf который был автоматически сгенерирован FreePBX, имеет теперь вот такую секцию транспорт

Транспортный протокол задан можно переходить к созданию транка. Создадим его в веб-интерфейсе FreePBX, а затем посмотрим что там произошло в файлах.

Итак в браузере открываем веб-интерфейс нашей станции.

Если вы не знаете как перейти на веб-интерфейс, то окно приветствия вам напомнит.

Консольное окно сервера с FreePBX

Консольное окно сервера с FreePBX

Начальная страница в веб-интерфейсе FreePBX

Начальная страница в веб-интерфейсе FreePBX

Подключение к оператору 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 объявят о поддержке заголовка, чтобы промежуточные прокси-сервера могли добавлять их в свои заголовки по необходимости.

Вкладка Advanced в pjsip Setting

Вкладка Advanced в pjsip Setting

В подвкладке Codecs по умолчанию стоят кодеки ulaw и alaw т.к. их поддерживают большинство (если не все) IP-телефонов и софтфонов оставим без изменения.

Жмём Submit , затем Apply Config.

freepbx*CLI> pjsip show registrations

Если вы не видите заветного Registered

Ну вот можно теперь можно посмотреть как наш транк сконфигурирован в файлах.

Думаю, всем, кто столкнулся с настройкой транков от провайдеров телефонии Beeline и Domru будет полезна данная статья.

Сегодня опишу настройку транков от указанных провайдеров по протоколам sip и pjsip на примере FreePBX.

Не буду долго рассказывать, что и почему(не все моменты понятны мне самому), просто выложу настройки, скоторыми у меня всё заработало. (Мой сервер телефонии находится за NAT).

Билайн pjsip:

Настройки для pjsip:

На вкладке pjsip Settings—General:

Билайн Advanced:

Выделенное красным цветом необходимо, чтобы правильно определялся DID(у меня без этого в CDR на месте DID было просто буква s ).

Про кодеки говорить не буду(в основном, используются alaw&ulaw).

Beeline sip

Теперь настроим то же самое по протоколу sip:

На вкладке sip Settings в разделе Outgoing даем транку имя и указываем следующее:

В разделе Incoming имя и :

secret=password
type=user
context=from-trunk
qualify=yes

Недавно Билайн перешел на новую платформу, из-за чего поменялись некоторые настройки(в частности изменился домен регистрации). Ниже приложу скрины обновленных настроек для pjsip:

Вкладка «общие настройки»:

Вкладка «Расширенные настройки»:

Domru pjsip:

Настройки для pjsip:

Domru pjsip Settings:

Обратите внимание, что в отличии от Билайн, здесь CID и Username не совпадают.

Domru Advanced:

Domru sip:

Укажу сразу то, что находится в контекстах.

username=XXXXXXX
type=peer
secret=password
qualify=yes
nat=no
insecure=invite
host=188.187.240.27
fromuser=7831XXXXXXX
fromdomain=188.187.240.27
disallow=all
allow=alaw

type=friend
qualify=yes
permit=188.187.240.27
nat=no
insecure=port
host=188.187.240.27
disallow=all
directmedia=nonat
deny=0.0.0.0/0.0.0.0
context=from-trunk
allow=alaw

7831XXXXXXX:password:XXXXXXX@188.187.240.27:5060/8831XXXXXXX

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

Настройка транка DOMRU без авторизации

Ну и в завершение, несколько слов о настройке транка DOMRU без авторизации.

В моем случае схема выглядит так:

От провайдера приходит транк с несколькими номерами и все это дело настраивается через PPPoE соединение.

Для настройки PPPoE на сервере с астериском я использовал NetworkManager-tui. Также, потребовалось установить пакет NetworkManager-ppp. Настройка несложная, в псевдографическом интерфейсе. Указываем логин-пароль, методы аутентификации, настройки сети и маршруты.

Эта статья является этапом курса по настройке FreePBX 14:

Прежде всего в FreePBX 14 должен быть включен SRV Lookup. О том, как это сделать мы рассказывали в статье.

FreePBX 14 - настройка SIP транка

Исходные данные провайдера:

После этого переходим в раздел Connectivity → Trunks и нажимаем кнопку + Add Trunks . Из полученного списка следует выбрать + Add SIP (chan_sip) Trunk .


FreePBX 14 - настройка SIP транка

SIP-транк с регистрацией

General

FreePBX 14 - настройка SIP транка

Прежде всего приведем описание опций:

sip Settings

Прежде всего данная вкладка отвечает за исходящие и входящие вызовы.

Outgoing

Прежде всего настроим исходящие вызовы в PEER Details:

FreePBX 14 - настройка SIP транка

Incoming

Подобным образом настроим входящие вызовы.

USER Context

USER Details

Register String

Большинство VoIP-провайдеров требуют регистрацию на их платформе. Формат строки регистрации:

Многие провайдеры также требуют указание DID номера, следовательно строка регистрации будет иметь следующий вид:

FreePBX 14 - настройка SIP транка

Проверяем регистрацию в: Reports → Asterisk Info → Registries:

При использовании SIP-транка без регистрации (по IP), необходимо учитывать следующее:

Для создания SIP-транка в FreePBX 14 БЕЗ регистрации следует указывать только опции PEER (Outgoing):

FreePBX 14 SIP транк настроен. В заключении следует напомнить, что следующим этапом необходимо настроить правила маршрутизации (входящей/исходящей).

Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.

Помимо софтфона на компьютере, вы и ваши сотрудники можете принимать и совершать звонки с настольных телефонов.

Облачная АТС поддерживает работу с моделями популярных вендоров SIP-оборудования: AudioCodes, Yealink, Grandstream, Cisco/Linksys, D-Link, Panasonic, Escene, Aastra, Fanvil, Eltex и других.

Если у вас аналоговые телефоны, вы можете подключить их через VoIP-шлюз.

Настройка SIP-телефона

Настроить SIP-телефон достаточно просто и не требует специальных знаний. Выполните инструкции по установке телефона.

Для завершения настройки вам необходимо ввести 3 параметра: сервер, логин и пароль.

Где получить SIP-сервер, логин и пароль?

Данные параметры указываются при создании сотрудника. Пример:


Логин - это ivan.ivanov (обычно нужно вводить только то, что идет до @) Пароль - если установлен SIP-пароль, используйте его, в ином случае обычный пароль

Введите настройки телефона по этому образцу. Сохраните, настройка завершена и телефон должен зарегистрироваться.

Обратите внимание! Если вы уже создали сотрудника, но не помните его пароль, то его можно только изменить через редактирование сотрудника. Если вы измените пароль, который уже используется в каких-либо устройствах (например, в софтфоне), то при изменении софтфон перестанет работать и затребует ввода нового пароля. Будьте внимательны при смене пароля.

Настройка VoIP-шлюза

Также вы можете использовать и обычные настольные аналоговые телефоны, нужно лишь подключить их через специальный VoIP-шлюз. Настройка портов VoIP-шлюза производится аналогично настройке SIP-телефонов. Если в вашей компании ранее использовалась офисная АТС, вы можете переключить провода телефонов от АТС в VoIP-шлюз, после этого сотрудники будут работать в Облачной АТС с привычными телефонными аппаратами.

Готовые инструкции для моделей: .

Нюансы работы

Все телефоны поддерживают весь функционал Облачной АТС. Вы можете переводить и удерживать звонки. Звонки записываются при включенной опции «Запись звонков».

Тонкая настройка и возможные проблемы

На оборудовании должны быть выключены опции STUN, NAT Traversal, прокси-серверы.

В настройках вашего роутера должна быть выключена опция SIP ALG.

Кодеки: если есть возможность, указать приоритет использования: PCMA (G711a, G711 a-law), PCMU (G711u, G711 u-law), G729, RTP Packet size (время пакетизации) 20 мс.

Необходимо обеспечить обмен трафика для подсетей 5.3.4.128/26 и 5.3.4.64/27 и для IP-адресов 188.186.156.128/26 и 188.186.157.64/27 , а также разрешить порты TCP (80, 443, 8080, 5060, 5061, 30000 - 65535) и UDP (5060, 30000-65535) .

Для совершения исходящих звонков необходим интернет со статическим IP адресом. Информацию о IP адресе, с которого будут совершаться звонки, необходимо передать персональному менеджеру.

freepbx13-sip-trunk-general

Определяет основные параметры SIP транка:

Trunk name

Имя транка для веб интерфейса. Сугубо описательное значение, для идентификации транка в веб интерфейсе FreePBX. Не используется непосредственно для вызовов. Назначьте удобное для вас имя, для легкого распознавания среди других транков.

Hide CallerID

Не сообщать удаленной стороне исходящий CallerID.
В большинстве случаев требуется передавать CallerID, но если вдруг понадобиться…
Yes No

Outbound CallerID

Задайте исходящий CallerID для данного транка. Во FreePBX Outbound CallerID может быть задан или модифицирован, в нескольких местах по пути обработки исходящего вызова.

Outbound CallerID екстеншена. Когда внутренний номер инициирует вызов, если задан параметр Outbound CallerID для этого екстеншена, он используется как исходящий CID. Далее вызов обрабатывается в Outbound Routes. Если параметр Override Extension = No (по умолчанию), исходящий CID ектеншена, используется и далее. Затем вызов попадает в транк, если CID Options = Allow Any CID, то Outbound CalleID екстеншена, используется для данного вызова, через транк.

CID Options

Но если выбрано другое значение CID Options, то Outbound CallerID внутреннего номера, или переназначенный в Outbound Routes, может быть модифицирован одним из перечисленных ниже значений в настройках транка.

Allow Any CID - пропускать любой CallerID Block Foreign CIDs - блокировать любой внешний CallerID. Под внешним подразумевается пришедший извне, из-за пределов системы. Outbound CID абонентов это не затронет. Remove CNAM - Удалять имена из CallerID, не трогая номер. Force Trunk CID - Принудительно подставлять CallerID заданный в данном транке.

Maximum Channels

Максимальное количество одновременных соединений через данный транк.

Asterisk Trunk Dial Options

Опции команды Dial для исходящих вызовов, через транк. По умолчанию, значение заданное в Asterisk Dial Options. Переопределяет системные опции, если выбрано override на заданные здесь.
Override System

Continue if Busy

Искать следующий доступный транк, если этот переполнен.
Yes No

Disable Trunk

Выключить, т.е. вывести транк из обслуживания. Обратите внимание, что на Register String этот триггер не распространяется.
Yes No

Dial Number Manipulation Rules

Вариантов может быть масса, но общий принцип, надеюсь ясен.

sip Settings

И, наконец, ключевые наcтройки sip пира. Во FreepBX они разделены на Outgoing и Incoming
Которые отвечают за исходящие type=peer и входящие вызовы type=user, соответственно.
Подробно с настройками sip.conf в Asterisk вы можете ознакомиться по ссылке
Здесь же рассмотрим основные параметры.

Outgoing

freepbx13-sip-trunk-sip-settings-outgoing

Большинство параметров указываются здесь.

username и secret

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

Предполагается, что здесь должно быть peer - набор свойств для исходящих вызовов.
Однако можно написать и friend и не назначать никакие параметры в секции Incoming (кроме register string, которая хоть и расположена во FreePBX в секции incoming настроек транка, прямой связи с ним не имеет и может существовать вообще без sip пира, хоть и нуждается в нем, для аутентификации входящего вызова, как доверенного, а не анонимного).
Так тоже будет работать.

Также здесь могут быть заданы любые параметры, доступные SIP пиру:

context

- контекст обработки входящих вызовов. Стандартный контекст входящих вызовов Freepbx для цифровых транков- from-trunk. Вызовы из него обрабатываются в модуле FreePBX 13 входящая маршрутизация. Но вы можете указать собственный контекст и написать его в extensions_custom.conf. См. также FreePBX custom context

Для многих новичков значение контекста по отношению к транку и к внутреннему номеру вызывает некоторую путаницу. Для простоты можно сказать, что контекст транка определяет, как обрабатывать входящие вызовы, а контекст внутреннего номера - исходящие. Когда внутренний абонент куда-то звонит, в назначенном ему контексте определяется, через какие транки и на какие екстеншены он может позвонить. Исходящая связь через транк определяется в контекстах внутренних номеров и никак не упоминается в контексте, назначенном непосредственно транку. Напротив, когда внешняя система, связанная с транком, вызывает некий екстеншен (расширение), тогда и используется контекст, назначенный транку.

Но если несколько углубиться в данный вопрос, можно вспомнить, что для Asterisk, по сути, нет разницы между внутренним номером и транком. Когда внешняя система вызывает некий номер, она является sip устройством, которое совершает исходящий вызов через контекст, назначенный транку, так же, как телефон совершает исходящий вызов через контекст, назначенный пиру. Поэтому, как нет разницы между sip транком и внутренним номером, так нет разницы и между использованием контекстов, им назначенных.

insecure
insecure=port - Проверять совпадение IP адреса, но не порта insecure=invite - Не требовать аутентификации в инвайте (INVITE)

insecure=invite - практически обязательное условие, для приема входящих вызовов.

disallow

- запретить использование кодеков, чтобы назначить разрешенные в параметром allow.

allow

- разрешить перечисленные через запятую кодеки.

- задать свойства использования rport , media при работе за nat. Если не указано, будут использованы настройки из модуля FreePBX Asterisk SIP Settings.

nat = force_rport - использовать rport, даже если его нет
qualify

- Посылать запросы Options = yes/no

qualifyfreq

- частота запросов в секундах. и тд.

Incoming

Данная секция должна иметь уникальное название, т.к. является, в некотором роде, независимым объектом, не пиром, но часовым пира, который требует пароль (secret) и указывает путь (context), если проверка пройдена. Не отображается в консоли, при вводе команды sip show peers, так как type=user. Как и следует из названия, отвечает за входящие вызовы. Основные параметры: context и secret те же, что указаны в outgoing.

freepbx13-sip-trunk-sip-settings-incoming.jpg

Здесь же задается строка регистрации, которая в чистом Asterisk, вынесена в категорию sip.conf - [general].
Это очень важный параметр, отвечающий за посылку Register SIP серверу регистраций. Если вы подключаетесь к SIP серверу провайдера и требуется получать входящие вызовы, в большинстве случаев, надо посылать Register.

Читайте также: