03

SIP-транки и SBC

Как подключить вашу телефонную систему к внешнему миру: SIP-транки для связи с PSTN, методы аутентификации, тарификация и роль SBC в защите и маршрутизации трафика.

Что такое SIP-транк

Что такое SIP-транк — простыми словами

Представьте: вы построили собственную телефонную систему (FreeSWITCH, Kamailio, веб-телефоны). Внутри вашей сети все сотрудники могут звонить друг другу. Но как позвонить на обычный мобильный или городской номер? Ваша система не подключена к телефонной сети (PSTN).

SIP-транк — это виртуальный «провод» между вашей телефонной системой и оператором связи, который имеет выход в обычную телефонную сеть (PSTN). Через этот «провод» передаётся SIP-сигнализация и голосовой трафик (RTP).

Аналогия

Ваша PBX — это офисная АТС.
SIP-транк — это телефонная линия от оператора, которая приходит в вашу АТС.
Без неё АТС работает только внутри офиса. С ней — звонки уходят наружу на любые номера мира.

Раньше это был физический кабель (ISDN PRI — 30 каналов в одном проводе). Сегодня SIP-транк — это IP-подключение через интернет. Никаких физических проводов — только настройка в конфигурации.

Что даёт SIP-транк

DID-номера — вам выделяют телефонные номера (например +49 30 1234567 для Берлина), на которые люди могут звонить и попадать в вашу систему.

Исходящие звонки — ваши сотрудники могут звонить на любые номера мира, оператор маршрутизирует вызов в PSTN.

Caller ID — при исходящем звонке у абонента отображается ваш номер (DID), а не какой-то случайный.

Ёмкость — количество одновременных звонков. В отличие от ISDN (30 каналов), SIP-транк может пропускать сотни звонков одновременно.

Как подключить SIP-транк

Как получить SIP-транк — пошаговый процесс
1
Выбираете SIP-провайдера — компанию, у которой есть лицензия оператора связи и подключение к PSTN. Примеры: Telnyx Twilio Vonage Flowroute — глобальные. sipgate (DE), OVH Telecom (FR), Ростелеком (RU) — локальные.
2
Регистрируетесь и верифицируетесь — подтверждаете компанию (KYC), адрес, иногда лицензии. Для некоторых стран (ОАЭ, Саудовская Аравия) требуется локальное юрлицо и регуляторное одобрение.
3
Покупаете DID-номера — выбираете номера в нужных странах/городах. Например: +49 30 XXXXXXX (Berlin), +1 212 XXXXXXX (New York), +971 4 XXXXXXX (Dubai). Цена: от $1 до $15/мес за номер в зависимости от страны.
4
Получаете учётные данные для подключения — провайдер даёт вам один из двух вариантов:
IP-аутентификация — вы сообщаете IP-адрес вашего сервера, провайдер разрешает трафик только с этого IP. Без паролей.
Credentials — логин + пароль, ваш сервер регистрируется на SIP-сервере провайдера (как обычный SIP-телефон).
5
Настраиваете транк на вашей PBX — прописываете адрес SIP-сервера провайдера, учётные данные, кодеки, правила маршрутизации. Входящие звонки на ваши DID приходят по SIP INVITE от провайдера.
6
Тестируете — звоните с мобильного на ваш DID-номер → звонок должен прийти в вашу систему. Звоните из вашей системы на мобильный → у абонента отображается ваш DID как Caller ID.

Методы аутентификации

Два способа аутентификации транка
IP-аутентификация Registration (credentials)
Как работает Провайдер добавляет ваш IP в белый список. Все SIP-пакеты с этого IP принимаются без пароля Ваш сервер отправляет REGISTER на SIP-сервер провайдера с логином/паролем, как обычный SIP-телефон
Для кого Enterprise с выделенным IP. Наш вариант Небольшие компании, динамический IP, домашние PBX
Безопасность Высокая — привязка к IP, нельзя подключиться с чужого адреса Средняя — пароль может быть скомпрометирован
NAT Не проблема — IP фиксированный Может быть проблемой — REGISTER через NAT требует keep-alive
Failover Можно указать несколько IP (primary + backup) Ограничен — регистрация с одного хоста

Технические примеры

🔍 Как SIP-транк выглядит технически (SIP-сообщения)

Когда кто-то звонит на ваш DID +49 30 1234567, провайдер отправляет на ваш сервер SIP INVITE:

INVITE sip:+493012345670@your-server-ip:5060 SIP/2.0 Via: SIP/2.0/UDP provider-sip-server:5060 From: <sip:+4917612345678@provider.com>;tag=abc123 To: <sip:+493012345670@your-server-ip> Call-ID: 9876xyz@provider.com CSeq: 1 INVITE Contact: <sip:+4917612345678@provider-sip-server:5060> Content-Type: application/sdp ; SDP — описание медиа-потока (какой кодек, куда слать RTP) v=0 o=- 123456 1 IN IP4 provider-media-server c=IN IP4 provider-media-server m=audio 20000 RTP/AVP 0 8 18 a=rtpmap:0 PCMU/8000 ; G.711 μ-law a=rtpmap:8 PCMA/8000 ; G.711 A-law a=rtpmap:18 G729/8000 ; G.729

Ваш сервер отвечает 200 OK со своим SDP (свой IP для RTP, свои кодеки), и голосовой канал устанавливается.

Для исходящего звонка — наоборот: ваш сервер отправляет INVITE на SIP-сервер провайдера:

INVITE sip:+4917612345678@provider-sip-server:5060 SIP/2.0 From: <sip:+493012345670@your-server-ip>;tag=xyz789 To: <sip:+4917612345678@provider-sip-server> ; Провайдер проверяет: пришло ли с разрешённого IP? (IP-auth) ; Или: есть ли Authorization-заголовок? (credentials) ; Если ОК — маршрутизирует вызов в PSTN

Тарификация

💰 Сколько стоит SIP-транк (ценообразование)
Компонент Модель оплаты Примерная цена
DID-номер Ежемесячная аренда $1–15/мес за номер (зависит от страны, US дешевле, ОАЭ дороже)
Входящие звонки По минутам или бесплатно $0–0.01/мин (многие провайдеры включают во входящие бесплатно)
Исходящие звонки По минутам $0.005–0.03/мин (локальные), $0.02–0.15/мин (международные)
Каналы (ёмкость) Зависит от провайдера Некоторые берут за concurrent channels ($2–5/канал), другие — без ограничений
Экстренные номера (E911) Обязательный сбор (US) $1–2/мес за номер
Enterprise-совет

При масштабе 43 страны — договаривайтесь с провайдерами напрямую о volume pricing. Крупные провайдеры (Telnyx, Bandwidth, BICS) дают скидки при объёме от 10,000+ минут/мес. Для некоторых стран выгоднее использовать локальных операторов (дешевле, лучше качество, регуляторные требования).

Проблемы и решения SBC

Как SBC помогает при работе с SIP-транками

Когда у вас один провайдер — можно обойтись без Trunk SBC. FreeSWITCH напрямую общается с провайдером.

Когда у вас 43 страны и десятки провайдеров — начинается хаос, и Trunk SBC становится спасением:

Проблема 1: Каждый провайдер «говорит» на своём SIP

Стандарт SIP (RFC 3261) — это 269 страниц. Каждый провайдер интерпретирует его по-своему:

• Один отправляет Caller ID в заголовке From
• Другой — в P-Asserted-Identity
• Третий — в Remote-Party-ID
• Кто-то требует + перед номером, кто-то без
• Форматы номеров: E.164, локальный, с кодом страны, без

Trunk SBC решает: нормализует все входящие SIP-сообщения к единому формату. FreeSWITCH всегда видит одинаковый SIP независимо от провайдера.

Проблема 2: LCR — куда дешевле маршрутизировать

