Инструмент для подробного разбора
dig (domain information groper) — консольная утилита для DNS, привычная системным администраторам. Она есть в macOS, а в Linux входит в пакеты dnsutils или bind-utils; в Windows её можно установить отдельно. Её сильная сторона: полный, неупрощённый вывод. Вы видите не только адрес, но и флаги ответа, TTL, время запроса, сервер, от которого пришёл результат. Для повседневной проверки записей часто хватает утилиты попроще, см. utilita-nslookup, однако dig помогает разобраться в трудных случаях.
Базовые команды
Синтаксис: dig имя тип. Например, dig example.com A, dig example.com MX, dig example.com TXT. Без типа запрашивается A. Обращение к конкретному серверу пишется через знак @: dig @1.1.1.1 example.com. Ключ +short оставляет только значения, удобно для скриптов. Ключ +trace выполняет полный путь от корня, показывая каждое делегирование. Ключ -x позволяет получить имя по IP-адресу (обратная запись). Ключ +dnssec добавляет данные подписей: подробнее о них на странице dnssec.
Важно не путать запросы: у каждой записи свой тип, и отсутствие A не значит отсутствие MX.
Чтобы получить максимально полную картину, комбинируйте ключи: +trace показывает путь, +dnssec показывает подписи, +tcp проверяет обработку больших ответов. Разные комбинации помогают локализовать неисправность быстрее, чем повторение одного и того же запроса.
Как читать вывод
Ответ состоит из блоков. В заголовке указан код результата: NOERROR — успешно, NXDOMAIN — имя не существует, SERVFAIL — сбой сервера. В поле flags бывают признаки: qr — это ответ, rd — запрошена рекурсия, ra — рекурсия доступна, aa — ответ авторитетный, ad — данные проверены DNSSEC. Секция question повторяет ваш запрос, answer содержит результат с TTL, authority указывает на серверы зоны, additional даёт вспомогательные адреса. В конце: время ответа в миллисекундах, сервер и размер сообщения.
Число рядом с записью — оставшийся TTL. Если оно уменьшается при повторных запросах, вы говорите с кэширующим резолвером.
Типовые сценарии
Проверка, изменилась ли запись: сравните ответ авторитетного сервера (@ns1.…) и резолвера. Поиск проблемы у корня цепочки: dig +trace. Проверка почтовых политик: MX и TXT, о них страницы dns-zapis-mx и dns-zapis-txt. Замер отклика резолвера: строка Query time. Определение, кто обслуживает зону: dig example.com NS. Проверка, работает ли транспорт по TCP: ключ +tcp. Если dig выдаёт результат, а браузер не открывает сайт, причина не в DNS, а дальше: маршрут, порт, сервер или файл hosts, который dig не учитывает.
Замечания по использованию
dig не читает файл hosts и не использует общий механизм разрешения имён системы, а отправляет запросы напрямую, как и nslookup. Поэтому итог может отличаться от того, что получит программа. Файл ~/.digrc позволяет задать параметры по умолчанию. Для публичных резолверов помните: ваши запросы видны их оператору, см. rekursivnyy-dns-server. Стремитесь запрашивать только нужное и не расшифровывайте чужие ответы как «истину»: кэш, географическая привязка ответов и балансировка приводят к разным результатам у разных клиентов.
Сравнение с nslookup и типичные приёмы
dig предпочитают за предсказуемый формат, который одинаков на разных системах, и за подробную информацию. nslookup удобен, когда нужен быстрый результат и утилита уже под рукой, например в Windows. Кроме того, у nslookup менялось поведение между версиями, тогда как формат dig остаётся стабильным и пригоден для разбора скриптами.
Полезные приёмы: dig +noall +answer оставляет только секцию ответа, dig +short выводит значения, dig @сервер имя тип задаёт сервер. Для проверки блока ответа с несколькими записями сохраняйте порядок и TTL. Когда вы изучаете чужой сервис, помните, что запросы к его серверам имён видны их владельцам. Ограничьте частоту запросов и не автоматизируйте массовый перебор имён: это создаёт лишнюю нагрузку и может расцениваться как разведка.
Сохраняйте вывод dig при обращении в поддержку хостинга или провайдера DNS: полный вывод с флагами и временем ответа позволяет специалисту сразу увидеть, на каком этапе возникает проблема, без дополнительных вопросов.