Зачем нужен dig
Утилита dig — основной инструмент диагностики DNS в Unix-подобных системах. Она отправляет запрос выбранному серверу и показывает ответ подробно, со всеми служебными полями. В отличие от простых утилит, dig не додумывает за вас, а показывает то, что вернул сервер, и это важно при поиске причин.
Пакет с утилитой в некоторых дистрибутивах нужно установить отдельно, а в macOS она есть из коробки. Если команда не найдена, ищите пакет с утилитами DNS в менеджере пакетов вашего дистрибутива.
Как устроен вывод
После запроса dig с именем сайта вы увидите несколько блоков. В заголовке показан код результата и флаги. Далее секция вопроса повторяет ваш запрос. Секция ответа содержит записи: имя, время жизни в секундах, класс, тип и значение. Затем идут секции дополнительных сведений и статистика.
Код результата NOERROR означает успех, NXDOMAIN — такого имени нет, SERVFAIL — сервер не смог получить ответ. В статистике важны время запроса и адрес сервера, ответившего вам.
Обратите внимание на флаги в заголовке ответа: флаг рекурсии показывает, что сервер согласен выполнять поиск за вас, а флаг авторитетного ответа — что данные пришли от владельца зоны.
Полезные параметры
Для выбора сервера поставьте перед ним знак at. Тип записи указывают после имени: A, AAAA, MX, TXT, NS. Ключ +short сокращает вывод до значений, ключ +trace показывает путь разрешения от корневых серверов вниз, а ключ +noall +answer оставляет только секцию ответа.
Если нужно посмотреть обратную запись, пригодится ключ -x с IP-адресом: он возвращает имя, назначенное адресу, если оно задано. Это бывает полезно при разборе журналов и почтовых заголовков.
Практические сценарии
Проверка переезда сайта: запросите запись у своего сервера и у публичного и сравните. Проверка почты: запросите MX и TXT домена. Поиск причины медленной загрузки: посмотрите время запроса и выполните повтор, где ответ должен прийти из кэша быстрее.
Если ответ различается на разных серверах, смотрите значение времени жизни: пока оно не истекло, кэширующие серверы продолжают отдавать прежнее значение. Ждать придётся столько, сколько указано, либо обратиться к тем, кто владеет записью.
Типичные ошибки при работе
Начинающие часто путают знак at перед сервером с обычным текстом, забывают указать тип записи и удивляются, что вернулся только IPv4-адрес. Другая ошибка — читать вывод сверху вниз, не глядя на код результата: он сразу говорит, есть ли вообще смысл разбирать записи.
Помните, что в разных системах результаты dig могут отличаться от того, что видит браузер: браузер использует свой резолвер и, возможно, шифрованный DNS. Поэтому сравнение с ним допустимо, но не означает ошибки в одном из них.
Обратите внимание на режим трассировки разрешения. Он полезен, когда домен недавно перенесли к другому регистратору или сменили серверы имён: вы видите, на каком уровне цепочки ответ перестаёт быть правильным. Если корневые серверы и серверы зоны отвечают верно, а итоговый ответ неверен, проблема в записях самого домена. Если уже на уровне зоны данные неверны, обращаться нужно к тому, кто управляет DNS домена.
Полезно запомнить несколько сочетаний ключей и сохранить их в заметках: короткий вывод, вывод только секции ответа и запрос к выбранному серверу. Три-четыре готовые команды закрывают большую часть повседневных вопросов и не требуют каждый раз листать справочное руководство.
Сравнение с другими способами проверки
Для быстрых задач достаточно nslookup, но dig выигрывает в точности. Он показывает оставшееся время жизни записи, флаги ответа и позволяет отследить путь разрешения. Сервисы проверки DNS в браузере удобны, однако они делают запрос со своей стороны и не отражают то, что видит ваш компьютер. Поэтому для диагностики собственной сети запускайте dig локально, а для проверки видимости домена снаружи привлекайте и внешние сервисы, чтобы получить полную картину.