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

Dig Command in Linux (DNS Lookup)

21 Июня 2020 | Терминал

В этом руководстве объясняется, как использовать dig утилиту, на практических примерах и подробные объяснения наиболее распространенных вариантов dig.

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

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 


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





  Давайте рассмотрим раздел за разделом и объясним вывод 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

Комментарии
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Загрузка комментариев...