Команда dig в linux

Обновлено: 03.07.2024

dig (англ. слово «копать», а формально — сокращение от «domain information groper») — утилита (DNS-клиент), предоставляющая пользователю интерфейс командной строки для обращения к системе DNS. Позволяет задавать различные типы запросов и запрашивать произвольно указываемые сервера. Является аналогом утилиты nslookup.

Утилита dig входит в стандартный комплект DNS сервера BIND.

1. Простой вывод команды dig (для понимания вывода, без доп.параметров )

Когда вы задаете имя домена в команде dig по-умолчанию вы получаете A-запись домена (ip-адрес сайта (домена) который мы запрашивали) как показано на листинге ниже

Так же можно выполнить опрос конкретного DNS-сервера:


Результат вывода дополняется еще двумя секциями:
AUTHORITY SECTION: Показывает имена DNS-серверов обработавших наш запрос
ADDITIONAL SECTION: Показывает ip-адреса этих DNS-серверов (из секции AUTHORITY SECTION)

2. Вывод только секции ANSWER SECTION

В большинстве случаев требуется только ip адрес домена, то бишь вывод секции "ANSWER SECTION"
Для этого существуют следующие ключи:
-+nocomments - отключает линию комментариев
-+noauthority - отключает секцию "AUTHORITY SECTION"
-+noadditional – отключает секцию "ADDITIONAL SECTION"
-+nostats – отключает секцию статистики
-+noanswer – выключает секцию ответа (ANSWER SECTION)


Можно сделать проще, существует ключ +noall, который выключает все секции. Таким образом мы используем ключ +noall и добавляем ключ +answer, уменьшая длину команды

3. Запрос MX-записи

Для запроса MX-записи домена мы используем одноименный аргумент командной строки (MX)


Этот же запрос можно выполнить с ключом -t (тип)

4. Запрос NS-записи

По аналогии с предыдущим пунктом, используем аргумент NS


Вы также можете использовать ключ -t для указания типа запроса

5. Просмотр всех типов DNS-записей

Для этого используется ключ ANY


Также допустим ключ -t

6. Краткий вывод команды dig

Допустим чтобы просмотреть только ip-адрес, без лишней информации, используем опцию +short


Вы также можете вывести информацию по любому виду информации с ключем +short
Пример:

7. Просмотр информации об обратной зоне домена (PTR)

Для просмотра обратной зоны необходимо использовать ключ -х
Для примера, мы хотим узнать имя домена по айпи-адресу 77.88.21.3

Для вывода полной информации убираем ключ +short

8. Использование конкретного DNS-сервера для выполнения запроса

Для использования конкретного DNS-сервераиспользуется запись вида - @dnsserver, где dnsserver это или имя или ip-адрес DNS-сервера
Данный пример мы рассмотрели в п.1

9. Объемный запрос (запрос информации сразу о нескольких доменах)

Для запроса информации о нескольких доменах возможно использование текстовых файлов с перечислением доменов.
Создадим файл names.txt с именами доменов:


Далее используем ключ -f для чтения из файла:


Также можно комбинировать тип DNS записи c опцией -f:

10. Изменение параметров по умолчанию для команды dig

Например вы хотите, чтобы утилита dig по умолчанию выводила только секцию ответа (ANSWER SECTION).
Для этого необходимо внести в файл .digrc необходимые ключи, в нашем случае +noall +answer:


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

Команда Dig в Linux (Domain Information Groper)

Dig (Domain Information Groper) - это мощный инструмент командной строки для запросов к DNS-серверам имен.

Команда dig позволяет запрашивать информацию о различных записях DNS, включая адреса хостов, почтовые обмены и серверы имен. Это наиболее часто используемый инструмент среди системных администраторов для устранения проблем с DNS из-за его гибкости и простоты использования.


Установка dig

Чтобы проверить, доступна ли команда dig в вашей системе, введите:


Вывод должен выглядеть примерно так:

Если dig его нет в вашей системе, приведенная выше команда выведет «dig: команда не найдена». dig Инструмент может быть установлен с помощью менеджера пакетов дистрибутива.

Установить dig на Ubuntu и Debian


Установить dig на CentOS и Fedora


Установить dig на Arch Linux


Понимание dig вывода

В простейшем виде dig команда используется для запроса одного хоста (домена) без каких-либо дополнительных опций, команда довольно многословна.


Вывод должен выглядеть примерно так:



Давайте рассмотрим раздел за разделом и объясним вывод dig команды:

В первой строке вывода печатается установленная dig версия и запрашиваемое имя домена. Вторая строка показывает глобальные параметры (по умолчанию только cmd).

Если вы не хотите, чтобы эти строки были включены в вывод, используйте +nocmd опцию. Эта опция должна быть самой первой после dig команды.

