Как получить информацию о записях DNS (поиск DNS) с помощью Dig в Linux

12 set 2022 7 min di lettura
Как получить информацию о записях DNS (поиск DNS) с помощью Dig в Linux
Indice dei contenuti

Введение

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

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

В этом руководстве мы покажем вам, как использовать утилиту 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 достаточно детализирована.

В следующем примере мы запустим запрос для получения информации о домене linux.org.

dig linux.org

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


; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> linux.org
 ;; global options: +cmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30498
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

 ;; OPT PSEUDOSECTION:
 ; EDNS: version: 0, flags:; udp: 65494
 ;; QUESTION SECTION:
 ;linux.org. IN A

 ;; ANSWER SECTION:
 linux.org. 300 IN A 104.27.167.219
 linux.org. 300 IN A 104.27.166.219

 ;; Query time: 34 msec
 ;; SERVER: 127.0.0.53#53(127.0.0.53)
 ;; WHEN: Fri Jan 10 14:24:19 CET 2020
 ;; MSG SIZE rcvd: 70

Мы идем по разделам и объясняем вывод команды 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.

В разделе " QUESTION " dig показывает наш запрос question (вопрос). По умолчанию для dig требуется запись A.

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

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

Раздел «ОТВЕТ» дает нам ответ на наш вопрос. Как уже упоминалось, по умолчанию 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: 22 msec
 ;; SERVER: 127.0.0.53#53(127.0.0.53)
 ;; WHEN: Fri Jan 10 14:30:24 CET 2020
 ;; MSG SIZE rcvd: 70

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

Распечатать только ответ

В большинстве случаев вам нужен только быстрый ответ на запрос копания.

Получить краткий ответ

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

dig linux.org +short
104.18.59.123
 104.18.58.123

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

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

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

dig linux.org +noall +answer
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> linux.org +noall +answer
 ;; global options: +cmd
 linux.org. 300 IN A 104.27.167.219
 linux.org. 300 IN A 104.27.166.219

Сервер имен, зависящий от запроса

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

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

Например, чтобы запросить имя сервера Google (8.8.8.8) для информации о домене linux.org, используйте:

dig linux.org @8.8.8.8
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> linux.org @8.8.8.8
 ;; global options: +cmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54855
 ;; 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.27.167.219
 linux.org. 299 IN A 104.27.166.219

 ;; Query time: 34 msec
 ;; SERVER: 8.8.8.8#53(8.8.8.8)
 ;; WHEN: Fri Jan 10 14:40:41 CET 2020
 ;; MSG SIZE rcvd: 70

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

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

Запрос записей А

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

dig +nocmd google.com a +noall +answer
google.com. 299 IN A 172.217.16.174

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

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

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

dig +nocmd mail.google.com cname +noall +answer
mail.google.com. 601626 IN CNAME googlemail.l.google.com.

Запрос TXT-записей

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

dig +nocmd google.com txt +noall +answer
google.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"
 google.com. 300 IN TXT "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
 google.com. 3600 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
 google.com. 300 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
 google.com. 3600 IN TXT "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="

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

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

dig +nocmd google.com mx +noall +answer
google.com. 491 IN MX 50 alt4.aspmx.l.google.com.
 google.com. 491 IN MX 30 alt2.aspmx.l.google.com.
 google.com. 491 IN MX 40 alt3.aspmx.l.google.com.
 google.com. 491 IN MX 20 alt1.aspmx.l.google.com.
 google.com. 491 IN MX 10 aspmx.l.google.com.

Запрос NS-записей

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

dig +nocmd google.com ns +noall +answer
google.com. 343727 IN NS ns2.google.com.
 google.com. 343727 IN NS ns3.google.com.
 google.com. 343727 IN NS ns4.google.com.
 google.com. 343727 IN NS ns1.google.com.

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

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

dig +nocmd google.com any +noall +answer
google.com. 172 IN A 172.217.16.174
 google.com. 115 IN AAAA 2a00:1450:4001:814::200e
 google.com. 431 IN MX 40 alt3.aspmx.l.google.com.
 google.com. 431 IN MX 20 alt1.aspmx.l.google.com.
 google.com. 431 IN MX 10 aspmx.l.google.com.
 google.com. 431 IN MX 50 alt4.aspmx.l.google.com.
 google.com. 431 IN MX 30 alt2.aspmx.l.google.com.
 google.com. 57 IN SOA ns1.google.com. dns-admin.google.com. 288864427 900 900 1800 60
 google.com. 343707 IN NS ns3.google.com.
 google.com. 343707 IN NS ns4.google.com.
 google.com. 343707 IN NS ns1.google.com.
 google.com. 343707 IN NS ns2.google.com.

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

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

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

dig -x 149.20.4.15 +noall +answer

Как видно из приведенного ниже вывода, IP-адрес 149.20.4.15 связан с именем хоста mirror-isc3.debian.org.

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> -x 149.20.4.15 +noall +answer
 ;; global options: +cmd
 15.4.20.149.in-addr.arpa. 3600 IN PTR mirror-isc3.debian.org.

Массовый поиск

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

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

Создайте файл domains.txt:

nano domains.txt

Введите список доменов, например:

ubuntu.org
 debian.org
 google.com

Введите следующую команду терминала:

dig -f domains.txt +short

Вы должны получить вывод, подобный следующему:

69.16.230.42
 130.89.148.77
 128.31.0.62
 149.20.4.15
 172.217.16.174
 b.root-servers.net.
 c.root-servers.net.
 d.root-servers.net.
 e.root-servers.net.
 f.root-servers.net.
 g.root-servers.net.
 h.root-servers.net.
 i.root-servers.net.
 a.root-servers.net.
 j.root-servers.net.
 k.root-servers.net.
 l.root-servers.net.
 m.root-servers.net.

Файл.digrc

Поведением команды dig можно управлять, устанавливая параметры для каждого пользователя в файле ${HOME}/.digrc.

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

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

nano ~/.digrc

Вставьте следующие параметры

+nocmd +noall +answer

Когда вы снова запустите команду dig, она прочитает параметры, установленные во вновь созданном файле конфигурации, перед запуском команды.

Вывод

dig — это инструмент командной строки для запроса информации DNS и устранения проблем с DNS.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.