ServerAdmin.ru
28.9K subscribers
304 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Те, кто сталкивался с настройкой VoIP телефонии, наверняка знают, что такое протокол и сервер STUN. Там постоянно приходится с ним взаимодействовать. Не припомню, где он использовался ещё. Но последнее время в связи с развитием протокола WebRTC, а также программных средств для видеоконференций на его основе, тема снова стала актуальной, даже ещё больше, чем с VoIP. Кратенько своими словами расскажу, что такое STUN и TURN.

Протокол STUN и сервера на его основе решают очень простую задачу. Позволяют клиентам за NAT узнать свой внешний IP адрес и порт, с которого ушёл запрос, чтобы организовать соединение к себе для прохождения голосового или видео потока. Клиент делает запрос на внешний сервер STUN, а тот ему отвечает, что запрос был сделан с такого-то IP и порта. Клиент передаёт эту информацию тому, кто хочет с ним соединиться.

Дополнением протокола STUN стал TURN. Он включает в себя возможности STUN, но и добавляет новые. В зависимости от настроек NAT на конкретном шлюзе, не всегда можно пробиться к клиенту извне. Данные, которые передаст STUN сервер клиенту, будут актуальны только для подключения этого STUN сервера, но не других клиентов. Шлюз просто отбросит от них соединения. Отдельная проблема, когда оба клиента за таким NAT.

TURN сервер с помощью дополнительного суб-протокола ICE способен оценить варианты взаимодействия двух клиентов, которые к нему обратились. Он проверяет их возможность соединиться напрямую и с помощью STUN сервера. Если оба варианта не сработают, то он выступит в роли ретранслятора и организует соединение клиентов через себя. При этом сами клиенты будут думать, что они соединены напрямую.

Наиболее известной бесплатной реализацией TURN сервера является Coturn, который можно развернуть у себя. При этом в сети довольно много и бесплатный серверов, которые реализуют возможности этих протоколов. Например, известный STUN сервер от гугла - stun.l.google.com. Можно использовать для каких-то своих задач. TURN полностью бесплатный вряд ли можно найти. За это уже деньги надо платить, но есть сервисы с ограниченными бесплатными тарифными планами.

Проверить работу STUN и TURN серверов можно с помощью публичного сервиса:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

Указываете адрес сервера в формате stun:stun.l.google.com:19302 и запускаете проверку. Наглядно видно, что возвращает STUN сервер - внешний IP адрес и порт.

▶️ Вот тут на индусском английском рассказано с картинками то, что я описал.

#voip #webrtc