Адреса резолверов, выглядящие иностранными, постоянно появляются в результатах DNS-тестов, и вывод, к которому приходят люди, всегда один: запросы, должно быть, вырвались из туннеля. Иногда так и было. Чаще отчёт описывает, какой рекурсивный сервис ответил и где, по мнению базы данных, находится этот адрес, а это утверждение об инфраструктуре, а не о ваших пакетах. Чтобы отделить наблюдение от вывода, нужны три факта: кто ответил, как путешествовало имя и какую политику вы действительно настроили.

Прочитайте, что тест на самом деле наблюдал

Большинство тестовых страниц работают одинаково: они просят клиента разрешить уникальное имя хоста, а затем смотрят, какой резолвер его получил, либо просто возвращают адрес резолвера, который сообщает клиент. Это идентифицирует рекурсивный сервис и, если запрос нёс информацию о подсети клиента, примерное сетевое местоположение. Это не доказывает, что запрос покинул устройство вне туннеля, и уж точно не доказывает, что для каждого имени использовался один и тот же путь. Одно наблюдение одного запроса обобщается в утверждение обо всём трафике.

Тест, показывающий адрес резолвера, полезнее значка страны, потому что адрес можно сравнить со списком резолверов, который клиент действительно получил.

Anycast и пересылка объясняют большинство сюрпризов

Крупные публичные резолверы анонсируют один и тот же адрес из многих мест, и сеть направляет каждый запрос туда, где ближе с точки зрения маршрутизации. Затем база геолокации привязывает этот адрес к одному месту, которое может быть корпоративным адресом регистрации на другом континенте или центром обработки данных, который не является отвечающим. RFC 4786 описывает операционную практику anycast-сервисов и сложность привязки такого адреса к одному физическому месту. Карта — это упрощение решения о маршрутизации, и она упрощает в сторону, которая даёт тревожные результаты.

Пересылка добавляет второй слой. Локальный stub-резолвер, маршрутизатор или резолвер провайдера могут передавать запросы вышестоящему сервису, и имя, которое появляется в тесте, отражает последнего оператора в этой цепочке, а не первого. Расширения подсети клиента могут подогнать ответ сверху под вашу сеть, одновременно делая сообщаемое местоположение похожим на место, где вы никогда не были.

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

Кто получил имя и по какому маршруту

На практическую часть отвечают два вопроса: какой сервер использует клиент и достигается ли этот сервер через туннель. Сравните список резолверов с адресом в результате теста, прежде чем делать выводы о маршрутизации, а затем проверьте, что запрос к этому адресу выходит через интерфейс туннеля. Если два адреса различаются, интересная находка в том, что что-то переписало или обошло предполагаемый резолвер, и это заслуживает более пристального взгляда, чем название страны.

resolvectl query example.com
resolvectl status | grep -A3 'DNS Servers'
dig +short TXT whoami.akamai.net

Первая команда показывает, какой сервер ответил за имя, вторая показывает настроенный список и его область, а третья сообщает адрес резолвера так, как его видит публичный сервис. Когда все три совпадают, политика делает то, для чего была настроена, что бы ни говорил значок страны.

Сравните с политикой, которую вы выбрали

VPN, который навязывает резолвер, браузер, настроенный на собственный шифрованный DNS, и операционная система, предпочитающая настройки одного интерфейса, могут по отдельности быть правильными, но вместе противоречить друг другу. Современные браузеры могут отправлять запросы по шифрованному транспорту провайдеру, выбранному в браузере, что намеренно обходит список резолверов системы. Это не утечка в смысле сломанного туннеля; это политика, выбранная в другом месте, и найти, где она выбрана, — настоящая задача.

Рабочие устройства добавляют правила для доменов: внутренние имена должны идти к резолверу организации, а всё остальное следует значению по умолчанию. Заменить этот порядок из-за того, что тестовая страница показала неожиданную страну, — это способ, которым внутренние имена перестают разрешаться для целой команды.

Держите тесты узкими и безопасными

Запрос к публичному тестовому сервису об внутреннем имени хоста раскрывает имя стороне, которой нет до него дела, а ответ не сообщает вам ничего, чего не сказало бы локальное чтение списка резолверов.

Вместо этого используйте имена, раскрывающие инфраструктуру, записывайте адрес резолвера, область и использованный интерфейс и сравнивайте эту запись с задокументированным намерением. Метка на карте — это контекст для разговора, а не результат «прошёл или нет», и отношение к ней как к приговору порождает изменения конфигурации вместо диагностики.

Похожие статьи