Тест утечки WebRTC

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

01 · Что видит наш сервер

216.73.216.109

Amazon.com, Inc. · AS16509

Адрес, с которого уходит ваш трафик. При подключённом VPN это должен быть адрес VPN.

02 · Что выдаёт WebRTC

Сбор адресов…

Сравнение использует только публичные адреса и выполняется в вашем браузере. Чтобы узнать свой публичный адрес, браузер обращается к двум STUN-серверам, один от Google, другой от Cloudflare, и они видят ваш адрес так же, как любой сайт. Найденные публичные адреса отправляются на наш сервер с единственной целью: определить сеть, к которой они принадлежат. Локальные адреса остаются на вашем устройстве, и мы ничего не храним.

Почему браузер может знать больше одного адреса

Загрузка веб-страницы представляет собой простой обмен. Браузер спрашивает, сервер отвечает, и сервер узнаёт о вашей сети одно: адрес, с которого пришёл запрос. Видеозвонок устроен иначе. Два браузера пытаются передавать звук и видео напрямую друг другу, и для этого каждый должен сообщить другому, где до него можно достучаться.

Этим занимается WebRTC, функция браузера. Перед звонком она собирает все адреса, которые могут сработать, этот шаг называется ICE gathering. Она перечисляет адреса сетевых интерфейсов вашего устройства, затем задаёт публичному помощнику, STUN-серверу, один вопрос: «с какого адреса ты меня видишь?» Каждый ответ становится «кандидатом».

Любая веб-страница может запустить этот сбор несколькими строками JavaScript. Ей не нужен ни звонок, ни запрос разрешения, и на экране ничего не появляется. Если вопрос к STUN уходит мимо туннеля VPN или через интерфейс, который VPN не охватывает, в списке кандидатов оказывается адрес, выданный вам провайдером. Это и есть утечка WebRTC.

Что делает тест

  1. Когда страница загружается, наш сервер записывает адрес, с которого пришёл ваш запрос, и называет сеть, которой он принадлежит. Это окно 01.
  2. Ваш браузер открывает соединение WebRTC, которое никуда не ведёт, направленное на два STUN-сервера, один от Google и один от Cloudflare, и собирает кандидатов до семи секунд.
  3. Кандидаты сортируются. Частные диапазоны (10.x, от 172.16 до 172.31, 192.168.x), общие адреса операторов (от 100.64 до 100.127), адреса link-local и имена .local откладываются как локальные. Остальные считаются публичными.
  4. До шести публичных адресов отправляются на наш сервер, который возвращает сеть, к которой относится каждый.
  5. Каждый публичный адрес сравнивается с окном 01 и получает метку.

Как читать метки

МеткаПравилоЗначение
Тот жеСовпадает с адресом, который увидел наш серверWebRTC ничего не добавляет. При включённом VPN оба адреса принадлежат VPN.
ДругойТо же семейство (оба IPv4 или оба IPv6), но другой адресПри включённом VPN это, скорее всего, утекает ваш настоящий адрес.
Тот же провайдерДругое семейство, тот же оператор сети, что и в окне 01Обычно это IPv6-сторона того же подключения или того же VPN. Утечки нет.
Другой провайдерДругое семейство, другой оператор сетиОбычно IPv6-адрес от вашего интернет-провайдера, когда VPN туннелирует только IPv4.
ПроверитьДругое семейство, оператора определить не удалосьСравните его сами с адресом, который у вас при выключенном VPN.

Под списком страница сообщает, видны ли локальные адреса. Современные браузеры заменяют их случайным именем, оканчивающимся на .local, которое ничего не говорит сайту. Обычный адрес 192.168.x.x тоже не ведёт к вам, но это ещё одна деталь, по которой трекер может различать устройства.

«Нет публичного адреса» и «WebRTC выключен» означают одно: эта дверь закрыта. Либо браузер отказался собирать кандидатов, либо ни один STUN-ответ не вернулся.

Тест никак не может узнать, пользуетесь ли вы VPN. Без него два разных публичных адреса могут быть совершенно нормальны, например на линии и с IPv4, и с IPv6, а сайты всё равно видят ваш настоящий адрес. Красный результат становится проблемой, только когда VPN или прокси должен вас скрывать. Кроме того, тест охватывает WebRTC и ничего больше. Утечки DNS представляют собой отдельную тему.

Как закрыть утечку

В программе VPN
Ищите «WebRTC leak protection», «IPv6 leak protection» и «kill switch» и включите все три. Если провайдер не поддерживает IPv6, отключите IPv6 на сетевом адаптере на время подключения. VPN, существующий только в виде расширения браузера, защищает трафик страниц и может не трогать WebRTC, поэтому выбирайте полноценную программу.
Firefox
Откройте about:config и установите media.peerconnection.ice.default_address_only в true. Тогда WebRTC держится маршрута по умолчанию, то есть туннеля. Значение false для media.peerconnection.enabled полностью убирает WebRTC.
Chrome и Edge
Встроенного переключателя нет. Google выпускает расширение WebRTC Network Limiter с опцией «Use my default public interface only». В расширении uBlock Origin есть похожая настройка, «Prevent WebRTC from leaking local IP addresses».
Brave
Настройки, «Конфиденциальность и безопасность», «WebRTC IP handling policy»: выберите «Disable non-proxied UDP».

После каждого изменения перезагрузите эту страницу с подключённым VPN. Цель: каждая публичная строка с меткой «Тот же» или «Тот же провайдер» либо вообще ни одного публичного адреса.

Частые вопросы

Что такое утечка WebRTC?

Это когда веб-страница получает ваш настоящий IP-адрес через функцию WebRTC браузера, хотя VPN или прокси скрывает его от обычных запросов страницы. Странице достаточно короткого скрипта. Никаких разрешений на камеру или микрофон не требуется.

Я не пользуюсь VPN. Важен ли для меня этот тест?

Почти нет. Без VPN каждый сайт и так получает ваш настоящий адрес с каждым запросом, поэтому WebRTC ничего лишнего не выдаёт. Тест нужен тем, кто рассчитывает, что VPN или прокси скроет их местоположение.

Сломает ли что-нибудь отключение WebRTC?

Полное отключение останавливает звонки и демонстрацию экрана в браузере, то есть Google Meet, веб-версию Microsoft Teams, Discord, Jitsi и подобные. Ограничение WebRTC маршрутом по умолчанию или собственная защита VPN оставляют звонки рабочими.

Почему тест показывает IPv6-адрес при включённом VPN?

Многие VPN туннелируют только IPv4. Если интернет-провайдер даёт вам ещё и IPv6, трафик к IPv6-адресам может идти в обход туннеля. Включите в VPN защиту от утечек IPv6 или отключите IPv6 на устройстве.

Адрес .local или 192.168 считается утечкой?

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