Настройка PJSIP-транков и пиров
Мы переходим от теории объектной модели к практике. Вспоминая архитектурные различия, которые мы обсуждали ранее, важно понимать: PJSIP — это не просто замена старого драйвера, а модульный конструктор. На этой странице мы научимся собирать этот конструктор для решения двух главных задач: подключения внутренних абонентов и связи с внешним миром.
Фундамент: Настройка Transport
Прежде чем заводить пользователей, нужно определить среду их работы. За это отвечает transport — объект, который диктует Asterisk, на каком IP-адресе, порту и по какому протоколу слушать входящие сигналы.
В современных реалиях использовать стандартный UDP-порт 5060 опасно — его круглосуточно атакуют ботнеты. Правильный подход — настроить несколько транспортов:
- UDP: для совместимости со старым оборудованием (на нестандартном порту).
- TLS: для шифрования корпоративной связи.
Как показано на Схеме 1, транспорт — это базовый слой. Без него остальные объекты PJSIP не смогут выйти в сеть.
Внутренние абоненты: PJSIP-пир
Во FreePBX внутренние номера создаются в разделе Extensions. Когда вы выбираете тип PJSIP, система создает PJSIP-пир (или Endpoint). Это «личность» устройства в системе.
Ключевые параметры при настройке:
- Username и Secret: логин и пароль для регистрации.
- Max Contacts: главная особенность PJSIP. Позволяет привязать к одному номеру сразу несколько устройств (например, софтфон и настольный аппарат).
- Transport: здесь вы указываете созданный ранее транспорт (например,
0.0.0.0-tls). - Context: для сотрудников FreePBX ставит
from-internal. Это дает право звонить по внутренним и внешним маршрутам.
🛡️ Заповедь безопасности Никогда не оставляйте контекст
from-internalдля транков, смотрящих в интернет. Если злоумышленник подберет пароль к такой линии, он сможет звонить в другие страны за ваш счет. Внешние линии всегда должны быть в защищенном контексте, напримерfrom-pstn.
Связь с оператором: PJSIP-транк
PJSIP-транк — это магистральный канал к провайдеру. В РФ чаще всего встречаются два метода авторизации.
1. Регистрация по логину и паролю
Здесь используется outbound_auth — объект с учетными данными, которые Asterisk предъявляет провайдеру в ответ на запрос авторизации.
Настройки во FreePBX (вкладка PJSIP Settings):
- Authentication: Outbound (мы доказываем провайдеру, кто мы).
- Registration: Send (мы активно шлем запрос REGISTER).
- SIP Server: адрес провайдера.
- Context: строго
from-pstn. Так входящие звонки пойдут по правилам вашей маршрутизации, а не напрямую абонентам.
2. Авторизация по IP (IP-auth)
Если у вас статический IP, провайдер может просто «доверять» трафику с вашего адреса. Регистрация и пароли не нужны.
- Отключите Authentication и Registration.
- Заполните поле Match (Permit): впишите туда IP-адреса провайдера. Без этого Asterisk не поймет, к какому транку отнести входящий вызов.
Проверка через CLI: уровень «Профи»
Администратор не верит веб-интерфейсу на слово. Чтобы убедиться, что связка transport -> endpoint -> auth взлетела, используйте консоль Asterisk.
Забудьте про поверхностные команды. Сравните:
Мало пользы:
pjsip show registrations # Видно только факт регистрации, но не настройки
Профессиональный анализ:
pjsip show endpoints # Показывает статусы, IP-адреса и связанные объекты AOR
Статусы Available или Not in use означают успех. Статус Unknown обычно сигнализирует о проблемах с сетью или файрволом.
Что дальше
Мы проложили «трубы», по которым пойдет голос. Но пока система не знает, как им управлять. Параметр context, который мы сегодня прописывали, — это входная дверь в логику звонка.
В следующем уроке мы разберем, как оптимизировать диалплан, используя макросы и подпрограммы, чтобы не дублировать код и сделать АТС по-настоящему гибкой.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram