DNS-доктор
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 | быстрый, ничего не режет |
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, а не машина.
Безопасный порядок
Снимок состояния— ничего не меняет.- Если имена не разрешаются —
Починить имена и значок. - Если имена в порядке, а в трее глобус —
Починить значок сети. - Резолвера меняй последним и осознанно: это касается всех программ на
машине разом.
Права администратора нужны всем операциям, кроме снимка: меняются службы и адреса адаптеров.
Из консоли
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-инструментов проекта.