Утечка WebRTC — одна из самых частых причин, по которой VPN вроде бы включён, а сайт всё равно видит ваш настоящий IP-адрес. Проблема возникает не в самом VPN, а в браузере: технология для видеозвонков умеет определять сетевые адреса устройства и отдавать их JavaScript-коду на странице. Разберём, как это работает и как быстро проверить себя.
Что такое WebRTC и зачем ему ваш IP
WebRTC (Web Real-Time Communication) — встроенный в браузеры стандарт для звонков, видеоконференций и передачи файлов напрямую между пользователями, без установки плагинов. Чтобы два браузера могли соединиться напрямую, каждому нужно узнать, по каким адресам его можно достичь. Для этого браузер собирает так называемых ICE-кандидатов: локальные адреса сетевых интерфейсов и публичный адрес, который он узнаёт, отправив запрос на внешний STUN-сервер.
Список кандидатов доступен скрипту на странице. Любой сайт может запустить этот механизм в фоне, без звонка и без вашего согласия, и прочитать полученные адреса.
Когда утечка WebRTC обходит VPN
Если VPN-приложение заворачивает в туннель весь трафик системы, запрос к STUN-серверу тоже уходит через туннель, и сайт увидит IP VPN-сервера. Утечка становится реальной в нескольких типичных ситуациях:
- Вы используете VPN-расширение для браузера: по сути это прокси только для веб-страниц, а WebRTC-запросы по UDP могут идти мимо него. Подробнее о разнице — в статье VPN-расширение или приложение.
- Включён split tunneling, и браузер исключён из туннеля.
- VPN не поддерживает IPv6, а у провайдера он есть — тогда наружу может уйти IPv6-адрес (см. утечка IPv6 и VPN).
- Соединение VPN кратковременно оборвалось, а kill switch выключен.
Локальные адреса вида 192.168.x.x современные Chrome, Edge, Firefox и Safari по умолчанию скрывают, подменяя их случайными именами .local. Поэтому основной риск сегодня — именно публичный IP.
Как проверить утечку WebRTC
- Отключите VPN и откройте проверку IP-адреса — запомните свой реальный адрес.
- Включите VPN и откройте тест на утечку WebRTC.
- Сравните: если среди найденных адресов есть ваш реальный публичный IP, утечка есть. Если видны только адрес VPN-сервера и замаскированные .local-имена — всё в порядке.
- Повторите тест в каждом браузере, которым пользуетесь, и заодно проверьте утечку DNS.
Как закрыть утечку
Самое надёжное решение — пользоваться полноценным VPN-приложением, а не расширением, и держать включённым kill switch. Если нужна дополнительная страховка на уровне браузера:
- Firefox: в about:config параметр media.peerconnection.enabled можно переключить в false — WebRTC отключится полностью, но звонки в браузере перестанут работать.
- Chrome и другие браузеры на Chromium: полностью выключить WebRTC штатно нельзя, но можно ограничить его маршрутизацию расширениями вроде официального WebRTC Network Limiter или соответствующей настройкой в uBlock Origin.
- Проверьте, что ваш VPN туннелирует IPv6 или блокирует его, пока подключён.
- Многие провайдеры из раздела VPN для приватности встраивают защиту от утечек WebRTC в свои приложения и расширения — это стоит проверить в описании перед покупкой.
Нужно ли полностью отключать WebRTC?⌄
Обычно нет. Если VPN-приложение туннелирует весь трафик и тест не показывает реальный IP, отключение WebRTC лишь сломает звонки в браузере без заметной пользы.
Бывает ли утечка WebRTC на телефоне?⌄
Да, механизм тот же: мобильные браузеры тоже поддерживают WebRTC. Проверка делается так же — откройте тест в мобильном браузере при включённом VPN.