Audion DevOps Tools

v2.0.0 ·

DNS-доктор

RU

DNS-доктор

Runbook для двух поломок, которые выглядят как обрыв связи, хотя связь цела: имена перестали разрешаться, и Windows показывает «нет интернета», когда сайты открываются.

Полный список GUI-параметров смотри в COMMANDS_RU.md, раздел DNS-доктор.

Граница разделов

Network Cleaner — repair/backup/restore для состояния сети Windows целиком: адаптеры, маршруты, прокси, брандмауэр, Winsock.

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

Если сеть сломана системно — начинай с Network Cleaner. Если адреса пингуются, а сайты не открываются, или значок в трее спорит с действительностью — иди в DNS-доктор.

Первая поломка: имена не разрешаются

Программы вроде ControlD, YogaDNS, AdGuard и dnscrypt работают локальным резолвером: прописывают физическим адаптерам адрес 127.0.0.1 и разрешают имена сами, шифрованным каналом. Пока их служба идёт, всё хорошо. Стоит ей упасть или не подняться после перезагрузки — на 127.0.0.1 отвечать некому:

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

Снимок состояния показывает это одной картиной: какие адреса стоят на адаптерах, что предлагает роутер по DHCP, кто держит 53-й порт и разрешается ли имя.

Починить имена и значок поднимает службу резолвера, если она есть и лежит. Если резолвера в системе нет вовсе — возвращает адаптерам адреса от роутера: машина без имён хуже машины без выбранного резолвера.

Вторая поломка: «интернет как бы есть, но»

Значок сети рисует не сеть, а служба NlaSvc — «Сведения о расположении в сети». Она делает два запроса к Microsoft и решает, есть ли выход наружу:

  • имя dns.msftncsi.com должно ответить адресом 131.107.255.255;
  • страница http://www.msftconnecttest.com/connecttest.txt должна вернуть строку Microsoft Connect Test.

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

Гасят это обычно «ускорители служб»: переводят NlaSvc в ручной запуск, а иногда и выключают активную пробу ключом EnableActiveProbing.

Починить значок сети возвращает всё три вещи к тому, как их держит сама Windows: включает пробу, ставит службе автозапуск, поднимает её. Если служба работает, а выхода «не видит», — перезапускает: оценку она считает при изменениях сети, а не по кругу, и может держать устаревшую.

Выбор резолвера

Операции Резолвер: ... прописывают адреса всем физическим адаптерам:

Операция Адреса Нрав
От роутера (DHCP) выдаёт роутер как задумано в этой сети
Сам роутер адрес шлюза спрашиваем шлюз напрямую
Cloudflare 1.1.1.1, 1.0.0.1 быстрый, ничего не режет
Google 8.8.8.8, 8.8.4.4 самый известный
Quad9 9.9.9.9, 149.112.112.112 режет вредоносные имена
Яндекс 77.88.8.8, 77.88.8.1 ближе прочих, свои фильтры
AdGuard 94.140.14.14, 94.140.15.15 режет рекламу и счётчики

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

Чего инструмент не делает

  • Не трогает адаптеры туннелей (WireGuard, AmneziaWG, TAP, OpenVPN): там DNS ставит сам туннель, и это его дело.
  • Не удаляет и не настраивает сторонние резолверы. Служба поднимается, но правила и профили ControlD или YogaDNS настраиваются в их собственных программах.
  • Не сбрасывает Winsock, маршруты и брандмауэр — для этого есть Network Cleaner.

Кто в итоге отвечает

Снимок состояния показывает не только адрес в поле «DNS», но и последнее звено цепочки — тот резолвер, который дошёл до авторитетного сервера. Роутер в поле «DNS» ещё ничего не значит: он сам кого-то спрашивает.

Узнаётся это служебным именем Google, отвечающим адресом спросившего, а обратная запись часто называет и хозяина:

asking outward: 8.8.8.8 (dns.google)
asking outward: 138.199.14.88 (unn-138-199-14-88.datapacket.com)

Второе — характерный вид, когда трафик идёт через VPN: наружу спрашивает узел провайдера VPN, а не машина.

Безопасный порядок

  1. Снимок состояния — ничего не меняет.
  2. Если имена не разрешаются — Починить имена и значок.
  3. Если имена в порядке, а в трее глобус — Починить значок сети.
  4. Резолвера меняй последним и осознанно: это касается всех программ на машине разом.

Права администратора нужны всем операциям, кроме снимка: меняются службы и адреса адаптеров.

Из консоли

tools\dns_doctor\Run_Status.cmd
tools\dns_doctor\Run_Repair.cmd
tools\dns_doctor\Run_Fix_Icon.cmd
tools\dns_doctor\Run_Use_Cloudflare.cmd
tools\dns_doctor\Run_Help.cmd

Врапперы поднимают права сами. Движок — tools\dns_doctor\system_core\Audion_Dns_Doctor.ps1, ключ -Mode; вывод английский, как у остальных PowerShell-инструментов проекта.