Dig

sudo apt-get install dnsutils

Примеры использования

Простой вывод команды dig (для понимания вывода, без доп.параметров )

Когда вы задаете имя домена в команде dig по-умолчанию вы получаете A-запись домена (ip-адрес сайта (домена) который мы запрашивали) как показано на листинге ниже

$ dig ya.ru

; <<>> DiG 9.7.3 <<>> ya.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31244
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ya.ru. IN A

;; ANSWER SECTION:
ya.ru. 2187 IN A 87.250.251.3
ya.ru. 2187 IN A 77.88.21.3
ya.ru. 2187 IN A 213.180.204.3
ya.ru. 2187 IN A 93.158.134.3
ya.ru. 2187 IN A 213.180.193.3
ya.ru. 2187 IN A 87.250.250.203
ya.ru. 2187 IN A 93.158.134.203
ya.ru. 2187 IN A 87.250.250.3

;; Query time: 2 msec
;; SERVER: 10.218.138.252#53(10.218.138.252)
;; WHEN: Fri Mar 23 15:21:18 2012
;; MSG SIZE rcvd: 151

В примере можно увидеть A-записи домена ya.ru в разделе ANSWER SECTION

Давайте рассмотрим разделы данного вывода подробней: - HEADER (заголовок): показывает версию dig, глобальные опции используемые с командой и другую дополнительную информацию - QUESTION SECTION (секция запроса): Показывает наш запрос, то бишь мы запросили показать A-запись (команда dig без параметров) для домена ya.ru - ANSWER SECTION (секция ответа): Показывает ответ полученный от DNS, в нашем случае показывает A-запись для ya.ru Последняя секция это статистика по запросу (служебная информация) - время выполнения запроса, имя DNS-сервера который запрашивался, когда был создан запрос и размер сообщения

Так же можно выполнить опрос конкретного DNS-сервера:

$ dig @ns1.yandex.ru ya.ru

; <<>> DiG 9.7.3 <<>> @ns1.yandex.ru ya.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56730
;; flags: qr aa rd; QUERY: 1, ANSWER: 8, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;ya.ru. IN A

;; ANSWER SECTION:
ya.ru. 7200 IN A 77.88.21.3
ya.ru. 7200 IN A 87.250.250.3
ya.ru. 7200 IN A 87.250.250.203
ya.ru. 7200 IN A 87.250.251.3
ya.ru. 7200 IN A 93.158.134.3
ya.ru. 7200 IN A 93.158.134.203
ya.ru. 7200 IN A 213.180.193.3
ya.ru. 7200 IN A 213.180.204.3

;; AUTHORITY SECTION:
ya.ru. 7200 IN NS ns1.yandex.ru.
ya.ru. 7200 IN NS ns5.yandex.ru.

;; ADDITIONAL SECTION:
ns1.yandex.ru. 345600 IN A 213.180.193.1
ns1.yandex.ru. 3600 IN AAAA 2a02:6b8::1
ns5.yandex.ru. 345600 IN A 213.180.204.1

;; Query time: 13 msec
;; SERVER: 213.180.193.1#53(213.180.193.1)
;; WHEN: Fri Mar 23 14:41:37 2012
;; MSG SIZE rcvd: 254

Результат вывода дополняется еще двумя секциями: AUTHORITY SECTION: Показывает имена DNS-серверов обработавших наш запрос ADDITIONAL SECTION: Показывает ip-адреса этих DNS-серверов (из секции AUTHORITY SECTION)

Вывод только секции ANSWER SECTION

В большинстве случаев требуется только ip адрес домена, то бишь вывод секции "ANSWER SECTION" Для этого существуют следующие ключи:

-+nocomments - отключает линию комментариев

-+noauthority - отключает секцию "AUTHORITY SECTION"

-+noadditional – отключает секцию "ADDITIONAL SECTION"

-+nostats – отключает секцию статистики

-+noanswer – выключает секцию ответа (ANSWER SECTION)

Пример:

$ dig ya.ru +nocomments +noquestion +noauthority +noadditional +nostats

; <<>> DiG 9.7.3 <<>> ya.ru +nocomments +noquestion +noauthority +noadditional +nostats
;; global options: +cmd
ya.ru. 114 IN A 77.88.21.3
ya.ru. 114 IN A 213.180.204.3
ya.ru. 114 IN A 93.158.134.3
ya.ru. 114 IN A 213.180.193.3
ya.ru. 114 IN A 87.250.250.203
ya.ru. 114 IN A 93.158.134.203
ya.ru. 114 IN A 87.250.250.3
ya.ru. 114 IN A 87.250.251.3

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

$ dig ya.ru +noall +answer

; <<>> DiG 9.7.3 <<>> ya.ru +noall +answer
;; global options: +cmd
ya.ru. 7152 IN A 213.180.193.3
ya.ru. 7152 IN A 87.250.250.203
ya.ru. 7152 IN A 93.158.134.3
ya.ru. 7152 IN A 87.250.250.3
ya.ru. 7152 IN A 77.88.21.3
ya.ru. 7152 IN A 213.180.204.3
ya.ru. 7152 IN A 87.250.251.3
ya.ru. 7152 IN A 93.158.134.203

Запрос MX-записи

Для запроса MX-записи домена мы используем одноименный аргумент командной строки (MX)

$ dig ya.ru MX +noall +answer

; <<>> DiG 9.7.3 <<>> ya.ru MX +noall +answer
;; global options: +cmd
ya.ru. 1979 IN MX 10 mx.yandex.ru.

Этот же запрос можно выполнить с ключом -t (тип)

$ dig -t MX ya.ru +noall +answer

; <<>> DiG 9.7.3 <<>> -t MX ya.ru +noall +answer
;; global options: +cmd
ya.ru. 1903 IN MX 10 mx.yandex.ru.

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

По аналогии с предыдущим пунктом, используем аргумент NS

$ dig ya.ru NS +noall +answer

; <<>> DiG 9.7.3 <<>> ya.ru NS +noall +answer
;; global options: +cmd
ya.ru. 7170 IN NS ns5.yandex.ru.
ya.ru. 7170 IN NS ns1.yandex.ru.

Вы также можете использовать ключ -t для указания типа запроса

$ dig -t NS ya.ru +noall +answer

; <<>> DiG 9.7.3 <<>> -t NS ya.ru +noall +answer
;; global options: +cmd
ya.ru. 7088 IN NS ns5.yandex.ru.
ya.ru. 7088 IN NS ns1.yandex.ru.

Просмотр всех типов DNS-записей

Для этого используется ключ ANY

$ dig ya.ru ANY +noall +answer

; <<>> DiG 9.7.3 <<>> ya.ru ANY +noall +answer
;; global options: +cmd
ya.ru. 4931 IN TXT "v=spf1 redirect=_spf.yandex.ru"
ya.ru. 6963 IN NS ns1.yandex.ru.
ya.ru. 6963 IN NS ns5.yandex.ru.
ya.ru. 1533 IN MX 10 mx.yandex.ru.
ya.ru. 6494 IN A 93.158.134.203
ya.ru. 6494 IN A 213.180.193.3
ya.ru. 6494 IN A 87.250.250.203
ya.ru. 6494 IN A 93.158.134.3
ya.ru. 6494 IN A 87.250.250.3
ya.ru. 6494 IN A 77.88.21.3
ya.ru. 6494 IN A 213.180.204.3
ya.ru. 6494 IN A 87.250.251.3

Также допустим ключ -t

$ dig -t ANY ya.ru +noall +answer

; <<>> DiG 9.7.3 <<>> -t ANY ya.ru +noall +answer
;; global options: +cmd
ya.ru. 4857 IN TXT "v=spf1 redirect=_spf.yandex.ru"
ya.ru. 6889 IN NS ns5.yandex.ru.
ya.ru. 6889 IN NS ns1.yandex.ru.
ya.ru. 1459 IN MX 10 mx.yandex.ru.
ya.ru. 6420 IN A 213.180.204.3
ya.ru. 6420 IN A 87.250.251.3
ya.ru. 6420 IN A 93.158.134.203
ya.ru. 6420 IN A 213.180.193.3
ya.ru. 6420 IN A 87.250.250.203
ya.ru. 6420 IN A 93.158.134.3
ya.ru. 6420 IN A 87.250.250.3
ya.ru. 6420 IN A 77.88.21.3

Краткий вывод команды dig

Допустим чтобы просмотреть только ip-адрес, без лишней информации, используем опцию +short

$ dig ya.ru +short
213.180.193.3
93.158.134.203
87.250.250.203
77.88.21.3
213.180.204.3
87.250.250.3
93.158.134.3
87.250.251.3

Также интересно:

Вы также можете вывести информацию по любому виду информации с ключем +short Пример:

$ dig ya.ru ns +short
ns5.yandex.ru.
ns1.yandex.ru.

