Яндекс.Метрика

Курс Zabbix: мониторинг Asterisk и VoIP

Курс Zabbix: мониторинг Asterisk и VoIP с 10 ноября по 14 ноября

Количество
свободных мест

8 Записаться

Курс по Asterisk

Интенсив-курс по Asterisk с 29 сентября по 3 октября

Количество
свободных мест

5 Записаться

Курсы по Mikrotik MTCNA

Курсы по Mikrotik MTCNA с 13 октября по 16 октября

Количество
свободных мест

3 Записаться
Подключение транков к Asterisk и к FreePBX (курс молодого бойца)
55
Мастер-класс
Александр Абабий
Подключение транков к Asterisk и к FreePBX (курс молодого бойца)

Подключение транков к Asterisk и к FreePBX (курс молодого бойца)

Ниже приведена отредактированная версия материала по Asterisk, сфокусированная на практической конфигурации PJSIP, NAT, диалплане, безопасности и вспомогательных инструментах. Речевая форма сведена к формату технического доклада: убраны обращения от первого лица и к аудитории, сохранены ключевые мысли и примеры, исправлены огрехи распознавания и неточности терминов.

Перезагрузка конфигурации: как обновлять правильно

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

Примеры:

  • module reload logger — перечитать logger.conf.
  • dialplan reload — перечитать extensions.conf.
  • pjsip reload — перечитать pjsip.conf.

Команда core reload перечитывает все конфиги, но затрудняет диагностику, так как не очевидно, какой модуль обновился с ошибками. Практика: изменён logger.conf — выполняется только module reload logger; изменён диалплан — только dialplan reload и т. п.

SIP-шифрование и медиабезопасность (TLS, SRTP, ZRTP)

  • SIP over TLS: для шифрования сигналинга в PJSIP настраивается TLS — используется сертификат (сертификат/ключ) на сервере и, при необходимости, на клиентах. Схема схожа с HTTPS: сертификаты могут быть сгенерированы самостоятельно или приобретены у доверенного УЦ.
  • SRTP: шифрует медиапоток (RTP). Поддерживается Asterisk и большинством современных телефонов/клиентов; пригоден для корпоративных сценариев и внешних соединений.
  • ZRTP: сквозное шифрование медиапотока «peer-to-peer» на уровне RTP, инициируется участниками вызова. Важно: ZRTP корректно работает при прямом медиапути и может не применяться при транскодировании или когда медиа проходит через B2BUA/мост. Автор метода — Фил Циммерманн.

Примечание: утверждение о «запрете SRTP почти во всем мире» некорректно. В отдельных юрисдикциях действуют ограничения на использование криптографии, однако SRTP широко используется в корпоративных сетях и при подключении удалённых абонентов.

Клиенты для тестирования (софтфоны)

Для настольных ОС и мобильных устройств удобны следующие SIP-клиенты:

  • Windows: MicroSIP (лёгкий и надёжный), Softphone.Pro (коммерческий/свободный тарифы).
  • Android/iOS: Zoiper, 3CX, Linphone (open-source).

Выбор зависит от требований к кодекам, TLS/SRTP, push-уведомлениям и удобству администрирования. Следует избегать перегруженных рекламой сборок.

Веб-панель мониторинга (FOP2)

FOP2 — веб-интерфейс для наблюдения за состоянием внутренних номеров (extensions), транков, очередей. Часто интегрируется с FreePBX; лицензирование, как правило, недорогое (порядка ~$100 за базовый набор). Позволяет видеть текущие вызовы прямо в браузере и выполнять базовые операции.

NAT и транспорт PJSIP

При размещении Asterisk за NAT необходима корректная публикация внешних адресов и объявление «локальных» подсетей. В pjsip.conf (секция type=transport) используются параметры:

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060

Если сервер за NAT:

local_net=192.168.1.0/24               ; одна или несколько локальных сетей
external_signaling_address=203.0.113.10 ; внешний адрес для SIP-сигналинга
external_media_address=203.0.113.10     ; внешний адрес для RTP

