Когда тестовая страница WebRTC печатает 172.20.4.15, она узнала, что в этой сети существует локальный интерфейс. Это настоящее раскрытие, и это не тот же вывод, что «медиа вышли через выход VPN». Обнаружение кандидатов и маршрутизация пакетов — разные механизмы, и большинство отчётов об утечках сливают их в один вердикт. Какой из двух перед вами, решает исправление.

Сбор происходит до того, как что-либо отправлено

Браузер перечисляет локальные интерфейсы, отправляет запрос привязки на сервер STUN и просит у сервера TURN выделение, а затем записывает результаты в описание сессии как строки кандидатов. Всё это завершается без вызова, без медиа и без собеседника. Поэтому список кандидатов — это запись обнаружения, а не передачи.

Современные браузеры могут заменять буквальный адрес кандидата хоста на mDNS-имя .local, так что страница не может прочитать частный IP. Локальная сеть по-прежнему видит multicast-запросы, которые разрешают это имя, значит адрес скрывается от приложения, а не удаляется из сети.

Порядок тоже важен: новая загрузка страницы собирает новый набор, с другим выделением TURN и, возможно, другим отражающим отображением. Два расходящихся запуска не обязательно означают две разные конфигурации.

Три типа кандидатов, три вида доказательств

Каждая строка происходит из отдельного наблюдения. Каждый тип отвечает на свой вопрос, а таблица разделяет их по тому, что они могут и чего не могут установить.

CandidateDerived fromWhat it establishesWhat it cannot establish
HostAn interface on the deviceA local address exists in that networkThat the peer can reach it
Server-reflexiveA STUN binding responseHow a NAT mapped this sourceWhich exit the media will use
Peer-reflexiveA connectivity check that arrivedAn address seen by the far sideThat it was ever advertised
RelayA TURN allocationThe relay server accepted the sessionThat the relay carries the call

Кандидата ретрансляции часто путают с интернет-адресом пользователя. Он принадлежит серверу TURN, и его наличие показывает, что ретранслятор был доступен, а не что браузер выбрал его. Та же путаница идёт в обратную сторону с кандидатами хоста, где mDNS-имя скрывает адрес от страницы, пока сеть всё ещё несёт запросы. Читайте тип раньше, чем значение.

Выбранная пара отвечает на вопрос о маршрутизации

ICE соединяет каждого локального кандидата с каждым удалённым, выполняет проверки связности по каждой паре и назначает победителя. Именно эта назначенная пара, видимая в собственной диагностике браузера, несёт медиа. Всё остальное в списке — проигравшая возможность.

Победитель сообщает форму пути. Ретранслятор к ретранслятору идёт через сервер TURN, пара хостов остаётся в локальной сети, а серверно-отражающая пара идёт напрямую через NAT. Это тот факт, который нужен проверке VPN, и он отличается от списка адресов. Два вызова с одинаковыми списками кандидатов могут выбрать разные пары.

Невыбранные кандидаты всё равно собирались, а сбор — это сетевой трафик, покидающий машину. Вызов, который в итоге использовал ретранслятор, не означает, что при построении списка ничего не раскрылось.

Элементы управления соответствуют целям, а не оценке утечки

Спецификация WebRTC по обработке IP описывает несколько политик: использовать только интерфейс, несущий маршрут по умолчанию; использовать все интерфейсы; отключить UDP без прокси, чтобы трафик шёл через ретранслятор или прокси. Каждая обменивает связность и задержку на иной вид экспозиции. Какую политику и под каким именем реализует браузер, зависит от платформы и версии.

Выбирайте политику по цели. Скрыть локальные адреса от страницы — одна цель; предотвратить прямой трафик между равноправными узлами — другая; удержать каждый пакет внутри туннеля — третья. Первая в основном о том, что узнаёт приложение, вторая о том, какой путь разрешён, а третью нужно обеспечивать и на границе платформы или VPN.

Какой бы элемент управления вы ни выбрали, проверьте обе половины: запустите тест сбора и запишите типы кандидатов, затем исследуйте выбранную пару во время реальной сессии. Чистый список адресов с прямым путём медиа — всё ещё путь, которого вы не планировали.

Похожие статьи