Просмотр информации об обратной зоне домена (PTR)

Для просмотра обратной зоны необходимо использовать ключ -х Для примера, мы хотим узнать имя домена по айпи-адресу 77.88.21.3

$ dig -x 77.88.21.3 +short

<a href="http://www.yandex.ru">www.yandex.ru</a>.

Для вывода полной информации убираем ключ +short

$dig -x 77.88.21.3

; <<>> DiG 9.7.3 <<>> -x 77.88.21.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 885
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;3.21.88.77.in-addr.arpa. IN PTR
;; ANSWER SECTION:
3.21.88.77.in-addr.arpa. 11007 IN PTR <a href="http://www.yandex.ru">www.yandex.ru</a>.
;; Query time: 2 msec
;; SERVER: 10.218.138.252#53(10.218.138.252)
;; WHEN: Fri Mar 23 16:21:23 2012
;; MSG SIZE rcvd: 68

Использование конкретного DNS-сервера для выполнения запроса

Для использования конкретного DNS-сервераиспользуется запись вида - @dnsserver, где dnsserver это или имя или ip-адрес DNS-сервера Данный пример мы рассмотрели в п.1

dig @8.8.8.8 mail.mirocow.com mx
; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 mail.mirocow.com mx
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47545
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mail.mirocow.com.	IN	MX
;; ANSWER SECTION:
mail.mirocow.com.	21599	IN	MX	10 mirocow.com.
;; Query time: 32 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Aug 23 00:43:52 2016
;; MSG SIZE rcvd: 50

Объемный запрос (запрос информации сразу о нескольких доменах)

Для запроса информации о нескольких доменах возможно использование текстовых файлов с перечислением доменов. Создадим файл names.txt с именами доменов:

$nano names.txt
ya.ru
google.ru

Далее используем ключ -f для чтения из файла:

$ dig -f names.txt +noall +answer
ya.ru. 5241 IN A 87.250.251.3
ya.ru. 5241 IN A 93.158.134.203
ya.ru. 5241 IN A 213.180.193.3
ya.ru. 5241 IN A 87.250.250.203
ya.ru. 5241 IN A 93.158.134.3
ya.ru. 5241 IN A 87.250.250.3
ya.ru. 5241 IN A 77.88.21.3
ya.ru. 5241 IN A 213.180.204.3
google.ru. 231 IN A 74.125.232.55
google.ru. 231 IN A 74.125.232.56
google.ru. 231 IN A 74.125.232.63

Также можно комбинировать тип DNS записи c опцией -f:

$dig -f names.txt MX +noall +answer

ya.ru. 184 IN MX 10 mx.yandex.ru.
google.ru. 10800 IN MX 10 google.com.s9b1.psmtp.com.
google.ru. 10800 IN MX 10 google.com.s9a2.psmtp.com.
google.ru. 10800 IN MX 10 google.com.s9b2.psmtp.com.
google.ru. 10800 IN MX 10 google.com.s9a1.psmtp.com.

Также возможно перечисление доменов непосредственно в командной строке. Для примера узнаем MX-запись для домена ya.ru и NS-запись для домена google.ru:

dig ya.ru mx +noall +answer google.ru ns +noall +answer

; <<>> DiG 9.7.3 <<>> ya.ru mx +noall +answer google.ru ns +noall +answer
;; global options: +cmd
ya.ru. 7143 IN MX 10 mx.yandex.ru.
google.ru. 66518 IN NS ns4.google.com.
google.ru. 66518 IN NS ns3.google.com.
google.ru. 66518 IN NS ns1.google.com.
google.ru. 66518 IN NS ns2.google.com.

Изменение параметров по умолчанию для команды dig

Например вы хотите, чтобы утилита dig по умолчанию выводила только секцию ответа (ANSWER SECTION). Для этого необходимо внести в файл .digrc необходимые ключи, в нашем случае +noall +answer:

$nano $HOME/.digrc

+noall +answer

Вывод будет:

$ dig ya.ru
ya.ru. 4162 IN A 93.158.134.203
ya.ru. 4162 IN A 213.180.193.3
ya.ru. 4162 IN A 87.250.250.203
ya.ru. 4162 IN A 93.158.134.3
ya.ru. 4162 IN A 87.250.250.3
ya.ru. 4162 IN A 77.88.21.3
ya.ru. 4162 IN A 213.180.204.3
ya.ru. 4162 IN A 87.250.251.3