С помощью команды dig вы можете запрашивать информацию о различных записях DNS, включая адреса хостов, почтовые обмены и серверы имен. Это наиболее часто используемый инструмент среди системных администраторов для устранения проблем DNS из-за его гибкости и простоты использования.
В этом уроке мы покажем вам, как использовать утилиту dig с помощью практических примеров и подробных объяснений наиболее распространенных вариантов dig.
Чтобы проверить, доступна ли команда dig для вашего типа системы:
dig -v
Результат должен выглядеть примерно так:
DiG 9.11.3-1ubuntu1.1-Ubuntu
Если в вашей системе нет инструмента dig, вывод будет следующий dig: command not found
, вы сможете легко установить с помощью диспетчера пакетов вашего дистрибутива.
sudo apt install dnsutils
sudo yum install bind-utils
В простейшей форме, когда он используется для запроса одного хоста (домена) без каких-либо дополнительных аргументов, dig довольно многословен.
В следующем примере мы выполним запрос для получения информации о домене linux.org
.
dig linux.org
Результат должен выглядеть примерно так:
Объясним вывод команды dig:
; <<>> DiG 9.13.3 <<>> linux.org
;; global options: +cmd
Если вы не хотите, чтобы эти строки были включены в вывод, используйте эту опцию +nocmd
. Эти параметры должны быть самым первым аргументом после команды dig.
NOERROR
означает, что запрашиваемый орган обслуживал запрос без каких-либо проблем.
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37159
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5
Эта часть вывода может быть удалена с помощью опции +comments
. Когда этот параметр используется, он отключает некоторые другие разделы заголовков.
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
Если вы не хотите, чтобы этот раздел был включен в вывод, используйте этот параметр +noedns
.
;; QUESTION SECTION:
;linux.org. IN A
Вы можете отключить этот раздел, используя эту опцию +noquestion
.
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 SECTION:
linux.org. 86379 IN NS lia.ns.cloudflare.com.
linux.org. 86379 IN NS mark.ns.cloudflare.com.
Вы можете отключить этот раздел вывода с помощью этой опции +noauthority
.
;; 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
;; 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
.
В большинстве случаев вы хотели бы получить только быстрый ответ на ваш запрос.
Чтобы получить короткий ответ на запрос, воспользуйтесь опцией +short
:
dig linux.org +short
104.18.59.123
104.18.58.123
Вывод будет содержать только IP-адреса записи A.
Для более подробного ответа отключите все результаты с помощью параметров +noall
, а затем включите только раздел ответа с опцией +answer
.
dig linux.org +noall +answer
; <<>> DiG 9.13.3 <<>> linux.org +noall +answer
;; global options: +cmd
linux.org.67INA104.18.58.123
linux.org.67INA104.18.59.123
По умолчанию, если не указан сервер имен, вы можете использовать серверы, перечисленные в файле /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.INA
;; ANSWER SECTION:
linux.org.299INA104.18.58.123
linux.org.299INA104.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 (серверы имен).
Чтобы получить список всех адресов (адресов) для имени домена, используйте параметр a
:
dig +nocmd google.com a +noall +answer
google.com.128INA216.58.206.206
Как вы уже знаете, если тип записи DNS не указан, dig запросит запись A. Вы также можете запросить запись A без указания опции a
Чтобы найти доменное имя псевдонима, используйте параметр cname
:
dig +nocmd mail.google.com cname +noall +answer
mail.google.com.553482INCNAMEgooglemail.l.google.com.
Используйте параметр txt
для извлечения всех записей TXT для определенного домена:
dig +nocmd google.com txt +noall +answer
google.com.300INTXT"facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com.300INTXT"v=spf1 include:_spf.google.com ~all"
google.com.300INTXT"docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
Чтобы получить список всех почтовых серверов для определенного домена, воспользуйтесь опцией mx
:
dig +nocmd google.com mx +noall +answer
google.com.494INMX30 alt2.aspmx.l.google.com.
google.com.494INMX10 aspmx.l.google.com.
google.com.494INMX40 alt3.aspmx.l.google.com.
google.com.494INMX50 alt4.aspmx.l.google.com.
google.com.494INMX20 alt1.aspmx.l.google.com.
Чтобы найти авторитетные серверы имен для нашего конкретного домена, используйте параметр ns
:
dig +nocmd google.com ns +noall +answer
google.com.84527INNSns1.google.com.
google.com.84527INNSns2.google.com.
google.com.84527INNSns4.google.com.
google.com.84527INNSns3.google.com.
Используйте этот параметр any
, чтобы получить список всех записей DNS для определенного домена:
dig +nocmd google.com any +noall +answer
google.com.299INA216.58.212.14
google.com.299INAAAA2a00:1450:4017:804::200e
google.com.21599INNSns2.google.com.
google.com.21599INNSns1.google.com.
google.com.599INMX30 alt2.aspmx.l.google.com.
google.com.21599INNSns4.google.com.
google.com.599INMX50 alt4.aspmx.l.google.com.
google.com.599INMX20 alt1.aspmx.l.google.com.
google.com.299INTXT"docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com.21599INCAA0 issue "pki.goog"
google.com.599INMX40 alt3.aspmx.l.google.com.
google.com.3599INTXT"facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com.21599INNSns3.google.com.
google.com.599INMX10 aspmx.l.google.com.
google.com.3599INTXT"v=spf1 include:_spf.google.com ~all"
google.com.59INSOAns1.google.com. dns-admin.google.com. 216967258 900 900 1800 60
Чтобы запросить имя хоста, связанное с определенным 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 INPTRwildebeest.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
Поведение команды dig может контролироваться путем настройки для каждого параметра пользователя в файле ${HOME}/.digrc
.
Если файл .digrc
присутствует в домашнем каталоге пользователя, параметры, указанные в нем, применяются до аргументов командной строки.
Например, если вы хотите отобразить только раздел ответа, откройте текстовый редактор и создайте следующий файл ~/.digrc
:
+nocmd +noall +answer
К настоящему времени у вас должно быть хорошее представление о том, как использовать команду dig в Linux, и вы должны иметь возможность устранить большинство проблем, связанных с DNS.
Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!
Спасибо! Ваша заявка принята
Спасибо! Ваша заявка принята
Вопрос у меня такой. Выполняю запрос –
Получаю ответ –
Как можно удалить из ответа – 2312 IN PTR
оставив запись вида
201.180.100.84.in-addr.arpa mail.ru.
Буду премного благодарен за идеи.