@beatsspam

Как правильно пользоваться stun?

Интересует поверхностный алгоритм работы со stun udp для обхода Nat. Давайте без конкретного языка программирования. Я себе вижу это так:

  1. С компа #1 обращаюсь к stun серверу, получаю свой внешний ip:port. Отключаюсь от stun сервера, закрываю сокет.
  2. На компе #1 создаю сокет на прослушку только что полученного порта. +- добавляю опционально этот порт через UPnP в таблицу маршрутизации 1к1 .
  3. С компа #2 могу теперь отправлять пакеты на ip:port компа #1 который тот получал через stun.


Теперь подтвердите или опровергните так или нет? Спрашиваю потому как такая схема не сработала на port restricted nat у двух провайдеров ростелеком и мтс (оба оптоволокно 100мбит/с).
  • Вопрос задан
  • 6818 просмотров
Пригласить эксперта
Ответы на вопрос 1
Tyranron
@Tyranron
Ну, использовать сам STUN достаточно просто - обратиться к серверу и получить свой внешний IP + порт, о чём Вы и написали.

Вопрос, получается, больше заключается в том, как организовать пробивку NAT используя STUN, то есть, сигналинг (signaling).

Вообще, исчерпывающий ответ дан в RFC 5245 - Interactive Connectivity Establishment (ICE) (используется в WebRTC).
Более понятным языком у Mozilla.
Заметьте, что на диаграммах в первую очередь создаётся RTCPeerConnection, что у Caller, что у Callee. Я не совсем в курсе, что там под капотом при этом происходит, но могу предположить что сначала создается сокет на прослушку, потому уже идёт запрос на STUN-сервер, который и "пробивает" таблицу роутинга и возвращает "пробитый" внешний порт + адрес, который и отправляется другому узлу, и уже потом другой узел может подключиться на "пробитый" внешний порт.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы