Что такое утечка WebRTC
WebRTC — технология браузера для видеозвонков, голосового чата и демонстрации экрана. Чтобы соединить два устройства напрямую, она должна узнать адреса, по которым они достижимы, поэтому собирает кандидатов: локальные адреса сети, адреса, найденные через публичный STUN-сервер, и адреса ретрансляции.
Обычно это безобидно. Утечка случается, когда браузер сообщает адрес, который не должен быть виден, чаще всего настоящий адрес домашнего соединения, пока остальной трафик идёт через VPN. Сайт видит адрес VPN в обычных запросах и настоящий адрес от WebRTC, и они не совпадают.
Это не вредоносное ПО и не редкость. Причина в том, что трафик WebRTC может идти другим путём, чем остальной браузер, особенно если VPN покрывает только часть маршрутов или только IPv4.
Как работает этот тест
Тест открывает в браузере соединение WebRTC, направляет его на публичный STUN-сервер и записывает полученные кандидаты. Каждый кандидат описан типом и адресом: host — локальные адреса, server-reflexive — публичный адрес, видимый снаружи, relay — адреса от TURN-сервера.
Затем результаты сравниваются с IP-адресами, которые показывают обычные веб-запросы вашего соединения. Если публичный адрес WebRTC совпадает, сообщать о расхождении нечего. Если нет, страница перечисляет его, чтобы вы решили, должен ли он быть доступен. Локальные адреса в виде случайных имён .local создаёт сам браузер, чтобы не раскрывать приватный адрес вашей сети.
У теста есть ограничения. Он проверяет сигналы WebRTC, IPv6 и часового пояса в браузере. DNS он пока не тестирует: для проверки утечки DNS нужен другой метод, описанный ниже.
Как управлять WebRTC в каждом браузере
Единого переключателя для всех браузеров нет. Варианты ниже — то, что реально предоставляет каждый браузер. Отключение WebRTC ломает видеозвонки в браузере, поэтому меняйте настройку только если нужна защита.
Chrome и Edge
В этих браузерах нет пользовательской настройки адресов WebRTC. Администратор может задать политику WebRtcIPHandlingPolicy, чтобы ограничить или отключить UDP без прокси, а расширения могут блокировать кандидатов WebRTC, но тогда расширению нужно разрешение на изменение страниц. Самый надёжный подход с Chrome или Edge — VPN-клиент, блокирующий трафик вне туннеля.
Firefox
Откройте about:config, найдите media.peerconnection.enabled и установите false, чтобы полностью отключить WebRTC. Промежуточный вариант — media.peerconnection.ice.no_host: он прекращает передачу локальных адресов, сохраняя звонки. Это расширенные настройки, и обновление браузера может их сбросить.
Safari
Safari по умолчанию скрывает локальные адреса: заменяет их mDNS-именами вроде случайной строки с окончанием .local. Простой пользовательской настройки для отключения WebRTC в Safari нет, поэтому публичный адрес всё ещё может быть получен через STUN-сервер, если браузеру это разрешено.
Brave
В настройках Brave есть политика обработки IP для WebRTC с вариантами: использовать только публичный интерфейс по умолчанию или отключить UDP без прокси. Более строгий вариант не даёт WebRTC раскрывать адреса вне вашего прокси или VPN.
VPN-клиенты
Многие VPN-приложения включают защиту от WebRTC или утечек, а некоторые — kill switch, обрывающий трафик при падении туннеля. Проверьте настройки и документацию клиента. Если такой возможности нет, ограничьте WebRTC в браузере.
Утечки IPv6
VPN, работающий только с IPv4, может оставить трафик IPv6 на исходном пути. Если у вашей сети есть работающий IPv6, сайты с его поддержкой могут быть достигнуты через провайдера, пока IPv4 идёт по туннелю, и два адреса указывают на разные сети.
Сводка приватности отмечает это, когда адреса IPv4 и IPv6 принадлежат разным сетям. Решение зависит от клиента: ищите опцию IPv6 в настройках VPN или отключите IPv6 на соединении, если туннель его не несёт. Полная блокировка IPv6 — компромисс, потому что сервисы только с IPv6 станут недоступны.
Утечки DNS
DNS — система, превращающая имена в адреса. Когда вы открываете сайт, устройство спрашивает у резолвера, какой адрес принадлежит этому имени. Если эти вопросы уходят резолверу провайдера, а не через туннель, провайдер видит каждое имя, которое вы ищете, даже если веб-трафик шифрован.
Шифрованный DNS через DNS-over-HTTPS или DNS-over-TLS защищает вопрос на пути между устройством и резолвером, но сам по себе не устраняет несоответствие между выбранным резолвером и используемым туннелем. Хорошо настроенный VPN пропускает DNS через туннель, настроенный плохо — может его утечь.
Этот сайт пока не проводит проверку утечки DNS. Для правильного выполнения нужно опрашивать специальные тестовые домены и наблюдать, какой резолвер отвечает; это запланировано отдельной функцией. Пока страница утечек сообщает только о несоответствиях WebRTC, IPv6 и часового пояса и говорит об этом вместо догадок.
Несоответствия часового пояса и языка
Браузер сообщает часовой пояс и список языков, и сайты могут сравнить их со страной, выведенной из вашего IP-адреса. Выход VPN в другой стране часто оставляет часовой пояс и язык браузера прежними, поэтому само несоответствие может выдать использование туннеля.
Это не утечка в смысле раскрытого адреса, потому что эти значения намеренно доступны каждой странице. Это полезный контекст: если хотите согласованный профиль, приведите часовой пояс и язык браузера к месту выхода или примите, что сочетание необычно.
Частые вопросы
Раскрывает ли WebRTC мой настоящий IP при подключённом VPN?
Может. WebRTC собирает адреса-кандидаты независимо от остального трафика браузера, поэтому если VPN не перехватывает этот трафик, публичный адрес из STUN может быть вашим настоящим. Тест на этой странице и существует, чтобы показать, совпадают ли адреса.
Ломает ли отключение WebRTC видеозвонки?
Звонки и демонстрация экрана в браузере, использующие WebRTC, перестанут работать, включая многие сервисы конференций. Если нужно лишь прекратить передачу локальных адресов, выберите более узкую настройку: media.peerconnection.ice.no_host в Firefox или более строгую политику обработки IP WebRTC в Brave.
Что такое кандидат mDNS?
Это локальный адрес, спрятанный браузером за случайным именем с окончанием .local, которое разрешается только в вашей сети. Safari использует это по умолчанию, другие браузеры — в некоторых условиях. Видеть имя mDNS значит, что ваш приватный адрес не был выдан в читаемом виде.
Можно ли проверить утечки DNS на этом сайте?
Пока нет. Текущий тест охватывает сигналы WebRTC, IPv6 и часового пояса в браузере. Проверка утечки DNS требует специальных тестовых доменов и другого типа запроса; она в планах, а не молча пропущена.
Что такое утечка IPv6?
Она происходит, когда туннель защищает IPv4, но трафик IPv6 всё равно выходит через исходное соединение. Сайты с поддержкой IPv6 могут достичь вас по незащищённому адресу, поэтому сеть, видимая WebRTC или запросом IPv6, отличается от сети, видимой по IPv4.
Предотвращают ли прокси и Tor утечки WebRTC?
Не автоматически. Прокси обычно покрывает только обычные запросы браузера, и WebRTC может обойти его так же, как частичный VPN. Tor Browser поэтому поставляется с отключённым WebRTC. Каким бы инструментом вы ни пользовались, после него запустите тест и проверьте, совпадают ли адреса.