Эти параметры задаются согласованно. Если есть несколько локальных сетей — перечисляются несколько local_net. При динамическом внешнем IP можно применять динамический DNS, но предпочтителен статический внешний адрес. Если Asterisk расположен во внешней сети без NAT, параметры external_* не требуются.

Структура pjsip.conf: endpoint, aor, auth, identify

PJSIP использует типизированные секции:

  • type=endpoint — «линия» абонента (набор медиа/сигнальных параметров).
  • type=aor — Address of Record, контакты (адреса регистрации) для endpoint.
  • type=auth — параметры аутентификации (логин/пароль, MD5 и т. п.).
  • type=identify — сопоставление входящих SIP-пакетов endpoint’у по IP/подсетям (актуально для провайдерских транков).

Для внутреннего SIP-аккаунта (IP-телефон как клиент Asterisk) в aor задаётся количество одновременных регистраций (мульти-регистрация):

[aor-1101]
type=aor
max_contacts=5        ; до 5 устройств могут зарегистрироваться на один номер

Для провайдерского транка (Asterisk регистрируется у провайдера) обычно задаётся contact вместо max_contacts:

[aor-trunk]
type=aor
contact=sip:username@sip.provider.example:5060

Секция identify используется для входящих от провайдера (матч по IP):

[trunk-identify]
type=identify
endpoint=trunk-endpoint
match=198.51.100.20/32

Пример базовой конфигурации PJSIP с шаблоном

Шаблоны упрощают массовую конфигурацию:

[ep-template](!)
type=endpoint
context=from-internal
disallow=all
allow=ulaw,alaw            ; или allow=!all,ulaw,alaw
direct_media=no            ; рекомендуется отключить для корректной записи/переводов и NAT
dtmf_mode=rfc4733          ; DTMF по RFC2833/4733
tone_zone=ru               ; по желанию

[auth-template](!)
type=auth
auth_type=userpass

; Аккаунт 1101
[endpoint-1101](ep-template)
type=endpoint
aors=aor-1101
auth=auth-1101

[aor-1101]
type=aor
max_contacts=5

[auth-1101](auth-template)
username=1101              ; логин устройства (необязательно равен номеру)
password=СЛОЖНЫЙ_ПАРОЛЬ

Замечание по безопасности: логин для авторизации (auth/username) необязательно равен внутреннему номеру (endpoint/имя секции). Разведение этих значений усложняет подбор пароля.

Кодеки, Direct Media и DTMF

  • Кодеки: типичная практика — disallow=all и далее явный список разрешённых (allow=ulaw,alaw,opus,…). Допускается форма allow=!all,ulaw,alaw.
  • Direct Media (direct_media): при yes медиапоток идёт напрямую между абонентами. При NAT, записи разговоров, переводах, прослушивании очередей и B2BUA-сценариях предпочтительно direct_media=no.
  • DTMF: для внешних линий — dtmf_mode=rfc4733 (RFC2833/4733). Альтернативы — inband или info, но они менее универсальны.

Связь endpoint ↔ контекст диалплана

В endpoint задаётся context — имя входного контекста диалплана, в котором обрабатываются вызовы от данного устройства. Часто для внутренних абонентов используется from-internal (аналогично FreePBX). У разных групп устройств могут быть разные контексты (ограничения по наборам, доступ к транкам и т. п.).

Диагностика и команды CLI

Полезные команды Asterisk:

  • Список/просмотр сущностей PJSIP
    pjsip list endpoints — список endpoint’ов
    pjsip show endpoint 1101 — детали endpoint
    pjsip show aor aor-1101 — AOR
    pjsip show auth auth-1101 — параметры auth (в том числе актуальные значения полей)
  • Просмотр приложений и функций диалплана
    core show applications — перечень приложений
    core show functions — перечень функций
    core show application Dial — справка по Dial()
    core show function MUTEAUDIO — справка по MUTEAUDIO()
  • Выполнение команд снаружи и «grep»:
    asterisk -rx «core show application Dial» | grep -i option

При регистрации телефон сначала отправляет REGISTER, получает 401 Unauthorized (challenge), затем повторяет REGISTER с авторизацией (Digest). Это штатная процедура.

Пример: минимальный диалплан и «мьют» канала

Простой внутренний набор (взаимные вызовы номеров 11XX) и пример принудительного мутирования аудио перед набором:

[from-internal]
exten => _11XX,1,NoOp(Внутренний вызов: ${CALLERID(num)} -> ${EXTEN})
 same => n,Set(MUTEAUDIO(all)=on)         ; выключить TX/RX на текущем канале
 same => n,Dial(PJSIP/${EXTEN},30)
 same => n,Hangup()

Функция MUTEAUDIO(direction)=on|off, где direction — in, out или all.
Для конфколлов стартовое отключение микрофона удобнее задавать профилем ConfBridge (параметр startmuted) на уровне моста.
После правок диалплан перечитывается командой dialplan reload. Проверка загруженного контекста: dialplan show from-internal.

Безопасность: базовые практики для Asterisk

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

Рекомендуемые меры:

  1. Firewall: разрешать доступ к SIP/RTP только с нужных адресов/сетей.
  2. Fail2Ban: блокировка источников брутфорса по логам.
  3. Нестандартный порт: перенос SIP-порта со стандартного 5060/UDP на высокий диапазон снижает шум сканирования (не панацея, но полезно).
  4. ACL на уровне PJSIP: permit/deny в endpoint или contact_acl/acl — белые списки сетей для регистрации и вызовов.
  5. Сложные пароли и разнесённые имена: username ≠ внутренний номер, уникальные парольные фразы.
  6. Обновления: актуальные версии Asterisk/FreePBX и модулей безопасности.

Исторически некоторые готовые дистрибутивы (например, ранние сборки FreePBX) поставлялись с нестрогими дефолтами, однако современные версии закрывают большинство рисков «из коробки» (включая базовый firewall и Fail2Ban).

Транки: отличие от внутренних аккаунтов

  • Внутренние устройства: aor содержит max_contacts (ждут регистраций от телефонов).
  • Провайдерский транк: Asterisk сам регистрируется у провайдера; в aor указывается contact (куда звонить). Входящие сопоставляются через identify (match=IP/подсеть).
  • В старом chan_sip для входящих от провайдера нередко использовали insecure=invite,port; в PJSIP корректнее работать через identify, endpoint и проверку IP.

Массовые обзвоны и конференции

  • Originate: для сценариев уведомлений или массовых обзвонов используется команда/приложение originate (в новых версиях — channel originate).
  • Конференции: модуль ConfBridge заменил устаревший MeetMe. Максимальное число участников практически зависит от ресурсов сервера и кодеков; при грамотной настройке возможно участие большого числа абонентов, включая массовые корпоративные обращения.

Заключение

  •  Для обновления конфигурации применяются точечные reload команд: module reload logger, pjsip reload, dialplan reload.
  • PJSIP разделяет логику на endpoint/aor/auth/identify; для внутренних устройств — max_contacts, для транков — contact и identify.
  • При NAT на уровне транспорта задаются local_net, external_signaling_address, external_media_address.
  • Рекомендуется direct_media=no, явные списки кодеков, DTMF по RFC2833/4733.
  • Безопасность обеспечивается firewall’ом, Fail2Ban, ACL и дисциплиной паролей/логинов.
  • Диагностика — через pjsip show …, core show application/function …, asterisk -rx.

Этот материал приведён к формату публикации, сохранены технические детали, устранены распознавания и стилистические огрехи, уточнены термины и параметры, чтобы текст был пригоден для практической работы с Asterisk.

 

Ежегодная конференция по Asterisk 2025!

Билеты уже в продаже!

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

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

Наши
клиенты

Посмотреть все