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

TURN не предназначен для проброса портов сервера через NAT, он поддерживает соединения точка-точка между узлами расположенными за NAT (как в IP-телефонии).

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

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

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

Как работает TURNПравить

TURN целесообразно использовать в тех случаях, когда использование STUN невозможно[1], так как этот протокол выдвигает большие требования к пропускной способности сервера.

Также как и в случае протокола STUN, TURN-агент со стороны клиента, обращается к TURN-серверу с просьбой предоставить публичный IP и порт для работы соединения. TURN-сервер возвращает свои IP и порт. Вторая сторона P2P соединения действует также. После установления соединения TURN-сервер работает в качестве прокси-сервера.

СсылкиПравить

ПримечанияПравить

  1. В силу технического отсутствия сервера STUN, или в силу того, что оба узла сети, пытающиеся коммуницировать, находятся за NAT и имеют только локальные IP-адреса.