Сбой WebRTC ICE вне локальной сети
Я пишу приложение WebRTC и, хотя все отлично работает в моей локальной сети. Тем не менее, у меня есть ICE Failed
ошибка, когда одноранговые узлы находятся в разных сетях.
Мой сервер STUN возвращает общедоступных IP-кандидатов, поэтому я предполагаю, что он настроен правильно. Проблема в том, что IP-адреса кандидатов не "правильно спарены". Браузер всегда пытается подключить один общедоступный IP-адрес к одному частному IP-адресу, поэтому соединение не удается (см. " Пары кандидатов").
В чем может быть проблема здесь? сервер сигнализации или rtcpeerconnection
конфигурация?
1 ответ
Используя только локальный хост и сервер-рефлексивный кандидат, вы можете подключиться, только если ваш NAT разрешает входящие пакеты от другого узла, обычно NAT не разрешает входящие пакеты от источника, который неизвестен NAT. Вы можете выполнить обнаружение NAT за пределами вашей реализации WebRTC, следуя RFC-3489 (устарел, но все же полезно), или просто создать привязку NAT, не зная тип NAT, который будет работать, если вы находитесь за конусом с ограниченным портом или с полноконусным NAT типы. Простым решением для подключения с использованием WebRTC было бы использование сервера TURN для выбора кандидата на ретранслятор, если вы не хотите выполнять обнаружение NAT и применять некоторый интеллект для обхода NAT.