Условно использовать STUN сервер

Предположим, мы используем Asterisk с включенным WebRTC. Когда мы пытаемся установить соединение между двумя хостами в разных сетях, нам нужно использовать STUN-сервер для правильного определения их общедоступных адресов в случае, если они находятся за NAT. Но всякий раз, когда два конца соединения находятся в одной сети, нам не нужно прибегать к серверу STUN. Итак, вопрос в том, есть ли возможность каким-то образом определить, находятся ли клиенты в одной сети или нет?


person mic4ael    schedule 17.10.2016    source источник
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