8 (800) 302-34-73

Диагностика DNS-сервера: типичные проблемы и решения

11 октября 2026 г.

Диагностика DNS-сервера: типичные симптомы, команды dig и nslookup, разбор SERVFAIL, NXDOMAIN, Refused и профилактика сбоев резолвинга.

Диагностика DNS-сервера: типичные проблемы и решения

Сайт открывается медленно, но причина еще не установлена. Проверьте сеть по известному IP, затем DNS-запрос с проблемного клиента. Ping домена не исключает сбой: имя разрешается до отправки ICMP. Если DNS быстр, проверяйте TCP/TLS, прокси, IPv6 и приложение. Диагностика DNS-сервера сравнивает ответы конкретного узла, системного резолвера и приложения. Разберем dig, nslookup, захват, журналы и коды ответа.

Пять типичных симптомов проблем с DNS-сервером

Одна жалоба может иметь несколько причин. Эти симптомы помогают выбрать первый тест, но сами по себе не доказывают неисправность DNS.

  1. «Интернет тормозит». Отдельно измерьте разрешение имени и установление соединения. Быстрый ICMP до известного IP не проверяет DNS и не исключает задержку TLS или приложения.
  2. «Сервер не найден». Приложения выдают ошибку подключения, хотя сервис физически доступен: клиент не может превратить имя в IP-адрес.
  3. «Внутренние ресурсы недоступны». Если подключение по IP работает, сравните DNS-ответ для server-1c.corp.example с системным разрешением. Причиной могут быть запись, DNS-view, hosts или клиентский кеш.
  4. «Периодически недоступен». Запишите время сбоя и сопоставьте запросы с нагрузкой, журналами и таймаутами апстрима. Самопроизвольное восстановление не доказывает перегрузку.
  5. «После обновления не разрешает имена». Проверьте фактическую конфигурацию, загрузку зон, ACL и журнал службы. Временное совпадение с обновлением помогает поиску, но не устанавливает причину.

Зафиксируйте имя, тип, сервер и время запроса.

Инструменты диагностики: dig, nslookup, tcpdump и логи

dig и nslookup: базовые команды

dig — стандартная утилита диагностики DNS в Linux, входит в пакет bind-utils или dnsutils. Синтаксис: dig @DNS-сервер имя запись-тип.

dig @10.0.1.10 server-1c.corp.example A проверяет конкретный DNS. Запишите status, флаги, ANSWER, TTL и Query time. Сравните первый и повторный запросы: рекурсия и кеш могут дать разные задержки.

dig @10.0.1.10 example.com A проверяет корпоративный DNS. dig example.com +trace прослеживает публичную делегацию с клиента: нужен прямой доступ к внешним DNS по UDP/TCP 53. @server влияет лишь на начальный запрос корневых NS, а не трассирует форвардер.

Обратный резолвинг: dig @10.0.1.10 -x 10.0.1.15 показывает имя хоста по IP-адресу, полезно при разборе логов.

Запросите NS и SOA внутренней зоны напрямую: dig @10.0.1.10 corp.example NS +norecurse. Проверьте aa и serial у авторитетных серверов. NS-ответ рекурсора может быть кешированным. Здесь используется corp.example: .local зарезервирован для mDNS.

В nslookup задайте server 10.0.1.10, затем set type=a и имя server-1c.corp.example. Команды выполняют по очереди в интерактивном режиме. Утилита проверяет DNS-ответ, но не весь путь разрешения имени приложением.

tcpdump и логи Bind9 и Windows DNS

sudo tcpdump -i ИНТЕРФЕЙС -n port 53 показывает обычный DNS UDP/TCP. Подставьте имя интерфейса и обеспечьте права. DoH и DoT фильтр 53 не видит. Если dig работает, сравните системный резолвер, hosts, кеш и приложение: оно может использовать другой сервер. Затем проверяйте путь пакетов.

Проверьте journalctl -u bind9 или фактическую службу named. Путь логов зависит от journald, rsyslog и BIND. Отдельный named.log требует канала, прав и ротации. Ищите ошибки загрузки, ACL, передачи и валидации по времени и имени. Сообщения зависят от версии.

В Event Viewer откройте Applications and Services Logs → Microsoft → Windows → DNS-Server. Audit отражает изменения, Analytical подробные DNS-события. Последний включают отдельно с Show Analytic and Debug Logs. Общий DNS Server log и Debug Logging отдельны. Debug Logging ограничьте временем, фильтрами и размером файла.

Начните с ответа конкретного DNS. Если причина не видна, подключите журналы, захват и проверку клиента. Срок диагностики зависит от причины и доступных данных.

Иллюстрация к разделу «Инструменты диагностики: dig, nslookup, tcpdump и логи»
Иллюстрация к разделу «Инструменты диагностики: dig, nslookup, tcpdump и логи»

Разбор частых проблем DNS и решений

Медленное разрешение. Сравните первый и повторные запросы с учетом TTL и кеша, задержки клиента и DNS-узла. Проверьте CPU, память, потери и апстрим. max-cache-size увеличивайте при подтвержденной нехватке: это расходует память, не гарантируя ускорения. Порог задают по целям сервиса.

SERVFAIL не доказывает одну причину. Сравните dig @10.0.1.10 example.com A +dnssec и запрос с +cdflag. +dnssec запрашивает данные, не валидируя цепочку. Ответ только с CD требует проверки через delv и журнал. Сверьте время, UDP/TCP и путь форвардера или рекурсии. rndc reload перечитывает файлы, не скачивая root hints. DNSSEC глобально не отключайте.

NXDOMAIN означает отсутствие имени. Проверьте FQDN, view, авторитетный ответ, SOA и отрицательный TTL. NOERROR без записи нужного типа отличается от NXDOMAIN. Ошибка загрузки чаще дает SERVFAIL: проверьте журнал и named-checkzone corp.example /etc/bind/zones/db.corp.example. Serial исправляют по причине, не автоматически.

REFUSED означает отказ по политике. Проверьте клиента, view, allow-query, allow-query-cache и allow-recursion. Сравните свою зону с +norecurse и внешнее имя. Исправляйте подтвержденный ACL, не открывая лишнюю рекурсию.

Secondary не синхронизирован. Сравните SOA serial, проверьте TCP 53, primaries, allow-transfer и TSIG: ключи и время. Изучите журнал, NOTIFY и refresh. Добавление IP в ACL не исправит неверный serial.

Мониторинг и превентивная диагностика DNS

Как не допускать DNS-проблем

Профилактика обходится дешевле, чем разбор инцидента после жалоб пользователей, и держится на пяти практиках.

  1. Для BIND нужны statistics-channel и совместимый bind_exporter с ограниченным доступом. Prometheus сам не создает счетчики. Метрики запросов и ошибок дополняют клиентской пробой. Cache hit ratio считают как hits / (hits + misses) за один период по согласованной категории версии BIND.
  2. Разделяйте кешированные и рекурсивные пробы, наблюдайте p95/p99, SERVFAIL, таймауты и оба DNS. Пороги задают по базовой линии, интервал по допустимому незамеченному сбою.
  3. Централизованные логи в Elasticsearch или Loki: при инциденте виден полный контекст за нужный период, а не разрозненные строки в локальном файле.
  4. В согласованном окне проверьте отказ primary: доступность резерва и актуальность зон. Частоту задает регламент. Наличие secondary не доказывает его готовность.
  5. Следите за security advisory своей ветки BIND. Критичные исправления устанавливайте по оценке риска и срочному регламенту, не ожидая квартального окна.

Оптимизация корпоративной сети помогает устранить подтвержденные потери и задержки DNS-пакетов. Сначала локализуйте причину: сбой зоны или ACL не лечится заменой коммутатора.

Иллюстрация к разделу «Мониторинг и превентивная диагностика DNS»
Иллюстрация к разделу «Мониторинг и превентивная диагностика DNS»

Типичные ошибки диагностики DNS

При диагностике разделяйте прямой DNS-запрос, системное разрешение и обращение приложения. Это помогает избежать следующих ошибок.

  1. Тестируют DNS-сервер с него самого, а не с клиентской машины, где реально возникает проблема.
  2. Не сравнивают DNS с системным разрешением. dig и nslookup не проверяют hosts. В Linux сопоставьте getent hosts server-1c.corp.example, ответ приложения и DNS.
  3. Сбрасывают кеш до сохранения RCODE и TTL. ipconfig /flushdns очищает кеш Windows, resolvectl flush-caches относится к systemd-resolved. Серверный и браузерный кеши проверяют отдельно.
  4. Диагностируют только primary DNS, а secondary остается рассинхронизирован, хотя должен подхватывать нагрузку.
  5. Не проверяют TTL записей: заниженный TTL создает лишнюю нагрузку на сервер, завышенный надолго консервирует устаревшие данные.
  6. Экономят на мониторинге и узнают о сбое DNS от пользователей, а не от системы наблюдения.
  7. Держат единственный DNS-сервер без secondary, и сбой этой точки останавливает резолвинг для всей сети.
  8. Не определяют точку DNSSEC-валидации. Обычно проверяет доверенный рекурсивный DNS, а не каждый stub-клиент. Нужны правильный резолвер и доверенный путь к его ответу.
  9. Правят только /etc/resolv.conf, хотя он может быть сгенерирован или указывать stub. Проверьте DNS и доменные маршруты в NetworkManager либо systemd-resolved, меняйте управляющий сервис.
  10. Не настраивают split-horizon там, где внутренние и внешние клиенты должны получать разные ответы на один домен.

Заключение

Начните с имени, типа записи и конкретного DNS. Код ответа выбирает тест, но редко доказывает причину. Сравните системный резолвер, приложение, журналы и сеть. До исправления сохраните данные, после повторите запрос и проверьте оба DNS.

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

Если проверка выявила проблему каналов, коммутаторов или резервирования, Serverzilla поможет подобрать сетевое оборудование под доступность DNS. Передайте результаты замеров и требования к отказному режиму.