Реферальная программа →
ГлавнаяГлоссарийУтечка DNS (DNS leak)
Глоссарий

Утечка DNS (DNS leak)

Дефект приватности, при котором DNS-запросы идут в обход прокси, раскрывая вашему провайдеру или третьей стороне, какие сайты вы посещаете.

Утечка DNS происходит, когда ваше устройство разрешает доменные имена через не тот DNS-сервер - обычно вашего провайдера - вместо прокси. Даже если реальный веб-трафик идёт через прокси, DNS-запрос, превращающий имя вроде example.com в IP-адрес, может «сбежать» из туннеля, раскрывая вашему провайдеру (или тому, кто держит этот DNS) ровно те сайты, которые вы посещаете.

Это сводит на нет часть смысла использования прокси ради приватности. Вы можете скрывать свой IP от цели, но утечка DNS отдаёт историю сёрфинга третьей стороне. Это частый и легко упускаемый дефект, потому что страница всё равно загружается корректно - со стороны пользователя ничего не выглядит неправильно.

Исправление зависит от протокола прокси. SOCKS5 поддерживает удалённое разрешение DNS: прокси резолвит имя хоста за вас, так что запрос никогда не уходит через ваш локальный DNS. HTTP-прокси, обрабатывающие полный запрос, тоже резолвят удалённо. Утечки обычно случаются, когда ПО неправильно настроено резолвить DNS локально, прежде чем передать соединение прокси.

Чтобы избежать утечек DNS, используйте SOCKS5 с удалённым DNS (или убедитесь, что клиент отправляет прокси имена хостов, а не заранее разрешённые IP), и проверьте DNS-leak-тестом. Для скрапинга удалённый DNS также важен для точности - вы хотите, чтобы местоположение прокси разрешало гео-специфичные имена хостов, а не ваше собственное.

Запрос, который происходит до запроса

Прежде чем клиент дойдёт до example.com, он должен превратить имя в адрес. Если это происходит на вашей машине, ваш резолвер, обычно провайдерский, видит каждый домен, куда вы ходите. Сам запрос потом уйдёт через прокси, но список назначений уже утёк той стороне, от которой вы его прятали.

С http-прокси вопрос почти не встаёт: вы отдаёте прокси полный URL, и имя разрешается на его стороне. Утечка живёт в SOCKS5, потому что протокол допускает оба поведения, а решает клиент. Отправить адрес значит разрешить локально, отправить имя значит поручить прокси.

Браузеры добавляют своё. Chrome и Firefox умеют ходить в DNS поверх HTTPS к резолверу по своему выбору, обходя и системные настройки, и в ряде конфигураций прокси. Профиль может выглядеть корректно проксированным и при этом резолвить имена через постороннего.

Ущерб двойной. Раскрывается список целей, и ломается география: близкий к вам резолвер вернёт близкий к вам сервер, и запрос, который должен был выглядеть местным для Бразилии, придёт на европейский узел.

Как сделать, чтобы имя разрешалось у нас

Решает одна буква в схеме. Пишите socks5h вместо socks5, и имя уедет к нам:

С утечкой и без

# утечка: ваш резолвер видит цель
curl -x socks5://login:password@proxy.sotaproxy.com:10000 https://example.com

# без утечки: имя разрешаем мы
curl -x socks5h://login:password@proxy.sotaproxy.com:10000 https://example.com

# http-схема разрешает на нашей стороне по умолчанию
curl -x http://login:password@proxy.sotaproxy.com:10000 https://example.com
  • В Python requests с socks5h:// ведёт себя правильно после установки socks-расширения. Обычный socks5:// резолвит локально, и никто об этом не предупреждает.
  • В антидетект-браузере выключите DNS поверх HTTPS в настройках профиля, иначе браузер пойдёт к своему резолверу независимо от прокси.
  • WebRTC это отдельная утечка с тем же последствием. В профилях под аккаунты его надо выключать, иначе скрипт узнает ваш реальный адрес.
  • Проверяйте через профиль, а не из обычного браузера. Значение имеет то, что делает профиль, а не ваш рабочий стол.

Как неверно понимают утечку DNS

Утечка не раскрывает содержимое

Она раскрывает, какие домены вы запрашивали. Содержимое защищено TLS, но список назначений часто и есть чувствительная часть.

Прокси при этом не сломан

Утечка означает, что разрешение имени пошло другим путём, чем соединение. Оба факта верны одновременно, и прокси работает ровно как ему сказали.

socks5 и socks5h выглядят как опечатка

Это два разных поведения. Большинство утечек в скрапинг-стеках сводятся к одному символу.

VPN не чинит DoH в браузере

Браузер всё равно пойдёт к своему резолверу поверх HTTPS. Выключать надо в профиле, а не надеяться на туннель.

Смотри на практике

Готов использовать утечка dns (dns leak)?

SotaProxy даёт доступ к ротирующим резидентским, мобильным, дата-центр и ISP прокси. Без минимальных платежей.

Начать