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

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

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

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

8 Записаться

Курс по Asterisk

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

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

5 Записаться

Курсы по Mikrotik MTCNA

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

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

3 Записаться
Основы dialplan и Asterisk (курс молодого бойца)
59
Мастер-класс
Александр Абабий
Основы dialplan и Asterisk (курс молодого бойца)

Основы dialplan и Asterisk (курс молодого бойца)

Способы установки и выбор версии

Рассматриваются два подхода:

  • FreePBX Distro (готовый образ). Существенный минус — устанавливается «куча лишнего» (например, iSymphony и прочие компоненты, которые затем приходится удалять).
  • Ручная установка Asterisk + FreePBX «по скриптам» (без ISO). Такой вариант дает полный контроль и более чистую систему. В «сошке» (готовом ISO) тоже встречаются огрехи, поэтому предпочтительнее ставить вручную.

По версиям Asterisk:

  • В инструкции FreePBX обычно фигурирует 21, но 20 LTS также корректно работает и часто предпочтительнее за счет статуса LTS. Упоминалась и 22, но основной упор делается на 20/21.

Подготовка системы и базовых служб

  1. Репозитории и зависимости. Возможны проблемы с подключением отдельных реп (ошибки «ругается hp82»/«репа не хочет подключаться» трактуются как корректировка зеркал и зависимостей). Устанавливаются нужные пакеты (curl, и т.п.), недостающие модули — лучше собирать, чем полагаться на «рандомные» бинарники.
  2. Веб-сервер (Apache). Настройка стандартная. Если в логах мелькает путаница с путями библиотек, вместо usr/lib64 может потребоваться явный путь usr/lib. Некритично, конфиг можно запускать без жесткого указания каталога библиотек — но лучше привести пути к единообразию.
  3. База данных (MariaDB). Нужна для CDR и CEL в FreePBX. Устанавливается и настраивается до развертывания FreePBX.
  4. Логи и безопасность. Имеет смысл заранее продумать конфиг logger.conf (включая канал security) — пригодится для интеграции с Fail2ban.

Развертывание FreePBX и запуск Asterisk

  • Загрузка: wget (а не «VGET») дистрибутива FreePBX, распаковка в рабочий каталог (часто — /var/www/html/ или перенос в нужный путь вручную).
  • Важный момент: FreePBX не устанавливается без запущенного Asterisk. Если установка сыплет ошибками — сначала стартовать Asterisk (asterisk -vvvr → core show version/core restart now при необходимости).
  • После подготовки: ./install в каталоге FreePBX. Если на шаге открытия нового порта для канала требуется перезапуск — выполнить полный рестарт Asterisk, иначе «bindport игнорируется».

Первичные настройки FreePBX

  • Создается администратор, проверяется доступ по HTTP(S), включаются необходимые модули.
  • System Identifier / User-Agent. В FreePBX он автоматически подставляется в SIP/UA-заголовки. Рекомендуется не оставлять Asterisk по умолчанию, чтобы не помогать сканерам идентифицировать версию (и искать уязвимости по changelog). Можно указать нейтральный UA (вплоть до «No SIP» или безобидный URL вашей компании).
  • Языки и звуковые файлы. Веб-интерфейс рационально оставить на английском, а voice prompts установить в ru. Русификация GUI неоднородна, английский интерфейс читается надежнее.

Fail2ban и защита от SIP-сканеров

SIPVicious — популярный open-source сканер для SIP-сетей (массово используется в «friendly-scanner», OPTIONS-пакеты и т.д.). Утилита легальна для самопроверки и нагрузочного/безопасностного тестирования, но её активно применяют в атаках.

В FreePBX Fail2ban имеется из коробки (плюс к дистрибуции). Для ручной настройки:

  • В logger.conf включить канал security (чтобы fail2ban ловил события Asterisk).
  • Применить logger reload, проверить logger show channels.
  • Перезапустить службы Fail2ban. Наблюдать баны по журналам — после корректной привязки «пошла тема: баним».

Для SIP мониторинга — OPTIONS; для IAX2 — собственные PING/PONG-сообщения.

IAX2: когда уместно и как настроить

Режимы работы и NAT

IAX2 (Inter-Asterisk eXchange) удобен для связывания Asterisk/FreePBX между собой. Может работать:

  • IP-to-IP (peer-to-peer) — без регистрации/аутентификации, если серверы в одной сети/без NAT.
  • С регистрацией — когда один из серверов за NAT (проброс порта 4569/UDP обязателен).

Если оба сервера «на реальниках» — разумно начать с IP-to-IP trunk

Гостевые вызовы и «public»-контекст

Включение IAX2 может автоматически создать гостевую сущность (guest, type=user, context=public). Это значит, что любой IAX-вызов попадет в контекст public. Нельзя использовать public для исходящих/чувствительных маршрутов — рискуется подарить трафик злоумышленникам.

Типы aor/peer в IAX2

  1. type=friend — и входящие, и исходящие через один объект.
  2. type=user — только входящие.
  3. type=peer — только исходящие.

Ограничения задуманы для разделения ролей; для простоты часто применяют friend.

Минимальный профиль транка (пример)

На стороне Asterisk (ручная конфигурация iax.conf):

[freepbx]
type=friend
host=10.0.0.216              ; IP FreePBX
context=from-freepbx-spb     ; куда попадут входящие с FreePBX
username=asterisk            ; имя, под которым АТС представится удаленной стороне
secret=123                   ; НЕ использовать слабые пароли
qualify=yes                  ; мониторинг доступности (PING/PONG)

На стороне FreePBX создается IAX-trunk с зеркальными параметрами:

  • Name: asterisk (или freepbx — важно согласовать пары «name/username»).
  • Username: freepbx (или asterisk — см. пояснение ниже).
  • Host: IP Asterisk.
  • Secret: тот же пароль.
  • Context: from-internal/свой контекст для входящих с транка.

Ключевая особенность IAX2 (частая причина ошибок): при исходящем вызове Asterisk проверяет соответствие по полю username, а локальные секции в iax.conf именуются в квадратных скобках и соотносятся с name. В результате на разных сторонах должны совпасть «крест-накрест»: у одной стороны name=freepbx, username=asterisk, у другой — наоборот. Универсальный лайфхак — использовать одинаковые значения для name и username на обеих сторонах (trunk1, trunk2 и т.д.), тогда путаницы не возникнет.

Перезагрузка канала и порт

Порт IAX2 — 4569/UDP. При изменении параметров привязки порта иногда требуется полный рестарт Asterisk, иначе «bindport игнорируется». Проверка:

  • iax2 reload
  • iax2 show peers
  • При необходимости — core restart now.

Включение отладки и мониторинг

  • iax2 set debug on — пакетный дебаг (видны NEW/AUTHREQ/ACCEPT и пр.).
  • iax2 show peers — состояние, задержки, доступность.
  • qualify=yes — периодическая проверка (аналог SIP OPTIONS, но своими IAX-сообщениями).

Быстрая проверка через feature-коды и CLI

Echo Test в FreePBX: номер *43.
Задача: с Asterisk набрать *43, отправить через IAX2 на FreePBX и получить эхо.Если звонок не уходит — проверить, в какой контекст попадает исходящий: в PJSIP типично это from-internal.

Подключение контекстов через Include. Лучше выделять функциональные части (например, отдельный контекст для тестов/фич) и включать их в from-internal:

[from-internal]
include => feature-tests

include срабатывает только если в текущем контексте не найдено точное или шаблонное совпадение экстеншена. Порядок include важен — поиск идет сверху вниз.

Диал через IAX2: две формы синтаксиса

  • Dial(IAX2/freepbx/*43) — передаст имя транка как username.
  • Dial(IAX2/*43@freepbx) — подставит набранный экстеншен в поле username.

Это особенность IAX2, а не баг. Нужно учитывать при матчинге username на принимающей стороне.

Проверка без телефонов — через CLI-генерацию вызова.

В современных сборках доступна команда channel originate (или originate):

channel originate IAX2/freepbx/1101 application Echo

Если модулей для originate в сборке нет — активировать соответствующие приложения/модули и перезагрузить.

Диалплан: основы и удобные приемы

Файл extensions.conf: Комментарии — ;. Для «многострочного» блока часто используют «рамку» из ;— … —; (читаемость).

Контекст — логический блок маршрутизации:

[feature-tests]
exten => *43,1,Answer()
same  =>     n,Echo()
same  =>     n,Hangup()

Использование same => n снимает необходимость нумеровать приоритеты.

Шаблоны:

  • _11XX — маска (каждый X = 0–9). Подчеркивание _ обязательно только для шаблонов.
  • Если номер точный (*43), подчеркивание не используется.

Переадресация внутри диалплана:

same => n,Goto(from-internal,${EXTEN},1)

Команда Goto(context,exten,priority) перенаправляет вызов в нужное место.

SIP-часть и сканирование

  • В логах часто видны OPTIONS-запросы от сканеров с UA friendly-scanner. Это нормальная «фонова́я» нагрузка из интернета.
  • Если стоИт задача скрыть версию — изменить User-Agent.
  • При наличии SIP-прокси/регистраторов, заголовки могут нести доп.информацию. В IAX2 подобное не передается — протокол минималистичен и не имеет богатого набора заголовков «как в SIP».

Регистрация vs авторизация на транках

  • С регистрацией всегда подразумевается аутентификация (логин/пароль).
  • Без регистрации возможны оба варианта: по host (IP-based, без логина/пароля) или с логином/паролем. Для IAX2 в локальных/доверенных сетях часто используют именно IP-based.

Заключение

  • Для контролируемой и «чистой» инсталляции разумнее собирать Asterisk и ставить FreePBX вручную.
  • 20 LTS — надежный выбор, 21 также подходит; держать систему в актуальном состоянии, но избегать внезапных обновлений в проде.
  • При работе с IAX2 внимательно следить за соответствием name/username на сторонах. При изменении привязки порта — не стесняться полного рестарта.
  • Включить Fail2ban, logger с каналом security, корректно настроить контексты и исключить попадание гостевого трафика в чувствительные маршруты.
  • Тестировать через *43, iax2 set debug on, iax2 show peers и, при необходимости, channel originate.
  • Веб-интерфейс FreePBX оставить на английском, звуковые файлы — ru, User-Agent переопределить на нейтральный.

Такое построение позволяет быстро развернуть связку Asterisk/FreePBX, корректно подружить площадки по IAX2 и обеспечить базовую гигиену безопасности без «лишних» компонентов.

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

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

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

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

Наши
клиенты

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