Что такое сервер TURN?
TURN расшифровывается как Traversal Using Relay around NAT — обход NAT (трансляторов сетевых адресов) с помощью ретрансляторов. Серверы TURN необходимы для современных интернет-коммуникаций. Их используют в различных ситуациях, когда одноранговый (прямой) обмен данными невозможен из-за сетевых ограничений.
Функции, которые выполняют серверы TURN:
- Преодоление препятствий в виде NAT и брандмауэров. NAT — метод, который используется маршрутизаторами для ретрансляции трафика от нескольких устройств, подключенных в локальной сети через один публичный IP-адрес. NAT необходим в условиях ограниченного доступа к публичным IP-адресам. Однако NAT усложняет P2P-коммуникации, делая находящиеся за ним устройства недоступными для прямой связи с внешней сетью. Эту проблему разрешают серверы TURN, помогая ретранслировать данные.
- Облегчение процесса коммуникации. Из-за ограничений NAT или брандмауэра возникают ситуации, когда устройства, находящиеся за разными NAT и брандмауэрами, не могут взаимодействовать друг с другом и когда прямая связь между устройствами невозможна. Такие ограничения характерны для многих сетей. Серверы TURN облегчают коммуникацию в этом случае.
Как работают серверы TURN?
Работу сервера TURN можно изучать как в теории, так и на практике. Предлагаю использовать оба подхода: прежде чем перейти к практической реализации, посмотрим, на каких концепциях основана работа серверов TURN.
- Ретрансляция данных. Основное назначение сервера TURN — ретрансляция данных между устройствами, которые не могут напрямую соединиться друг с другом из-за NAT и брандмауэров. Примечание: сервер TURN принимает данные от одного устройства и транслирует их другому устройству. При этом все данные, передаваемые через TURN-сервер, шифруются. Таким образом, ни одна сторона, даже TURN-сервер, не знает, какие данные через него передаются.
- Поддержание соединения. Сервер 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 с использованием CoTURN.
- TURN-сервер на AWS: 7 простых шагов.
- Как настроить сервер TURN на Google Cloud.
- Полное руководство по настройке TURN-сервера на Azure.
Особенности эксплуатации собственного TURN-сервера на облачном сервисе провайдера
- Установка.
- Обслуживание.
- Проблемы с уходом экземпляра в “лимб” (зависания).
- Оценка и контроль затрат.
- Распределение ресурсов.
Шаг 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.
Читайте также:
- Cosmo Route — молниеносный маршрутизатор с открытым исходным кодом и поддержкой Federation V1/V2
- Что такое Next.js App Router и готов ли он к использованию в производстве
- Эволюция серверной архитектуры: n-слойная, DDD, шестиугольная, луковичная, чистая
Читайте нас в Telegram, VK и Дзен
Перевод статьи James bordane: What is a TURN Server?