Каждый раз, когда вы открываете сайт, устройство просит резолвер превратить доменное имя в IP-адрес. Этот вопрос — открытая запись о том, куда вы собираетесь пойти, и по умолчанию он уходит тому резолверу, который вам выдала сеть, то есть обычно резолверу вашего интернет-провайдера.
Утечка DNS — это когда такие запросы уходят не туда, куда вы рассчитывали. Типичный случай: устройство настроено на приватный или шифрованный резолвер, но по одной из нескольких структурных причин всё равно продолжает отправлять часть или все запросы провайдеру. Внешне ничего не ломается — поэтому утечки годами остаются незамеченными.
Что именно раскрывает DNS?
Домен, момент времени и источник — а этого достаточно, чтобы восстановить сессию просмотра.
Классический DNS работает без шифрования на порту 53. Любой, кто находится между вами и резолвером, может прочитать запрос, а сам резолвер видит их все, привязанными к вашему подключению. Конкретную страницу он не видит, но чувствительная часть обычно как раз домен.
Шифрование меняет то, у кого хранится эта запись, а не то, существует ли она:
| Транспорт | Шифруется? | Кто видит запрос |
|---|---|---|
| Обычный DNS (порт 53) | Нет | Ваша сеть, ваш провайдер, резолвер |
| DNS over TLS (DoT, порт 853) | Да | Резолвер, который вы выбрали |
| DNS over HTTPS (DoH, порт 443) | Да | Резолвер, который вы выбрали; сети труднее отличить это от веб-трафика |
| DNSSEC | Нет — он аутентифицирует | То же, что у обычного DNS; он доказывает подлинность ответов, но не прячет их |
DNSSEC чаще всего понимают неправильно. Он подписывает ответы, чтобы их нельзя было подделать. Конфиденциальности он не даёт вообще никакой.
Из-за чего утечки происходят на самом деле?
Почти все они сводятся к шести структурным причинам.
| Причина | Механизм |
|---|---|
| Раздельная маршрутизация | Часть трафика идёт через туннель, а DNS — через интерфейс по умолчанию |
| IPv6 не заворачивается | Туннель обслуживает только IPv4, поэтому запросы IPv6 уходят провайдерским путём |
| Параллельное разрешение в ОС | Windows умеет опрашивать все интерфейсы разом и брать первый ответ |
| DoH на уровне браузера | Браузер разрешает имена независимо от системной настройки, в обе стороны |
| Подмена на роутере | Роутер навязывает свой резолвер через DHCP или перехватывает порт 53 |
| Captive portal | Сети отелей и аэропортов угоняют DNS, чтобы подсунуть страницу входа |
Случай с браузером стоит расписать, потому что он бьёт в обе стороны. Браузер со своей настройкой DoH может обойти тщательно настроенный системный резолвер, и ровно так же правильно настроенный браузер может скрыть тот факт, что всё за его пределами по-прежнему утекает. Проверить одно и сделать вывод о другом — самая частая ошибка тестирования.
Как это проверить?
Проверяйте каждый слой отдельно, потому что их показания могут расходиться.
Операционная система — какие резолверы прописаны:
| Система | Команда |
|---|---|
| macOS | scutil --dns | grep nameserver |
| Windows | Get-DnsClientServerAddress |
| Linux (systemd-resolved) | resolvectl status |
| Linux (в общем случае) | cat /etc/resolv.conf |
Какой резолвер ответил на самом деле — настройка и поведение это разные вещи:
dig +short whoami.akamai.net возвращает IP-адрес того резолвера, который
выполнил запрос от вашего имени. Сравните его с тем, который вы ожидали.
Уровень браузера: откройте настройку защищённого DNS в браузере и посмотрите, включена ли она и какой провайдер выбран. Затем откройте в этом же браузере страницу проверки утечек DNS. Если она показывает не тот резолвер, что проверка в командной строке, браузер разрешает имена самостоятельно.
IPv6: повторите проверку запросом только по IPv6. Туннель, обслуживающий один лишь IPv4, — самая частая причина частичной утечки.
Как читать результат?
Сравнивайте владельца резолвера со своими ожиданиями, а не со списком «хороших» адресов.
| Что вы видите | Как это понимать |
|---|---|
| Резолвер принадлежит провайдеру, хотя вы настроили другой | Утечка |
| Несколько резолверов, один из них провайдерский | Частичная утечка — запросы расщепляются |
| По IPv4 ожидаемый резолвер, по IPv6 провайдерский | Утечка по IPv6 |
| Браузер и система показывают разные резолверы | Не обязательно утечка, но два независимых пути, которые надо проверить |
| Резолвер находится в неожиданной стране | Часто это норма — anycast-резолверы отвечают с ближайшей площадки |
| Резолвер — приватный адрес роутера | Ничего не доказывает; роутер пересылает запросы дальше, так что смотрите настройки самого роутера |
Последняя строка ловит людей в домашних сетях. Результат 192.168.1.1 говорит
лишь о том, что ответил ваш роутер. Куда роутер пересылает запросы — отдельный
вопрос, ответ на который лежит в его настройках WAN или DNS.
Каковы пределы того, что даёт исправление?
Устранение утечки DNS меняет то, кто узнаёт, какие домены вы искали. Приватным сам визит от этого не становится, и главное искажение темы — как раз преувеличение этого эффекта.
После того как имя разрешено, устройство открывает соединение с этим IP-адресом. Любой наблюдатель на пути видит адрес назначения, а в большинстве TLS-соединений имя сервера передаётся в рукопожатии незашифрованным, если только с обеих сторон не работает Encrypted Client Hello. Оба сигнала опознают сайт независимо от DNS.
Так что честная сводка узкая, но настоящая: шифрованный DNS на резолвер вашего выбора убирает открытый список всех посещённых доменов из вашей локальной сети и из логов провайдера — и передаёт этот список оператору резолвера. Он перемещает доверие, а не устраняет его, и потому единственный по-настоящему важный вопрос — кто держит резолвер и что он логирует.