Traversal Using Relay NAT (TURN) — это протокол, который позволяет узлу за NAT или брандмауэром получать входящие данные через TCP или UDP соединения. Такая возможность особенно актуальна для узлов позади симметричных NAT, или брандмауэров, которые собираются стать принимающей стороной в соединении с одним конкретным узлом (peer-ом).
TURN не предусматривает работу сервера, находящегося за NAT (что предполагает множественные подключения клиентов в произвольные моменты), он поддерживает лишь подключение единственного клиента на один входящий порт (например, при IP-телефонии).
...
Протокол TURN описан в RFC 5766, обновление TURN для поддержки IPv6 описано в RFC 6156. Схема URI для TURN документирована в RFC 7065.
Session Traversal Utilities for NAT (STUN) предусматривает одно средство для прохождения NAT. STUN позволяет клиенту получить транспортный адрес (IP адрес и порт), который может быть полезен для приема пакетов от peer-ов. Однако адреса, полученные через STUN, не могут быть доступны всем peer-ам. Эти адреса работают в зависимости от топологии сети. Таким образом, STUN сам по себе не может обеспечить комплексное решение для обхода NAT.
...
Хотя TURN будет почти всегда обеспечивать подключение к клиенту, он создает большую нагрузку на провайдера TURN-сервера. Поэтому рекомендуется использовать TURN только в крайнем случае, предпочитая другие механизмы (например, STUN или прямое подключение), когда это возможно. Для достижения этого может использоваться методология Interactive Connectivity Establishment (ICE), чтобы найти оптимальное средство связи.
Код: Выделить всё
olej@nvidia ~ $ apt search turn
p code-saturne - General purpose Computational Fluid Dynami
p code-saturne-bin - General purpose Computational Fluid Dynami
p code-saturne-data - General purpose Computational Fluid Dynami
p code-saturne-doc - General purpose Computational Fluid Dynami
p code-saturne-include - General purpose Computational Fluid Dynami
p libclass-returnvalue-perl - return-value object that can be treated as
p libcontextual-return-perl - module for creating context-sensitive retu
p libopenturns-dbg - debug symbols for OpenTURNS
p libopenturns-dev - headers and development libraries for Open
p libopenturns0.3 - dynamic libraries for OpenTURNS
p libresiprocate-turn-client-1.9 - reSIProcate TURN client (reTurn) - shared
p libresiprocate-turn-client-1.9- - reSIProcate TURN client (reTurn) - develop
v libresiprocate-turn-client-dev -
p libreturn-multilevel-perl - Perl module to enable returning from a nes
p libreturn-value-perl - Perl module for polymorphic return values
p openturns-examples - examples of OpenTURNS functionalities
p openturns-validation - validation files for OpenTURNS
p python-openturns - Python front-end of OpenTURNS (aka TUI)
p python-openturns-dev - Python front-end of OpenTURNS (aka TUI)
v python2.7-openturns -
p resiprocate-turn-server - reSIProcate SIP stack - ICE/TURN server
p rfc5766-turn-server - TURN and STUN server for VoIP
v turn-server -
p turnin-ng - assignment submitter and manager
p turnserver - server for ICE/STUN/TURN, NAT traversal fo