Команда Dig в Linux (поиск DNS)

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

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

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

Установка 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 запрашивает запись A.

     ;; QUESTION SECTION: ;linux.org. IN A

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

  5. Раздел «ОТВЕТ» дает нам ответ на наш вопрос. Как мы уже упоминали, по умолчанию 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 .

  6. Раздел «АВТОРИТЕТ» сообщает нам, какие серверы являются полномочными для ответа на запросы 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 опции +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 .

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.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий