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