Предположим, мы используем Asterisk с включенным WebRTC. Когда мы пытаемся установить соединение между двумя хостами в разных сетях, нам нужно использовать STUN-сервер для правильного определения их общедоступных адресов в случае, если они находятся за NAT. Но всякий раз, когда два конца соединения находятся в одной сети, нам не нужно прибегать к серверу STUN. Итак, вопрос в том, есть ли возможность каким-то образом определить, находятся ли клиенты в одной сети или нет?
Условно использовать STUN сервер
comment
На самом деле, использование STUN-сервера - отличный способ узнать, находятся ли два клиента в одной сети, но, поскольку использование STUN - это то, чего вы хотите избежать, то нет. :)
- person jib   schedule 18.10.2016
Ответы (1)
Не достоверно.
Но это не важно. STUN дешево и быстро. Он только отображает ваш общедоступный IP: адрес порта. Когда WebRTC согласовывает соединение, используются все обнаруженные адреса (локальные и заблокированные).
Если два узла находятся в одной частной локальной сети, алгоритм, который использует WebRTC, будет сходиться к использованию частных IP-адресов двух узлов вместо сопоставленных адресов, полученных из STUN. При подключении через STUN подключение по-прежнему прямое, а не релейное.
Точно так же, если вы также используете реле TURN, WebRTC (и любой протокол, подобный ICE) по умолчанию будет использовать частные адреса и адреса STUN, прежде чем вернуться к TURN.
person
selbie
schedule
17.10.2016