Утечка DNS происходит, когда ваше устройство отправляет запросы на разрешение доменных имён мимо туннеля VPN, обычно на резолвер вашего провайдера, и провайдер по-прежнему видит, какие сайты вы посещаете. Утечка WebRTC — родственная проблема браузера: веб-страница может узнать ваш настоящий IP-адрес, даже если VPN или прокси включены.
Обе утечки незаметны: VPN показывает «подключено», а сайты видят IP-адрес VPN при обычном трафике. В этом руководстве объясняется, почему возникает каждая из них, как её проверить и как устранить, а также разбирается близкая к ним утечка IPv6.
Что такое утечка DNS
Прежде чем браузер подключится к www.example.com, он должен спросить у DNS-резолвера IP-адрес сайта. Этот вопрос и ответ на него показывают, какой сайт вы собираетесь открыть. Если вы ещё не знакомы с процессом разрешения имён, наше руководство о том, как работает DNS, объясняет его шаг за шагом.
Правильно настроенный VPN отправляет DNS-запросы через туннель на резолвер, которым управляет провайдер VPN или который выбрали вы. Когда это не срабатывает и запросы идут напрямую на резолвер вашего интернет-провайдера, возникает утечка DNS. Сайт по-прежнему видит IP-адрес VPN, но у провайдера есть список всех доменов, которые вы запрашивали, с отметками времени.
Частые причины утечек DNS
- ОС продолжает использовать прежний резолвер. Клиент VPN не заменяет системные настройки DNS, или у DNS-сервера другого сетевого адаптера более высокий приоритет.
- Параллельные запросы в Windows. Windows может отправлять запрос на DNS-серверы сразу нескольких сетевых интерфейсов и использовать самый быстрый ответ, поэтому резолвер провайдера видит запрос, даже если его видит и резолвер VPN.
- DNS по IPv6. VPN обрабатывает DNS по IPv4, но в системе есть ещё и IPv6-резолвер от роутера, который используется вне туннеля.
- Раздельное туннелирование. Приложения, исключённые из VPN, по замыслу разрешают имена через обычный резолвер.
- Ручные настройки DNS на устройстве или роутере, которые переопределяют то, что задаёт VPN.
Как проверить утечку DNS
Специальные тесты утечки DNS заставляют ваш браузер запрашивать несколько случайных уникальных поддоменов домена, авторитетный сервер которого контролирует тестирующая сторона. Авторитетный сервер записывает, с каких IP-адресов резолверов пришли запросы на эти имена. Если хоть один из них принадлежит вашему провайдеру, а не провайдеру VPN, у вас утечка.
Упрощённую версию можно выполнить из терминала. У Akamai есть специальное имя, которое отвечает IP-адресом резолвера, спросившего о нём:
dig +short whoami.akamai.net
nslookup whoami.akamai.net
Выполните команду при включённом VPN, затем вставьте полученный IP в инструмент Поиск ASN. Если сеть принадлежит вашему провайдеру, у вас утечка DNS. Также проверьте, какие резолверы настроены в вашей системе:
- Windows:
ipconfig /allи посмотрите «DNS-серверы» на каждом адаптере. - macOS:
scutil --dns - Linux с systemd-resolved:
resolvectl status
Как устранить утечку DNS
- Включите в клиенте VPN защиту от утечки DNS, если такая опция есть. Большинство современных клиентов направляют весь DNS через туннель и блокируют порт 53 для других серверов.
- Удалите вручную настроенные DNS-серверы на сетевом адаптере или укажите вместо них резолвер VPN.
- Если VPN не поддерживает IPv6, отключите IPv6 на адаптере или включите защиту клиента от утечки IPv6.
- Включите функцию kill switch (аварийное отключение сети), чтобы ничто, включая DNS, не покидало устройство, пока туннель переподключается.
- Проверяйте заново после каждого изменения, а также после подключения к другой сети Wi-Fi.
Что такое утечка WebRTC
WebRTC — технология браузера, на которой работают видеозвонки и передача файлов напрямую между пользователями. Чтобы соединить два браузера напрямую, нужно найти все адреса, по которым каждый из них может быть доступен. Это делается через ICE (Interactive Connectivity Establishment), который собирает список кандидатов:
| Тип кандидата | Откуда он берётся | Пример |
|---|---|---|
| Host | Собственные сетевые интерфейсы устройства | 192.168.1.23 или имя mDNS |
| Server reflexive (srflx) | STUN-сервер сообщает публичный IP и порт, с которых пришёл запрос | 203.0.113.50 |
| Relay | TURN-сервер, который пересылает медиатрафик, если прямой путь не работает | IP TURN-сервера |
Любая веб-страница может запустить этот процесс несколькими строками JavaScript, не спрашивая разрешения, и прочитать кандидатов. Утечка происходит, когда запрос STUN покидает ваше устройство в обход VPN или прокси. Это часто бывает с браузерными расширениями-прокси и прокси SOCKS, которые направляют веб-запросы, но не UDP-трафик WebRTC, а также при раздельном туннелировании. Тогда кандидат server reflexive содержит ваш настоящий публичный IP.
Скрытие локальных адресов через mDNS
Раньше кандидаты host раскрывали частные адреса локальной сети, например 192.168.1.23, что помогало составлять цифровой отпечаток пользователей. Современные версии Chrome, Firefox, Safari и Edge заменяют их случайными именами вроде 3f1c2a9e-7b4d-4c1e-9a52-6d8e0f1b2c3a.local, которые разрешаются через многоадресный DNS только внутри локальной сети. Настоящие локальные адреса браузеры обычно раскрывают лишь после того, как странице предоставлен доступ к камере или микрофону.
Как проверить и устранить утечки WebRTC
Запустите инструмент Тест утечки WebRTC при включённом VPN или прокси. Он покажет всех кандидатов, которых раскрывает ваш браузер. Если какой-либо публичный адрес совпадает с тем, который у вас при выключенном VPN, у вас утечка. Чтобы её устранить:
- Используйте VPN с полным туннелем, а не прокси только для браузера. Когда весь UDP-трафик идёт через туннель, STUN-сервер видит IP-адрес VPN.
- Firefox: откройте
about:configи установитеmedia.peerconnection.enabledв значениеfalse. Это полностью отключает WebRTC, поэтому видеозвонки в браузере перестанут работать. - Браузеры на основе Chromium: простой пользовательской настройки нет, но корпоративная политика
WebRtcIPHandling(например,disable_non_proxied_udp) или надёжное расширение могут ограничить, какие интерфейсы использует WebRTC.
Утечки IPv6
Сегодня во многих сетях устройства получают и адрес IPv4, и адрес IPv6. Если ваш VPN создаёт туннель только для IPv4, у операционной системы по-прежнему остаётся рабочий маршрут IPv6 через вашего провайдера. Сайты с поддержкой IPv6 предпочитают его, поэтому видят ваш настоящий, глобально уникальный адрес IPv6, который часто идентифицирует вас лучше, чем адрес IPv4, общий для многих пользователей за NAT.
Проверяйте при подключённом VPN с помощью инструмента Тест IPv6. Нужно, чтобы IPv6-соединения не было вовсе либо адрес IPv6 принадлежал провайдеру VPN. Адрес из диапазона вашего интернет-провайдера означает утечку; устраните её, включив в клиенте поддержку IPv6 или защиту от утечек либо отключив IPv6 на сетевом адаптере на время работы VPN.
Часто задаваемые вопросы
Видит ли провайдер, какие сайты я посещаю, если у меня утечка DNS?
Он видит доменные имена, которые вы запрашиваете, но не страницы и не содержимое. Сам трафик по-прежнему идёт через VPN, поэтому провайдер не видит, что вы делаете на каждом сайте.
Важны ли утечки DNS, если я не пользуюсь VPN?
Этот термин применим, только когда вы ожидаете, что DNS пойдёт в другое место. Без VPN обычно и так используется резолвер вашего провайдера. Чтобы провайдер не видел ваши запросы, можно перейти на сервис зашифрованного DNS.
Безопасно ли отключать WebRTC?
Да, обычному просмотру сайтов это не помешает, но видеозвонки в браузере, демонстрация экрана и некоторые сайты для обмена файлами перестанут работать, пока вы не включите его снова.
Почему тест WebRTC показывает адрес .local?
Это защита mDNS в браузере работает так, как задумано. Случайное имя .local скрывает ваш частный IP в локальной сети от сайта.
Комментарии
Войдите, чтобы оценить этот инструмент.
Поделитесь советом, задайте вопрос или расскажите, как вам помог инструмент.
Комментариев пока нет. Расскажите первым, как всё прошло.