Звонок из Берлина в Мюнхен:

• Через Telnyx: $0.008/мин
• Через sipgate (локальный DE): $0.003/мин
• Через Twilio: $0.014/мин

Звонок из Берлина в Дубай:

• Через Telnyx: $0.09/мин
• Через du (локальный UAE): $0.04/мин
• Через Twilio: $0.12/мин

Trunk SBC решает: LCR (Least Cost Routing) — автоматически выбирает самый дешёвый маршрут для каждого звонка на основе префикса номера. Экономия — 30-60% на исходящих звонках.

Проблема 3: Провайдер упал — звонки не проходят

У любого провайдера бывают аварии. Если FreeSWITCH напрямую подключён к одному транку — все исходящие звонки прекращаются.

Trunk SBC решает: автоматический failover. Если primary-транк не отвечает за 3 секунды → переключение на backup-транк. Пользователь даже не заметит.

# Пример failover-логики на Trunk SBC (Kamailio) # Звонок в Германию: if (prefix == "+49") { route(1): sipgate.de ← primary (локальный, дешёвый) route(2): telnyx.com ← backup route(3): twilio.com ← last resort }
Проблема 4: Toll Fraud — мошеннические звонки

Самая опасная угроза в телефонии. Злоумышленник получает доступ к вашей системе и начинает звонить на premium-номера (Куба, Сомали, спутниковые) по $3-5/минуту. За выходные — счёт на $50,000+.

Trunk SBC решает:

Rate limiting — максимум N одновременных исходящих звонков
Geo-blocking — блокировка звонков в «опасные» направления
Spending alerts — уведомление если расходы за час превысили порог
Anomaly detection — необычный паттерн (100 звонков на Кубу в 3 AM) → блокировка

Проблема 5: Topology hiding

Без Trunk SBC провайдер видит внутреннюю структуру вашей сети — IP-адреса FreeSWITCH, номера портов, имена серверов в заголовках Via и Contact.

Trunk SBC решает: переписывает все SIP-заголовки. Провайдер видит только IP/имя Trunk SBC. Ваша внутренняя архитектура скрыта.

Проблема 6: Кодеки и медиа

Внутри вашей сети используется Opus (высокое качество, низкий трафик). Но многие PSTN-провайдеры принимают только G.711 (PCMU/PCMA) или G.729.

Trunk SBC + RTPEngine решают: транскодирование на границе. Внутри сети — Opus/G.722. На выходе к провайдеру — G.711. Прозрачно для пользователей.

Путь звонка через SBC

Итого: путь звонка через оба SBC
  ВХОДЯЩИЙ ЗВОНОК (клиент звонит на ваш DID)

  Мобильный      SIP-провайдер     Trunk      Kamailio    FreeSWITCH    Access      Оператор
  телефон   ───▶  (Telnyx)   ───▶  SBC   ───▶  Core   ───▶  (IVR,   ───▶  SBC    ───▶  (веб-
              PSTN→SIP           нормализ.    маршрут.    очередь)    SRTP↔RTP     телефон)
                                 E.164        LB→FS       bridge      WebRTC


  ИСХОДЯЩИЙ ЗВОНОК (оператор звонит клиенту)

  Оператор      Access       Kamailio    FreeSWITCH    Trunk      SIP-провайдер    Мобильный
  (веб-    ───▶  SBC    ───▶  Core   ───▶  (bridge) ───▶  SBC   ───▶  (sipgate)  ───▶  телефон
  телефон)     WSS→SIP     маршрут.    dial out     LCR          SIP→PSTN
               SRTP→RTP    LB→FS                   failover
                                                    anti-fraud
Обратите внимание: оба SBC участвуют в каждом звонке «наружу». Access SBC защищает вход от клиентов, Trunk SBC защищает выход к провайдерам. Между ними — доверенное ядро (Core + FreeSWITCH), которое никогда не контактирует с внешним миром напрямую.