INTEGRITY Документация

Развёртывание локально размещённых VoIP-сервисов для гибридных пользователей

Введение

Традиционные VPN-решения создают ряд проблем для развёртывания VoIP, в первую очередь из-за неэффективной обработки протоколов трафика в реальном времени, таких как SIP ↗ и RTP ↗. Устаревшие развертывания VPN вносят высокую задержку и джиттер, которые негативно сказываются на качестве голосовых вызовов. Кроме того, у них часто возникают проблемы с NAT ↗ traversal, что приводит к проблемам с подключением при VoIP-звонках.

Cloudflare превосходит традиционные VPN-решения благодаря глобальная сеть ↗ центров обработки данных в более чем 330 городах, что значительно снижает задержку для удалённых пользователей. При использовании нашего агента устройства удалённые пользователи автоматически подключаются к ближайшему центру обработки данных Cloudflare, тем самым снижая задержку.

В этом документе объясняется, как спроектировать доступ к самостоятельно размещенной службе VoIP с помощью Cloudflare. Обратите внимание, что решение ниже использует Cloudflare Mesh (ранее WARP Connector), небольшое программное обеспечение, разворачиваемое на сервере в той же подсети, что и серверы VoIP, и создающее двунаправленный поток трафика через Cloudflare к пользователям.

Двунаправленный поток VoIP трафика

Рисунок 1: Cloudflare обеспечивает защищенное подключение от пользовательских устройств к сети, в которой работает SIP-сервер.
Рисунок 1: Cloudflare обеспечивает защищенное подключение от пользовательских устройств к сети, в которой работает SIP-сервер.

На диаграмме выше показаны Cloudflare Mesh и наш агент устройства, развёрнутые для обеспечения высокопроизводительного и надёжного подключения приватных VoIP-сервисов. Обратите внимание, что Cloudflare назначит удалённым пользователям адрес из Диапазон CGNAT, которая используется для приватной сети, создаваемой между агентами устройств. Cloudflare Mesh обеспечивает защищенную двустороннюю связь между удаленными пользователями и локальным SIP-сервером, не открывая его для публичного интернета. Это защищает VoIP-инфраструктуру от потенциальных атак и одновременно сохраняет непрерывное зашифрованное соединение для связи в реальном времени.

  1. VoIP-сервер находится в приватной сети без публичного IP-адреса.
  2. Cloudflare Mesh создаёт защищённый туннель к Cloudflare и настраивается как виртуальный маршрутизатор в частной сети.
  3. Разрешить трафику от Cloudflare достигать VoIP-сервера, а также разрешить трафику, инициированному из частной сети, например исходящему VoIP-звонку с сервера, маршрутизироваться через туннель Cloudflare. На приведённой выше схеме мы добавляем статический маршрут на шлюзе по умолчанию для 100.96.0.0/12 (диапазон WARP CGNAT) через 10.0.50.10 (виртуальный маршрутизатор Cloudflare Mesh).
  4. Трафик проходит через наш Secure Web Gateway (SWG), который применяет правила межсетевого экрана на сетевом уровне как к входящему, так и к исходящему трафику.
  5. Агент устройства устанавливается на устройства удалённых пользователей. Агент создаёт защищённый туннель к Cloudflare, что позволяет программному обеспечению VoIP как принимать, так и совершать звонки.

Примеры потоков вызовов

VoIP-приложение на устройстве удаленного пользователя регистрируется на VoIP-сервере по протоколу SIP. Агенту устройства Cloudflare присваивается адрес из диапазона IP CGNAT, 100.96.0.0/12. Поскольку маршрутизация в Cloudflare уже настроена для 100.96.0.0/12 и к локальной сети 10.0.50.0/24, вызовы будут работать в обычном режиме: поддерживаются как прямая, так и косвенная передача медиапотока.

Удаленный пользователь звонит другому удаленному пользователю

При звонках между пользователями часть трафика идёт от устройства пользователя через Cloudflare к локальному серверу, а другая часть трафика идёт через Cloudflare напрямую к другому пользователю. Обратите внимание, что агент устройства создаёт защищённый туннель, через который маршрутизируются адреса CGNAT. Оба пользователя в этой схеме зарегистрировали свои SIP-клиенты на сервере.

Рисунок 2: при соединении удалённого пользователя с удалённым пользователем не весь трафик проходит через Cloudflare Mesh к SIP-серверу.
Рисунок 2: при соединении удалённого пользователя с удалённым пользователем не весь трафик проходит через Cloudflare Mesh к SIP-серверу.

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

  1. Alice регистрируется непосредственно на SIP-сервере (10.0.50.60) с назначенным Cloudflare CGNAT IP-адресом 100.96.0.12.
  2. Bob также регистрируется напрямую на сервере SIP (10.0.50.60) с их CGNAT IP-адресом 100.96.0.13.
  3. Когда Алиса звонит Бобу, SIP-сервер отправляет Бобу сообщение SIP INVITE по адресу 100.96.0.13.
  4. Шлюз по умолчанию для SIP-сервера: 10.50.0.1, но при этом мы задали статический маршрут таким образом, что для адреса назначения 100.96.0.0/12, следующий переход - это интерфейс Cloudflare Mesh (10.0.50.10).
  5. Сообщение SIP INVITE будет направлено через Cloudflare Mesh в сеть Cloudflare, а затем получено Бобом.
  6. Bob принимает вызов, и сервер SIP отправит Alice и Bob сообщения SIP/SDP с указанием параметров, которые нужно использовать для данных RTP (аудио).
  7. Для маршрутов Direct Media, где SIP-сервер не участвует в передаче аудио и RTP-потоки идут напрямую между Alice и Bob, убедитесь, что Разрешить весь трафик Cloudflare One к зарегистрированным устройствам была включена в Cloudflare. Аудиопотокам в сценарии Direct Media не потребуется маршрутизация через Cloudflare Mesh.

От удаленного пользователя к локальному пользователю

Вызовы между удалёнными и локальными (on-premise) пользователями во многом похожи, но аудиотрафик RTP передаётся через Cloudflare Mesh в дополнение к сигнализации SIP.

Рисунок 3: при соединении удалённого пользователя с локальным пользователем весь трафик направляется через Cloudflare к SIP-серверу и SIP-клиенту.
Рисунок 3: при соединении удалённого пользователя с локальным пользователем весь трафик направляется через Cloudflare к SIP-серверу и SIP-клиенту.

Ниже показаны пути сигнализации и передачи медиаданных на верхнем уровне:

Рисунок 4: и сигнальный трафик, и медиаданные (аудио, видео и т. д.) передаются по защищённым туннелям от удалённых устройств к локальным (on-premise) клиентам.
Рисунок 4: и сигнальный трафик, и медиаданные (аудио, видео и т. д.) передаются по защищённым туннелям от удалённых устройств к локальным (on-premise) клиентам.
  1. Alice регистрируется непосредственно на SIP-сервере (10.0.50.60) с ее CGNAT IP-адресом 100.96.0.12.
  2. Bob также регистрируется напрямую на сервере SIP (10.0.50.60) с их LAN IP-адресом 10.0.50.101.
  3. Когда Алиса звонит Бобу, SIP-сервер отправляет Бобу сообщение SIP INVITE по адресу 10.0.50.101.
  4. Шлюз по умолчанию для SIP-сервера: 10.50.0.1, но при этом мы задали статический маршрут таким образом, что для адреса назначения 100.96.0.0/12, следующий переход - это интерфейс Cloudflare Mesh (10.0.50.10).
  5. Сообщение SIP INVITE будет отправлено Бобу по локальной сети.
  6. Bob принимает вызов, и сервер SIP отправит Alice и Bob сообщения SIP/SDP с указанием параметров, которые нужно использовать для данных RTP (аудио).
  7. Bob будет отправлять аудио Alice по адресу 100.96.0.12, который будет направлен через Cloudflare Mesh в Cloudflare, и Alice отправит аудио Bob по адресу 10.0.50.101, который будет отправлен из Cloudflare через Cloudflare Mesh в локальную сеть заказчика.

Сводка

С Cloudflare Mesh удалённые пользователи, взаимодействующие с другими удалёнными пользователями или локальными пользователями через локальные SIP-серверы, получают удобный и защищённый обмен данными для обеих сторон. Ключевые преимущества:

  1. Двунаправленное соединение: Cloudflare Mesh поддерживает двунаправленный трафик, что критически важно для взаимодействия удалённых пользователей с локальными. Сигнальный и медиатрафик (SIP/RTP) передаются безопасно между сторонами независимо от физического местоположения пользователя. Это происходит через глобальную сеть Cloudflare с использованием зашифрованного туннеля, что обеспечивает целостность и защиту данных.

  2. Приватная связь через CGNAT: Cloudflare Mesh назначает устройствам IP-адреса Carrier-Grade NAT (CGNAT), что позволяет удалённым пользователям безопасно взаимодействовать с локальными пользователями через частные сети. Это обеспечивает изоляцию трафика от публичного Интернета и повышает уровень безопасности. Благодаря CGNAT удалённые и локальные пользователи могут общаться так, как будто находятся в одной сети.

  3. Отсутствие проблем с NAT traversal: Прохождение NAT часто создаёт сложности в сценариях VoIP, но поскольку Cloudflare Mesh сохраняет исходные IP-адреса и обрабатывает двунаправленный трафик без дополнительных границ NAT, удалённые и локальные пользователи могут общаться без проблем, которые обычно вызывают межсетевые экраны или устройства NAT, что повышает качество установки вызова и связи в целом.