Вопрос или проблема
Существуют веб-сайты, которые утверждают, что проводят “тесты на утечку DNS”. Меня не так сильно волнуют утечки DNS, но мне интересно, как сайт знает, какой DNS-сервер я использую? Я предположил, что это будет заголовок, отправленный в HTTP-запросе, но не смог его найти.
Пример сайта: https://www.dnsleaktest.com/
ИСПРАВЛЕНИЕ: существует множество других примеров, найденных с помощью поиска в Google.
Это трюк разрешения DNS, который также можно выполнить с использованием не-HTTP протоколов, но в данном случае он выполняется с помощью случайных имен хостов и изображений размером ноль пикселей через HTTP.
Посмотрите на исходный код страницы, и вы увидите ряд случайных поддоменов длиной 10 символов, запрашиваемых для нескольких URL. Это очень уникальные имена хостов, которые ни ваш компьютер, ни ваш интернет-провайдер, ни, что более важно, ваш поставщик DNS не кэшировали в локальной DNS.
Когда эти уникальные имена хостов попадают к вашему поставщику DNS, им приходится запрашивать их с веб-сайта компании-тестировщика, которая затем сопоставляет IP-адрес владельца, сделавшего уникальный запрос DNS, и затем уведомляет вас о названии компании, которая сделала запрос с помощью быстрого поиска.
Список рандомизированных имен хостов для одного и того же домена
ixc9a5snm4.dnsleaktest.com
rhl50vm36o.dnsleaktest.com
4xov3y3uvc.dnsleaktest.com
2n5t99gbzp.dnsleaktest.com
6mzklkved4.dnsleaktest.com
d6z20e9c2x.dnsleaktest.com
можно найти в следующем HTML (ваши имена хостов будут другими):
<img width=0 height=0 src="https://ixc9a5snm4.dnsleaktest.com">.
<img width=0 height=0 src="https://rhl50vm36o.dnsleaktest.com">.
<img width=0 height=0 src="https://4xov3y3uvc.dnsleaktest.com">.
<img width=0 height=0 src="https://2n5t99gbzp.dnsleaktest.com">.
<img width=0 height=0 src="https://6mzklkved4.dnsleaktest.com">.
<img width=0 height=0 src="https://d6z20e9c2x.dnsleaktest.com">.
Я об этом не знал. Удивительно интересно. Похоже, это работает, пытаясь инициировать соединения с длинными случайными поддоменами, которые контролирует, и, вероятно, может сгруппировать запросы на разрешение доменов от вызывающего DNS-сервера.
Рис. 1: Список запросов, инициированных браузером, которые не удались
На самом деле это стандартный трекер с использованием генератора изображений нулевого размера:
<pre class="progress">Запрос раунда Прогресс... Серверы найдены
<br/> 1
<img width=0 height=0 src="https://1k9oraud8h.dnsleaktest.com">.
<img width=0 height=0 src="https://dajo0hwg9c.dnsleaktest.com">.
<img width=0 height=0 src="https://6crg9z68gj.dnsleaktest.com">.
<img width=0 height=0 src="https://nwitgnyo7r.dnsleaktest.com">.
<img width=0 height=0 src="https://z3yine4a7p.dnsleaktest.com">.
<img width=0 height=0 src="https://2tvxmp2yd5.dnsleaktest.com">.
</pre>
Интересно, поскольку я по умолчанию блокирую piwik (используемый аналитический движок), все запросы не удались, но мои DNS-серверы все равно были идентифицированы, что означает, что они полагаются не только на HTTP-трекер.
Добавляю пояснение к вопросу @Falco.
Изображения, вероятно, не загрузятся ни у кого, поскольку поддомены не существуют. Следовательно, запросы никогда не генерируются (недействительный DNS-запрос), как вы можете видеть на скриншотах ниже. Единственное отличие в моем случае в том, что они не получают идентификатор отслеживания.
Рис. 2: Доменное имя никогда не разрешается для любого из поддоменов
Рис. 3: Следовательно, HTTP-запросы никогда не выполняются браузером
Поскольку я не могу получить доступ к серверной части, я просто предполагаю, что происходит за кулисами. Вероятно, у них есть хук на их DNS-сервере, который записывает исходный IP для каждого DNS-запроса, полученного в их БД (возможно, этот поток также делает поиск имени хоста и провайдера перед сохранением данных). Обратите внимание, что это запрос DNS, а не сформировавшийся HTTP-запрос. Единственное, что центральному веб-серверу нужно сделать, это вернуть строку, соответствующую поддоменам, связанным с моим браузером.
Самый простой способ будет соответствовать один-к-одному с идентификатором отслеживания. Обычно он отправляет cookie отслеживания piwik с именем вроде pk_id
и в конце происходит дополнительный запрос к piwik.php
с множеством деталей отслеживания. В моем случае этот cookie никогда не устанавливается, и дополнительный переход не происходит. Я не вижу других средств идентификации сессии, я взгляну на это более внимательно в выходные, если сообщество не раскопает это.
Ответ или решение
Вопрос о том, как веб-сайты определяют, какой DNS-сервер использует клиент, вызывает интерес у многих пользователей, особенно в контексте тестирования на утечки DNS. В этой статье мы подробно рассмотрим, как работают эти тесты, включая методику, стоящую за определением используемого DNS, и то, как они используют запросы к уникальным поддоменам.
Понимание DNS и его роли в веб-трафике
DNS (Domain Name System) — это система, которая отвечает за преобразование доменных имен в IP-адреса, необходимые для маршрутизации запросов в интернете. Когда пользователь вводит URL-адрес в браузере, процесс начинается с запроса DNS, который отправляется на предустановленный DNS-сервер (обычно предоставляемый интернет-провайдером или сторонним сервисом, таким как Google DNS или OpenDNS).
Методы тестирования на утечки DNS
-
Использование уникальных поддоменов: Веб-сайты, такие как dnsleaktest.com, используют метод генерации уникальных поддоменов для отправки запросов DNS. Например, они могут генерировать случайные поддомены, такие как
ixc9a5snm4.dnsleaktest.com
, которые затем запрашиваются черезIMG
тег с нулевыми размерами. -
Запросы к несуществующим поддоменам: Поскольку сгенерированные поддомены уникальны и не будут кешироваться ни на устройстве пользователя, ни на их DNS-сервере, каждый запрос автоматически регистрируется на стороне DNS-сервера без предшествующих записей о домене. Таким образом, когда DNS-сервер получает запрос на этот поддомен, он отправляет его к корневому DNS-серверу, который относится к домену
dnsleaktest.com
. -
Определение IP-адреса клиента: Когда DNS-сервер обрабатывает запрос и получает информацию о поддомене, он также «видит» IP-адрес клиента, который инициировал DNS-запрос. Это позволяет сайту сообщить пользователю, какой DNS-сервер используется на основе IP-адреса, ассоциированного с полученным запросом.
Использование HTTP запросов и их отслеживание
Хотя основным методом является механизм DNS-запросов, тесты на утечку DNS также могут включать ссылки на сервер аналитики или другие скрипты для отслеживания. Для этого используются нулевые изображения или другие элементы, которые инициируют HTTP-запросы. Если пользователь заблокировал такие скрипты, как, например, Piwik, это не помешает определению DNS-сервера, так как основной метод остается в силе.
Заключение
Методы, используемые сайтами для определения DNS-сервера клиента, представляют собой комбинацию трюков DNS и механизмов веб-трафика. Уникальные поддомены играют ключевую роль, позволяя эффективно регистрировать запросы без предварительной кэширования. Следовательно, даже если клиент заблокировал отслеживание через HTTP-запросы, информация о DNS-сервере все равно может быть получена.
Рекомендации
Если вы хотите лучше понять, какой DNS-сервер используется в вашей сети, вы можете перейти на такие тестовые сайты, как dnsleaktest.com или perfect-privacy.com. Они предоставляют простое и наглядное средство для диагностики проблем с вашей сетью, а также помогают повысить вашу конфиденциальность в интернете.