Поиск по сайту:
Мы редко до конца понимаем, чего мы в действительности хотим (Ларошфуко).

Как использовать команду Dig для запроса DNS в Linux

15.10.2018

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

С помощью команды 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:

  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
    

    Эта часть вывода может быть удалена с помощью опции +comments. Когда этот параметр используется, он отключает некоторые другие разделы заголовков.

  3. Этот раздел отображается по умолчанию только в более новых версиях утилиты dig.
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    

    Если вы не хотите, чтобы этот раздел был включен в вывод, используйте этот параметр +noedns.

  4. Это раздел, где dig показывает наш запрос (вопрос). По умолчанию dig запросит запись A.
    ;; QUESTION SECTION:
    ;linux.org.         IN  A
    

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

  5. Раздел ANSWER дает нам ответ на наш вопрос. Как мы уже упоминали, по умолчанию 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. Раздел «AUTHORITY» сообщает нам, какой сервер(ы) является полномочным органом для ответа на запросы DNS о запрошенном домене.
    ;; AUTHORITY SECTION:
    linux.org.      86379   IN  NS  lia.ns.cloudflare.com.
    linux.org.      86379   IN  NS  mark.ns.cloudflare.com.
    

    Вы можете отключить этот раздел вывода с помощью этой опции +noauthority.

  7. Раздел ADDITIONAL дает нам информацию об 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
    
  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.

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

Чтобы получить короткий ответ на запрос, воспользуйтесь опцией +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.		67	IN	A	104.18.58.123
linux.org.		67	IN	A	104.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.			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 (серверы имен).

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

dig +nocmd google.com a +noall +answer
google.com.		128	IN	A	216.58.206.206

 

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

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

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

Используйте параметр 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"

Чтобы получить список всех почтовых серверов для определенного домена, воспользуйтесь опцией 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.

Чтобы найти авторитетные серверы имен для нашего конкретного домена, используйте параметр 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.

Используйте этот параметр 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

Чтобы запросить имя хоста, связанное с определенным 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

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

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

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

~ / .Digrc
+nocmd +noall +answer

К настоящему времени у вас должно быть хорошее представление о том, как использовать команду dig в Linux, и вы должны иметь возможность устранить большинство проблем, связанных с DNS.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
oleg711

Вопрос у меня такой. Выполняю запрос –

dig +nocmd  -x 94.100.180.201 +noall +answer

Получаю ответ –

201.180.100.94.in-addr.arpa   2312      IN         PTR       mail.ru.

Как можно удалить из ответа – 2312 IN PTR

оставив запись вида

201.180.100.84.in-addr.arpa mail.ru.

Буду премного благодарен за идеи.

Это может быть вам интересно


Рекомендуемое
Интернет предоставляет компаниям и частным лицам доступ к людям, которых…

Спасибо!

Теперь редакторы в курсе.