Не ропщи по мелочам (Авессалом Подводный).

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

6 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
15 октября 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.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.

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.

Просмотров: 33

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close