Сначала решите, при чём тут вообще DNS
Фраза «сайт не открывается» накрывает слишком много разных поломок, и DNS — только один их слой. Сопоставить симптом с причиной дешевле, чем перебирать настройки наугад.
- Зарубежный сайт резолвится в
127.0.0.1,0.0.0.0или адрес, явно не имеющий отношения к сервису. Классическая подмена ответа. - Первая загрузка висит несколько секунд, дальше всё нормально: какой-то резолвер не отвечает, и запрос повторяется после таймаута.
- Часть имён не открывается, а тот же сервис по IP доступен. Маршрут в порядке, ломается разрешение имени.
- Прокси работает, а несколько сайтов всё равно не грузятся. Разрешение может идти мимо прокси, а может быть и вовсе ни при чём.
Задайте один вопрос двум резолверам
Самая быстрая проверка — спросить одно имя дважды: через тот DNS, которым система пользуется сейчас, и у публичного сервера, названного явно.
nslookup www.example.com
nslookup www.example.com 8.8.8.8
dig +short www.example.com @1.1.1.1
Одна сторона отдаёт рабочий адрес, другая 127.0.0.1 или посторонний диапазон: разрешение на пути по умолчанию почти наверняка подменяют. Оговорка: открытый порт 53 к 8.8.8.8 тоже подделывается по дороге, так что сравнение доказывает различие ответов, а не подлинность второго.
Если обе стороны согласны, но обе медленные, дело не в содержании ответа, а в маршруте. nslookup повторяет запрос после таймаута, поэтому команда, которая несколько секунд ничего не печатает, и есть сигнал.
При включённом Fake-IP адрес и должен быть поддельным
Когда dns.enhanced-mode стоит в fake-ip, система получает заглушку, которую ядро придумывает на месте из диапазона fake-ip-range, обычно 198.18.0.0/16. Вид 198.18.x.x — не подмена: настоящий запрос уходит уже со стороны узла.
Поэтому системный nslookup здесь почти бесполезен: заглушку вы получите в любом случае, а ping по ней ничего не доказывает. Реальный результат смотрите в списке соединений — там видно имя назначения и выбранный выход.
Кеш, браузерный DoH и правильный на вид ответ
- После любой правки DNS сбрасывайте кеш. В Windows это
ipconfig /flushdns; в macOS нужен приём с mDNSResponder, точная команда менялась от версии к версии; в Linux всё зависит от того, systemd-resolved у вас или dnsmasq. Без этого вы проверяете старую запись. - Браузеры резолвят сами. Secure DNS в Chrome и DNS over HTTPS в Firefox обходят системный резолвер, так что на время диагностики их выключают, иначе командная строка и браузер описывают разные миры.
- У клиента тоже есть кеш. После правки
nameserverилиnameserver-policyперезагрузите профиль и закройте старые записи в списке соединений.
Один случай стоит вынести отдельно: nslookup возвращает обычный IP, а страница всё равно не грузится. Значит, имя разрешилось. Дальше смотрят, какому правилу соответствует соединение, через какой выход оно ушло и жив ли сам узел.