Найти в Дзене
Baks.Dev

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

В этом руководстве объясняется, как использовать dig утилиту, на практических примерах и подробные объяснения наиболее распространенных вариантов dig.
Оглавление
Dig Command in Linux (DNS Lookup)
Dig Command in Linux (DNS Lookup)

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

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

Установка dig

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

dig -v


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

DiG 9.11.3-1ubuntu1.1-Ubuntu


Если dig его нет в вашей системе, приведенная выше команда выведет «dig: команда не найдена». 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


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

-2

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

  1. В первой строке вывода печатается установленная dig версия и запрашиваемое имя домена. Вторая строка показывает глобальные параметры (по умолчанию только cmd).; <<>> DiG 9.13.3 <<>> linux.org
    ;; global options: +cmd
    Если вы не хотите, чтобы эти строки были включены в вывод, используйте +nocmd опцию. Эта опция должна быть самой первой после dig команды.
  2. В следующем разделе содержатся технические подробности об ответе, полученном от запрашиваемого органа (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 параметра, который также отключает заголовки некоторых других разделов.
  3. Псевдо-раздел «OPT» отображается только в более новых версиях dig утилиты. Вы можете прочитать больше о механизмах расширения для DNS (EDNS) здесь .;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    Чтобы исключить этот раздел из вывода, используйте +noedns параметр.
  4. В разделе «ВОПРОС» dig отображается запрос (вопрос). По умолчанию dig запрашивает запись А.;; QUESTION SECTION:
    ;linux.org. IN A
    Вы можете отключить этот раздел, используя +noquestion опцию.
  5. Раздел «ОТВЕТ» дает нам ответ на наш вопрос. Как мы уже упоминали, по умолчанию dig будет запрашиваться запись A. Здесь мы видим, что домен linux.org указывает на 104.18.59.123 IP-адрес.;; ANSWER SECTION:
    linux.org. 300 IN A 104.18.59.123
    linux.org. 300 IN A 104.18.58.123
    Обычно вы не хотите отключать ответ, но вы можете удалить этот раздел из вывода, используя +noanswer опцию.
  6. Раздел «AUTHORITY» сообщает нам, какие серверы являются полномочиями для ответа на DNS-запросы о запрашиваемом домене.;; AUTHORITY SECTION:
    linux.org. 86379 IN NS lia.ns.cloudflare.com.
    linux.org. 86379 IN NS mark.ns.cloudflare.com.
    Вы можете отключить этот раздел вывода, используя +noauthority опцию.
  7. Раздел «ДОПОЛНИТЕЛЬНО» предоставляет нам информацию об 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 Опция отключает дополнительный раздел ответа.
  8. Последний раздел 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 параметр:

dig +nocmd google.com a +noall +answer
google.com. 128 IN A 216.58.206.206


Как вы уже знаете, если тип записи DNS не указан, dig будет запрашиваться запись А. Вы также можете запросить запись 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 файле.

domains.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