В следующем разделе содержатся технические подробности об ответе, полученном от запрашиваемого органа (DNS-сервер). Заголовок показывает код операции (действие, выполненное dig ) и статус действия. В этом примере состояние имеет значение NOERROR , что означает, что запрошенный орган обработал запрос без каких-либо проблем.

Этот раздел можно удалить с помощью +nocomments параметра, который также отключает заголовки некоторых других разделов.

Псевдо-раздел «OPT» отображается только в более новых версиях dig утилиты. Вы можете прочитать больше о механизмах расширения для DNS (EDNS) здесь .

Чтобы исключить этот раздел из вывода, используйте +noedns параметр.

В разделе «ВОПРОС» dig отображается запрос (вопрос). По умолчанию dig запрашивает запись А.

Вы можете отключить этот раздел, используя +noquestion опцию.

Обычно вы не хотите отключать ответ, но вы можете удалить этот раздел из вывода, используя +noanswer опцию.

Раздел «AUTHORITY» сообщает нам, какие серверы являются полномочиями для ответа на DNS-запросы о запрашиваемом домене.

Вы можете отключить этот раздел вывода, используя +noauthority опцию.

Раздел «ДОПОЛНИТЕЛЬНО» предоставляет нам информацию об IP-адресах доверенных DNS-серверов, указанных в разделе полномочий.

+noadditional Опция отключает дополнительный раздел ответа.

Последний раздел dig вывода содержит статистику о запросе.

Вы можете отключить эту часть с помощью +nostats опции.

Печать только ответа

Как правило, вы хотите получить только короткий ответ на ваш dig запрос.


1. Получите короткий ответ

Чтобы получить краткий ответ на ваш запрос, используйте +short опцию:

Вывод будет включать только IP-адреса записи A.


2. Получить подробный ответ


Запрос конкретного сервера имен

По умолчанию, если сервер имен не указан, dig используются серверы, указанные в /etc/resolv.conf файле.

Чтобы указать сервер имен, для которого будет выполняться запрос, используйте @ символ (at), за которым следует IP-адрес сервера имен или имя хоста.

Запросить тип записи

Dig позволяет вам выполнить любой допустимый DNS-запрос, добавив тип записи в конец запроса. В следующем разделе мы покажем вам примеры того, как искать наиболее распространенные записи, такие как A (IP-адрес), CNAME (каноническое имя), TXT (текстовая запись), MX (почтовый обменник) и NS ( серверы имен).

1. Запрос записей

Чтобы получить список всех адресов для доменного имени, используйте a параметр:

Как вы уже знаете, если тип записи DNS не указан, dig будет запрашиваться запись А. Вы также можете запросить запись A без указания a опции.


2. Запрос записей CNAME

Чтобы найти псевдоним домена, используйте cname параметр:


3. Запрос записей TXT

Используйте txt опцию, чтобы получить все записи TXT для определенного домена:


4. Запрос MX записей

Чтобы получить список всех почтовых серверов для определенного домена, используйте mx параметр:


5. Запрос записей NS

Чтобы найти официальные серверы имен для нашего конкретного домена, используйте ns параметр:


6. Запрос всех записей

Используйте any опцию, чтобы получить список всех записей DNS для определенного домена:


Обратный поиск DNS

Чтобы запросить имя хоста, связанное с конкретным IP-адресом, используйте -x опцию.

Например, чтобы выполнить обратный поиск 208.118.235.148 , введите:


Массовые Запросы

Если вы хотите запросить большое количество доменов, вы можете добавить их в файл (по одному домену на строку) и использовать -f параметр, после которого следует имя файла.

В следующем примере мы запрашиваем домены, указанные в domains.txt файле.


Файл .digrc

В dig поведение команды можно управлять с помощью настройки для каждого пользователя параметры в файле $/.digrc .

Если файл .digrc присутствует в домашнем каталоге пользователя, указанные в нем параметры применяются перед аргументами командной строки.

Например, если вы хотите отобразить только раздел ответа, откройте текстовый редактор и создайте следующий файл

Вывод

dig является инструментом командной строки для запроса информации DNS и устранения проблем, связанных с DNS

Команда dig позволяет использовать одноименную утилиту для отправки запросов серверам доменных имен. Данная утилита входит в состав сервера доменных имен BIND, который включен в стандартный комплект поставки большинства дистрибутивов. При использовании dig пользователь может указать имя сервера доменных имен, который должен обработать запрос, поэтому рассматриваемая утилита используется главным образом для диагностики серверов доменных имен.

Базовый синтаксис команды выглядит следующим образом:

Утилита поддерживает ряд параметров командной строки. Наиболее полезным параметром является параметр -t, позволяющий указать интересующий пользователя тип ресурсной записи (вместо этого параметра может использоваться указание типа ресурсной записи). В частности, поддерживаются следующие типы ресурсных записей:

  • A (адрес IPv4)
  • AAAA (адрес IPv6)
  • CNAME (каноническое имя или псевдоним)
  • MX (имя узла сервера электронной почты)
  • NS (имя сервера доменных имен)
  • PTR (указатель на каноническое имя, используемый для обратных разрешений доменных имен)
  • SOA (источник информации и доменной зоне)
  • TXT (произвольная текстовая запись)

По умолчанию утилита осуществляет запросы значений ресурсных записей типа A. При этом существует абстрактный тип ресурсных записей ANY, позволяющий вывести значения всех доступных ресурсных записей. Параметр -x позволяет осуществить обратное разрешение доменного имени. В случае необходимости получения информации о множестве доменных имен следует использовать параметр -f с путем к файлу, содержащему список этих имен (по одному имени в строке).

Вывод утилиты разделен на ряд секций:

Пользователь может скрыть комментарии (заголовок, область статистики и названия секций) с помощью параметра +nocomments, секцию AUTHORITY SECTION с помощью параметра +noauthority, секцию ADDITIONAL SECTION с помощью параметра +noadditional, область статистики с помощью параметра +nostats и секцию ANSWER SECTION с помощью параметра +noanswer (хотя это и не совсем разумно). Существуют и обратные параметры без префикса no, которые могут использоваться для показа отдельных секций (например, для показа лишь секции ANSWER SECTION достаточно использовать комбинацию параметров +noall и +answer). Все параметры, которые должны использоваться утилитой по умолчанию, могут быть помещены в скрытый файл конфигурации .digrc в домашней директории пользователя.

Примеры использования

Получение IP-адреса сервера по имени домена

Для получения IP-адреса сервера ресурса по имени его домена достаточно передать утилите имя домена без каких-либо параметров:

В результате будет получен следующий вывод, содержащий достаточное количество ненужной информации:

Несложно заметить, что сервер имеет IP-адрес 54.172.136.192. Для получения более компактного вывода может использоваться следующая команда:

Теперь вывод будет содержать лишь наиболее важную информацию:

Получение имен доменов почтовых серверов, связанных с доменом

Для получения имен доменов почтовых серверов, связанных с заданным доменом, нужно четко указывать тип ресурсной записи MX. Для этого может использоваться параметр -t:

Также параметр -t может просто пропускаться:

В обоих случаях будет получен аналогичный вывод:

Получение имен серверов доменных имен, связанных с доменом

Для получения имен серверов доменных имен, связанных с заданным доменом, нужно четко указывать тип ресурсной записи NS. Для этого может использоваться параметр -t:

Также параметр -t может просто пропускаться:

В обоих случаях будет получен аналогичный вывод:

Получение значений всех доступных ресурсных записей

Для получения значений всех доступных ресурсных записей, связанных с заданным доменом, нужно использовать тип ресурсной записи ANY. Для этого может использоваться параметр -t:

Также параметр -t может просто пропускаться:

В обоих случаях будет получен аналогичный вывод:

Обратное разрешение доменного имени

Для того, чтобы осуществить обратное разрешение доменного имени достаточно использовать параметр -x и задать IP-адрес сервера:

Использование определенного сервера доменных имен

Для использования определенного сервера доменных имен необходимо указать его имя или IP-адрес после символа @:

dig — это гибкий инструмент для опроса DNS серверов имён. Он выполняет поиск по DNS и отображает ответы, которые возвращены от сервера или серверов имён. Большинство DNS администраторов используют dig для решения проблем DNS из-за его гибкости, простоты использования и ясности вывода. Другие инструменты поиска имеют меньшую функциональность чем dig.

Хотя обычно dig используется с аргументами командной строки, он также имеет пакетный режим обработки считываемых из файла запросов для поиска.

Как показать A запись домена


Большая часть вывода является комментариями — они начинаются с точки с запятой (;)

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

Значимая информация содержится в разделе ответа — именно здесь показан IP сайта:

Последняя группа комментариев содержит техническую информацию, в том числе время, которое занял запрос; DNS сервер, к которому был сделан запрос; время, когда был сделан запрос и другое:

Как в dig вывести только IP адрес без дополнительных строк

В приведённом выше примере большая часть информации не нужна пользователю — нужен только IP адрес. С помощью опции +short вывод команды dig будет ограничен исключительно IP адресом. Поскольку по умолчанию (если не указано друге) запрос делается относительно записи A, то будет показан IP адрес из записи A:

Как просмотреть MX записи для домена

Программа dig позволяет делать запрос и выводить информацию для различных типов DNS ресурсов. Чтобы показать какие MX записи у домена выполните команду:

Для сокращения выводимой информации запрашиваемый тип записи (а также другие опции) можно комбинировать с опцией +short:

Запрос SOA записи для домена:

Как в dig вывести только секцию ответа

Более короткий вариант записи:

Как вывести все DNS записи для домена

Данный метод позволяет за один раз вывести сразу все типы DNS записей указанного домена, но он работает не во всех случаях:

Для запроса всех типов DNS записей, но ограничив количества выводимых разделов только секцией ответа добавьте опции «+noall +answer»:

Как в dig сделать обратный DNS запрос — как по IP получить имя хоста

Можно делать обратные DNS запросы, когда отсылаем IP адрес, а в ответ получаем имя хоста, для такого запроса используется опция -x. Пример с добавлением опции +short чтобы ограничить вывод только именем хоста:

Одновременный запрос множества DNS записей

Есть два способа выполнить несколько или сразу множество запросов к DNS серверам в dig.

Один из них — использовать опцию -f, после которой нужно указать файл, содержащий список запросов. Каждая строка в этом файле должна быть организована также, как это делается в запросах, когда используется интерфейс командной строки dig.

Второй вариант — это указать сразу несколько запросов в строке команды. Программа dig не только поддерживает множественность запросов, но и позволяет каждый из них запустить с персональным набором опцией, флагов и опций запросов.

В этом случае каждый аргумент представляет индивидуальный запрос в соответствии с описываемым синтаксисом. Каждый состоит из любых стандартных опций и флагом, имени для получения информации и опционального типа запроса и класса, а также опций запроса, который должны быть применены к этому запросу.

В дополнении к этому можно также указать глобальный набор опций запроса, который должен применяться ко всем сделанным запросам. Эти глобальный опции запросов должны предшествовать первому картежу из имени, класса, типа, опций, флагов и опций запроса, указанных в строке команды. Глобальные опции запроса (кроме опций +[no]cmd и +[no]short) могут быть перезаписаны набором опций для конкретного запроса. Например команда

Сохранение постоянных опций dig

Если для каждого запроса с dig вы используете одну и ту же или одни и те же опции, то вы можете сохранить их в файл $/.digrc, в этом случае программа будет учитывать их для каждого сделанного поиска, даже если эта опция не указана в командной строке. Например, в файл digrc можно добавить опцию +short и тогда все запросы будут возвращать короткий ответ.

Если для определённого поиска по DNS вы не хотите, чтобы учитывались сохранённые в файле $/.digrc опции, тогда укажите опцию -r.

Как сделать DNS запрос по протоколу TCP

С помощью опции +tcp вы можете включить использование TCP при запросах к серверам имён. По умолчанию используется UDP за исключением случаев, если запрошен тип any или ixfr=N, в которых по умолчанию применяется протокол TCP. Запросы AXFR всегда используют TCP.

Использование другого порта для DNS запросов

С помощью опции -p вы можете сделать запрос на нестандартный порт сервера, вместо порта по умолчанию 53. Эта опция может использоваться для тестирования сервера имён, который настроен на прослушивание запросов на нестандартном номере порта.

Как указать сервер имён для DNS запросов

После символа @ (собака) вы можете указать любой DNS сервер имён, который будет использоваться для данного DNS поиска:

По умолчанию сервера имён для запросов берутся из файла /etc/resolv.conf.

Показ цепочки DNS серверов, используемых при DNS запросах

Опция +trace включает трассировку пути делегирования от корневых серверов имён для искомого имени. Трассировка отключена по умолчанию. Когда трассировка включена, dig выполняет итеративные запросы, чтобы преобразовать имя, которое было запрошено. Он будет следовать рекомендациям от корневых серверов, показывая ответ от каждого сервера, который использовался для разрешения поиска.

Если также указан @server, он влияет только на начальный запрос к серверам имён корневой зоны.


+dnssec также устанавливается, когда +trace установлен для лучшей эмуляции запросов по умолчанию от сервера имён.

Классы имён DNS

Имена классов IN и CH перекрываются с именами доменов верхнего уровня IN и CH. Либо используйте опции -t и -c для указания типа и класса, либо используйте -q для указания имени домена, либо используйте "IN." и "CH." при поиске этих доменов верхнего уровня.

Узнать подробности о работе DNS и структуре этой системы, а также о видах записей DNS вы сможете в статье «Введение в DNS терминологию, компоненты и концепции».

Поддержка IDN

Если dig был собран с поддержкой IDN (internationalized domain name — интернационализированных доменных имён), он может принимать и отображать не-ASCII доменные имена. dig соответствующим образом преобразует кодировку символов имени домена перед отправкой запроса на DNS-сервер или отображением ответа с сервера. Если по какой-либо причине вы хотите отключить поддержку IDN, используйте параметры +noidnin и +noidnout или определите переменную среды IDN_DISABLE.

Читайте также: