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
:
-
В первой строке вывода выводится установленная версия
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
. -
Раздел «ОТВЕТ» дает нам ответ на наш вопрос. Как мы уже упоминали, по умолчанию
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
. -
Раздел «АВТОРИТЕТ» сообщает нам, какие серверы являются полномочными для ответа на запросы 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
опции+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
.
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
:
+nocmd +noall +answer
Выводы
dig
— это инструмент командной строки для запроса информации DNS и устранения проблем, связанных с DNS.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.