Traversal Using Relay NAT

Traversal Using Relay NAT (TURN) — сетевой протокол, который позволяет узлу, расположенному за NAT или брандмауэром, получать входящие данные через TCP или UDP соединения. Эта функция полезна для узлов, находящихся за симметричными NAT или брандмауэрами и собирающихся стать принимающей стороной в соединении с определённым узлом (peer-ом).

TURN не предназначен для проброса портов сервера через NAT. Он поддерживает соединения точка-точка между узлами, находящимися за NAT, аналогично тому, как это происходит в IP-телефонии.

В этом контексте TURN сохраняет функции безопасности, предоставляемые симметричными NAT и брандмауэрами, но изменяет таблицы трансляции таким образом, чтобы узел на внутренней стороне мог стать принимающей стороной соединения.

Протокол TURN описан в RFC 5766, обновление TURN для поддержки IPv6 описано в RFC 6156. Схема URI для TURN документирована в RFC 7065.

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

Session Traversal Utilities for NAT (STUN) предусматривает один из способов прохождения NAT. STUN позволяет клиенту получить транспортный адрес (IP адрес и порт), который может быть полезен для приема пакетов от peer-ов. Однако адреса, полученные через STUN, не могут быть доступны всем peer-ам. Эти адреса работают в зависимости от топологии сети. Таким образом, STUN сам по себе не может обеспечить комплексное решение для обхода NAT.

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

Хотя TURN будет почти всегда обеспечивать подключение к клиенту, он создает большую нагрузку на провайдера TURN-сервера. Поэтому рекомендуется использовать TURN только в крайнем случае, предпочитая другие механизмы (например, STUN или прямое подключение), когда это возможно. Для достижения этого может использоваться методология Interactive Connectivity Establishment (ICE), чтобы найти оптимальное средство связи.