Что такое сервер TURN?

TURN расшифровывается как Traversal Using Relay around NAT  —  обход NAT (трансляторов сетевых адресов) с помощью ретрансляторов. Серверы TURN необходимы для современных интернет-коммуникаций. Их используют в различных ситуациях, когда одноранговый (прямой) обмен данными невозможен из-за сетевых ограничений.

Функции, которые выполняют серверы TURN:

  • Преодоление препятствий в виде NAT и брандмауэров. NAT  —  метод, который используется маршрутизаторами для ретрансляции трафика от нескольких устройств, подключенных в локальной сети через один публичный IP-адрес. NAT необходим в условиях ограниченного доступа к публичным IP-адресам. Однако NAT усложняет P2P-коммуникации, делая находящиеся за ним устройства недоступными для прямой связи с внешней сетью. Эту проблему разрешают серверы TURN, помогая ретранслировать данные.
  • Облегчение процесса коммуникации. Из-за ограничений NAT или брандмауэра возникают ситуации, когда устройства, находящиеся за разными NAT и брандмауэрами, не могут взаимодействовать друг с другом и когда прямая связь между устройствами невозможна. Такие ограничения характерны для многих сетей. Серверы TURN облегчают коммуникацию в этом случае.

Как работают серверы TURN?

Работу сервера TURN можно изучать как в теории, так и на практике. Предлагаю использовать оба подхода: прежде чем перейти к практической реализации, посмотрим, на каких концепциях основана работа серверов TURN.

  1. Ретрансляция данных. Основное назначение сервера TURN  —  ретрансляция данных между устройствами, которые не могут напрямую соединиться друг с другом из-за NAT и брандмауэров. Примечание: сервер TURN принимает данные от одного устройства и транслирует их другому устройству. При этом все данные, передаваемые через TURN-сервер, шифруются. Таким образом, ни одна сторона, даже TURN-сервер, не знает, какие данные через него передаются.
  2. Поддержание соединения. Сервер TURN отслеживает все соединения и управляет дальнейшей передачей данных, чтобы поддерживать соединения, необходимые для WebRTC-коммуникаций.

TURN и STUN

Протокол TURN является расширением протокола STUN (Session Traversal Utilities NAT, утилиты прохождения сессий для NAT).

Серверы TURN

  • Более универсальны, поэтому справляются с ситуациями, в которых серверы STUN выходят из строя.
  • Непрерывно ретранслируют трафик между взаимодействующими устройствами.
  • Используются в тех случаях, когда NAT и брандмауэры ограничивают обмен данными через STUN-серверы.
  • Требуют повышенной мощности процессоров и больше ресурсов для повышения пропускной способности.

Серверы STUN

  • Используются для обнаружения локальных IP-адресов и номеров портов, которые NAT назначил конкретному пользователю.
  • Помогают установить прямое соединение между устройствами, находящимися за двумя разными NAT.
  • Основаны на более простом протоколе, поэтому не работают в симметричных NAT и при наличии сложных правил брандмауэра.

Поставщики облачных серверов TURN: обзор

Сегодня на рынке представлены различные провайдеры серверов TURN. Рассмотрим как бесплатные, так и платные версии, а также самостоятельный запуск сервера TURN в облаке с помощью таких облачных серверов, как AWS и Google Cloud.

Open Relay Project

Open Relay Project предлагает бесплатный TURN-сервер, используемый в WebRTC-приложениях (Web Real-Time Communication, коммуникации в реальном времени). TURN-сервер от Open Relay отличается высокой доступностью, надежностью и предоставляет возможности как STUN-, так и TURN-технологии.

Open Relay работает на портах 80 и 443, что позволяет обходить корпоративные брандмауэры (поскольку многие из таких брандмауэров разрешают только порты 80 или 443), а также поддерживает TURN + SSL для максимальной совместимости.

  • Работает на портах 80 и 443.
  • Гарантированно обходит большинство правил брандмауэра.
  • Надежность корпоративного уровня (99,999% времени безотказной работы).
  • Поддержка TURN + SSL для разрешения соединений через брандмауэры с глубокой проверкой пакетов (DPI).
  • Поддержка STUN.
  • Поддержка TCP и UDP.
  • Динамическая маршрутизация до ближайшего сервера.
  • Готовность к работе в производственной среде. 

Зарегистрироваться на Open Relay Project можно здесь.

Metered TURN Server

Metered TURN Server  —  это платный сервис, предлагающий TURN-серверы. Он обладает всеми возможностями Open Relay Project и некоторыми другими.

  • Все возможности проекта Open Relay.
  • Дополнительная поддержка.

Зарегистрироваться на Metered TURN Server можно здесь.

Преимущества Metered TURN Server:

  • Простота настройки и управления. Достаточно использовать предварительно настроенный сервер, просто добавить учетные данные в приложение, и TURN-сервер запустится автоматически.
  • Отсутствие необходимости в обслуживании. Провайдер TURN-сервера выполняет все работы по обслуживанию, так что пользователям TURN-сервера не нужно об этом беспокоиться.
  • Масштабируемость. TURN-сервер от любого провайдера TURN-серверов обладает высокой степенью масштабируемости.
  • Надежность и доступность. Провайдеры TURN-серверов, такие как Open Relay Project и Metered TURN Server, обеспечивают время работы 99,999%. Это показатель высокой доступности, определяемый как 5 Nines (“пять девяток”).
  • Поддержка экспертов. Провайдеры серверов TURN, такие как Metered и Open Relay Project, предлагают специализированную поддержку.

Настройка сервера TURN на сервисах от облачных провайдеров AWS, Google Cloud, Azure и других

Попробуйте создать собственный сервер TURN с помощью одного из облачных провайдеров. Для запуска сервера можно использовать проект с открытым исходным кодом CoTURN.

Но прежде чем мы приступим к описанию того, как создать TURN-сервер, приведем некоторые соображения, которые, возможно, потребуется принять во внимание.

Вы можете обратиться к подробным руководствам по настройке сервера TURN на сервисах от различных облачных провайдеров:

Особенности эксплуатации собственного TURN-сервера на облачном сервисе провайдера

  1. Установка.
  2. Обслуживание.
  3. Проблемы с уходом экземпляра в “лимб” (зависания).
  4. Оценка и контроль затрат.
  5. Распределение ресурсов.

Шаг 1. Выбор провайдера облачных услуг

Вы можете выбрать поставщика облачных услуг из множества различных вариантов, таких как AWS, Google Cloud, Azure и др. Некоторые из них также предлагают бесплатный уровень на ограниченный период времени.

Создание виртуальной машины (ВМ). Создайте ВМ в облачном пространстве выбранного провайдера и убедитесь, что компьютер имеет публичный IP-адрес и порты 3478 открыты для TCP.

Не забудьте установить операционную систему Debian или Ubuntu от Linux.

Шаг 2. Установка CoTurn

Подключитесь по SSH к своей виртуальной машине. Введите следующие команды для установки CoTurn на машину и обновления зависимостей:

sudo apt-get update
sudo apt-get upgrade

Шаг 3. Настройка CoTurn

Используйте команду cd, чтобы перейти в папку CoTurn, и отредактируйте конфигурационный файл /etc/turnserver.conf с помощью nano следующим образом:

nano /etc/turnserver.conf

Теперь выполните базовую конфигурацию:

listening-port=3478
# Используйте публичный IP-адрес вашего сервера
external-ip=<Your_VM_Public_IP>
# Настройте пользователя для аутентификации
user=<username>:<password>
# Включите файл журнала
log-file=/var/log/turnserver.log

Это базовые настройки. Для получения подробной информации воспользуйтесь настройкой сервера TURN с использованием CoTURN.

Шаг 4. Запуск сервера TURN

Запустить сервер TURN можно с помощью команды:

turnserver -c /etc/turnserver.conf

Шаг 5. Интеграция с WebRTC

Вы можете легко интегрировать сервер TURN с WebRTC-приложением, указав учетные данные TURN в массиве ICE-сервера.

const iceConfig = {
'iceServers': [
{
'urls': 'turn:<Your_VM_Public_IP>',
'username': '<username>',
'credential': '<password>'
}
]
};

Шаг 6. Проверка работы сервера TURN

После запуска сервера TURN можно проверить его работоспособность, перейдя по адресу https://turndemo.metered.ca/ и введя свои учетные данные.

Сферы применения TURN-серверов

TURN-серверы используются в телекоммуникациях и сервисах голосовых сообщений (VoIP) для обеспечения звонков и видеочатов.

Примеры использования TURN-серверов:

  • Видеоконференции. Для проведения видеоконференций, особенно видеоконференций с большим количеством участников, необходим TURN-сервер.
  • IoT-устройства (Internet of Things, интернет вещей). Если требуется связь между IoT-устройствами, находящимися за NAT, то для связи между ними необходим TURN-сервер
  • Сервисы потокового видеовещания. Для передачи стримов на миллионы устройств, находящихся за различными NAT и правилами брандмауэра, требуются TURN-серверы.
  • Средства удаленной и совместной работы. Многие средства удаленной и совместной работы, такие как чаты и другой инструментарий и софт для коммуникаций, требуют использования серверов TURN для связи друг с другом в обход NAT.

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи James bordane: What is a TURN Server?

Предыдущая статьяНужно ли оптимизировать программный код для ИИ: аргументы за и против
Следующая статьяКак реализовать простой контроль версий с помощью JavaScript, чтобы лучше разобраться в Git