
Dig (Domain Information Groper) — мощный инструмент командной строки для отправки запросов к серверам имен DNS.
Команда dig позволяет запрашивать информацию о различных записях DNS, включая адреса хостов, почтовые обмены и серверы имён. Это наиболее часто используемый системными администраторами инструмент для устранения неполадок DNS благодаря своей гибкости и простоте использования.
В этом руководстве объясняется, как использовать утилиту dig , с помощью практических примеров и подробных объяснений наиболее распространенных опций dig .
Установка dig
Чтобы проверить, доступна ли команда dig в вашей системе, введите:
dig -v
Вывод должен выглядеть примерно так:
DiG 9.11.3-1ubuntu1.1-Ubuntu
Если в вашей системе отсутствует dig , команда выше выведет сообщение «dig: command not found». Инструмент dig можно установить с помощью менеджера пакетов дистрибутива.
Установка dig на Ubuntu и Debian
sudo apt update && sudo apt install dnsutils
Установка dig на CentOS и Fedora
sudo yum install bind-utils
Установить dig на Arch Linux
sudo pacman -S bind-tools
Понимание вывода dig
В простейшей форме, когда команда dig используется для запроса одного хоста (домена) без дополнительных параметров, она довольно многословна.
В следующем примере мы работаем на домене linux.org :
dig linux.org
Вывод должен выглядеть примерно так:

Давайте разберем раздел за разделом и объясним вывод команды dig :
-
В первой строке вывода выводится установленная версия
digи запрошенное доменное имя. Во второй строке отображаются глобальные параметры (по умолчанию только cmd).; <<>> DiG 9.13.3 <<>> linux.org ;; global options: +cmdЕсли вы не хотите, чтобы эти строки включались в вывод, используйте опцию
+nocmd. Эта опция должна быть первой после командыdig. -
Следующий раздел содержит техническую информацию об ответе, полученном от запрошенного центра (DNS-сервера). В заголовке указан код операции (действие, выполненное
dig) и статус действия. В данном примере статус —NOERROR, что означает, что запрошенный центр обработал запрос без ошибок.;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37159 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5Этот раздел можно удалить с помощью опции
+nocomments, которая также отключает заголовки некоторых других разделов. -
Псевдораздел «OPT» отображается только в новых версиях утилиты
dig. Подробнее о механизмах расширения DNS (EDNS) можно узнатьздесь .;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096Чтобы исключить этот раздел из вывода, используйте опцию
+noedns. -
В разделе «ВОПРОС»
digотображает запрос (вопрос). По умолчаниюdigзапрашивает запись A.;; QUESTION SECTION: ;linux.org. IN AВы можете отключить этот раздел с помощью опции
+noquestion. -
Раздел «ANSWER» даёт нам ответ на наш вопрос. Как мы уже упоминали, по умолчанию
digзапрашивает запись A. Здесь мы видим, что доменlinux.orgуказывает на IP-адрес104.18.59.123.;; ANSWER SECTION: linux.org. 300 IN A 104.18.59.123 linux.org. 300 IN A 104.18.58.123Обычно отключать ответ не требуется, но вы можете удалить этот раздел из вывода с помощью опции
+noanswer. -
Раздел «AUTHORITY» сообщает нам, какой сервер(ы) уполномочен отвечать на DNS-запросы относительно запрашиваемого домена.
;; AUTHORITY SECTION: linux.org. 86379 IN NS lia.ns.cloudflare.com. linux.org. 86379 IN NS mark.ns.cloudflare.com.Вы можете отключить этот раздел вывода с помощью опции
+noauthority. -
Раздел «ДОПОЛНИТЕЛЬНО» дает нам информацию об IP-адресах авторитетных DNS-серверов, указанных в разделе полномочий.
;; ADDITIONAL SECTION: lia.ns.cloudflare.com. 84354 IN A 173.245.58.185 lia.ns.cloudflare.com. 170762 IN AAAA 2400:cb00:2049:1::adf5:3ab9 mark.ns.cloudflare.com. 170734 IN A 173.245.59.130 mark.ns.cloudflare.com. 170734 IN AAAA 2400:cb00:2049:1::adf5:3b82Опция
+noadditionalотключает дополнительный раздел ответа. -
Последний раздел вывода
digсодержит статистику по запросу.;; Query time: 58 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Oct 12 11:46:46 CEST 2018 ;; MSG SIZE rcvd: 212Эту часть можно отключить с помощью опции
+nostats.
Печать только ответа
Как правило, на ваш запрос dig вы хотели бы получить только краткий ответ.
1. Получите короткий ответ
Чтобы получить краткий ответ на ваш запрос, используйте опцию +short :
dig linux.org +short
104.18.59.123 104.18.58.123
Вывод будет включать только IP-адреса записи A.
2. Получите подробный ответ
Для более подробного ответа отключите все результаты с помощью параметра +noall , а затем включите только раздел ответов с помощью параметра +answer .
dig linux.org +noall +answer
; <<>> DiG 9.13.3 <<>> linux.org +noall +answer ;; global options: +cmd linux.org. 67 IN A 104.18.58.123 linux.org. 67 IN A 104.18.59.123
Запрос конкретного имени сервера
По умолчанию, если сервер имен не указан, dig использует серверы, перечисленные в файле /etc/resolv.conf .
Чтобы указать сервер имен, к которому будет выполняться запрос, используйте символ @ (at), за которым следует IP-адрес сервера имен или имя хоста.
Например, чтобы запросить у сервера имен Google (8.8.8.8) информацию о домене linux.org , вы должны использовать:
dig linux.org @8.8.8.8
; <<>> DiG 9.13.3 <<>> linux.org @8.8.8.8 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39110 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;linux.org. IN A ;; ANSWER SECTION: linux.org. 299 IN A 104.18.58.123 linux.org. 299 IN A 104.18.59.123 ;; Query time: 54 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Fri Oct 12 14:28:01 CEST 2018 ;; MSG SIZE rcvd: 70
Запрос типа записи
Dig позволяет выполнить любой допустимый DNS-запрос, добавив тип записи в конец запроса. В следующем разделе мы покажем вам примеры поиска наиболее распространённых записей, таких как A (IP-адрес), CNAME (каноническое имя), TXT (текстовая запись), MX (почтовый обменник) и NS (серверы имён).
1. Запрос записей A
Чтобы получить список всех адресов для доменного имени, используйте опцию a :
dig +nocmd google.com a +noall +answer
google.com. 128 IN A 216.58.206.206
Как вы уже знаете, если тип записи DNS не указан, dig запросит запись A. Вы также можете запросить запись A, не указывая опцию a .
2. Запрос записей CNAME
Чтобы найти псевдоним доменного имени, используйте опцию cname :
dig +nocmd mail.google.com cname +noall +answer
mail.google.com. 553482 IN CNAME googlemail.l.google.com.
3. Запрос TXT-записей
Используйте опцию txt для получения всех записей TXT для определенного домена:
dig +nocmd google.com txt +noall +answer
google.com. 300 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95" google.com. 300 IN TXT "v=spf1 include:_spf.google.com ~all" google.com. 300 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
4. Запрос записей MX
Чтобы получить список всех почтовых серверов для определенного домена, используйте опцию mx :
dig +nocmd google.com mx +noall +answer
google.com. 494 IN MX 30 alt2.aspmx.l.google.com. google.com. 494 IN MX 10 aspmx.l.google.com. google.com. 494 IN MX 40 alt3.aspmx.l.google.com. google.com. 494 IN MX 50 alt4.aspmx.l.google.com. google.com. 494 IN MX 20 alt1.aspmx.l.google.com.
5. Запрос записей NS
Чтобы найти авторитетные серверы имен для нашего домена, используйте опцию ns :
dig +nocmd google.com ns +noall +answer
google.com. 84527 IN NS ns1.google.com. google.com. 84527 IN NS ns2.google.com. google.com. 84527 IN NS ns4.google.com. google.com. 84527 IN NS ns3.google.com.
6. Запрос всех записей
Используйте опцию any , чтобы получить список всех записей DNS для определенного домена:
dig +nocmd google.com any +noall +answer
google.com. 299 IN A 216.58.212.14 google.com. 299 IN AAAA 2a00:1450:4017:804::200e google.com. 21599 IN NS ns2.google.com. google.com. 21599 IN NS ns1.google.com. google.com. 599 IN MX 30 alt2.aspmx.l.google.com. google.com. 21599 IN NS ns4.google.com. google.com. 599 IN MX 50 alt4.aspmx.l.google.com. google.com. 599 IN MX 20 alt1.aspmx.l.google.com. google.com. 299 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e" google.com. 21599 IN CAA 0 issue "pki.goog" google.com. 599 IN MX 40 alt3.aspmx.l.google.com. google.com. 3599 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95" google.com. 21599 IN NS ns3.google.com. google.com. 599 IN MX 10 aspmx.l.google.com. google.com. 3599 IN TXT "v=spf1 include:_spf.google.com ~all" google.com. 59 IN SOA ns1.google.com. dns-admin.google.com. 216967258 900 900 1800 60
Обратный DNS-поиск
Чтобы запросить имя хоста , связанное с определенным IP-адресом, используйте опцию -x .
Например, чтобы выполнить обратный поиск по адресу 208.118.235.148 , введите:
dig -x 208.118.235.148 +noall +answer
Как видно из приведенного ниже вывода, IP-адрес 208.118.235.148 связан с именем хоста wildebeest.gnu.org .
; <<>> DiG 9.13.3 <<>> -x 208.118.235.148 +noall +answer ;; global options: +cmd 148.235.118.208.in-addr.arpa. 245 IN PTR wildebeest.gnu.org.
Массовые запросы
Если вы хотите запросить большое количество доменов, вы можете добавить их в файл (по одному домену на строку) и использовать опцию -f , а затем имя файла.
В следующем примере мы запрашиваем домены, перечисленные в файле domains.txt .
домены.txt
lxer.com linuxtoday.com tuxmachines.org
dig -f domains.txt +short
108.166.170.171 70.42.23.121 204.68.122.43
Файл .digrc
Поведение команды dig можно контролировать, настраивая параметры для каждого пользователя в файле ${HOME}/.digrc .
Если файл .digrc присутствует в домашнем каталоге пользователя, указанные в нем параметры применяются до аргументов командной строки.
Например, если вы хотите отобразить только раздел ответов, откройте текстовый редактор и создайте следующий файл ~/.digrc :
~/.digrc
+nocmd +noall +answer
Заключение
dig — это инструмент командной строки для запроса информации DNS и устранения неполадок, связанных с DNS.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства