Примеры использования команды dig для просмотра параметров DNS (DNS Lookup) в Linux
dig (англ. слово «копать», а формально — сокращение от «domain information groper») — утилита (DNS-клиент), предоставляющая пользователю интерфейс командной строки для обращения к системе DNS. Позволяет задавать различные типы запросов и запрашивать произвольно указываемые сервера. Является аналогом утилиты nslookup.
Утилита dig входит в стандартный комплект DNS сервера BIND.
1. Простой вывод команды 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.3ya.ru. 2187 IN A 77.88.21.3ya.ru. 2187 IN A 213.180.204.3ya.ru. 2187 IN A 93.158.134.3ya.ru. 2187 IN A 213.180.193.3ya.ru. 2187 IN A 87.250.250.203ya.ru. 2187 IN A 93.158.134.203ya.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.3ya.ru. 7200 IN A 87.250.250.3ya.ru. 7200 IN A 87.250.250.203ya.ru. 7200 IN A 87.250.251.3ya.ru. 7200 IN A 93.158.134.3ya.ru. 7200 IN A 93.158.134.203ya.ru. 7200 IN A 213.180.193.3ya.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.1ns1.yandex.ru. 3600 IN AAAA 2a02:6b8::1ns5.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)
2. Вывод только секции 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: +cmdya.ru. 114 IN A 77.88.21.3ya.ru. 114 IN A 213.180.204.3ya.ru. 114 IN A 93.158.134.3ya.ru. 114 IN A 213.180.193.3ya.ru. 114 IN A 87.250.250.203ya.ru. 114 IN A 93.158.134.203ya.ru. 114 IN A 87.250.250.3ya.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: +cmdya.ru. 7152 IN A 213.180.193.3ya.ru. 7152 IN A 87.250.250.203ya.ru. 7152 IN A 93.158.134.3ya.ru. 7152 IN A 87.250.250.3ya.ru. 7152 IN A 77.88.21.3ya.ru. 7152 IN A 213.180.204.3ya.ru. 7152 IN A 87.250.251.3ya.ru. 7152 IN A 93.158.134.203 |
3. Запрос MX-записи
Для запроса MX-записи домена мы используем одноименный аргумент командной строки (MX)
$ dig ya.ru MX +noall +answer; <<>> DiG 9.7.3 <<>> ya.ru MX +noall +answer;; global options: +cmdya.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: +cmdya.ru. 1903 IN MX 10 mx.yandex.ru. |
4. Запрос NS-записи
По аналогии с предыдущим пунктом, используем аргумент NS
$ dig ya.ru NS +noall +answer; <<>> DiG 9.7.3 <<>> ya.ru NS +noall +answer;; global options: +cmdya.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: +cmdya.ru. 7088 IN NS ns5.yandex.ru.ya.ru. 7088 IN NS ns1.yandex.ru. |
5. Просмотр всех типов DNS-записей
Для этого используется ключ ANY
$ dig ya.ru ANY +noall +answer; <<>> DiG 9.7.3 <<>> ya.ru ANY +noall +answer;; global options: +cmdya.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.203ya.ru. 6494 IN A 213.180.193.3ya.ru. 6494 IN A 87.250.250.203ya.ru. 6494 IN A 93.158.134.3ya.ru. 6494 IN A 87.250.250.3ya.ru. 6494 IN A 77.88.21.3ya.ru. 6494 IN A 213.180.204.3ya.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: +cmdya.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.3ya.ru. 6420 IN A 87.250.251.3ya.ru. 6420 IN A 93.158.134.203ya.ru. 6420 IN A 213.180.193.3ya.ru. 6420 IN A 87.250.250.203ya.ru. 6420 IN A 93.158.134.3ya.ru. 6420 IN A 87.250.250.3ya.ru. 6420 IN A 77.88.21.3 |
6. Краткий вывод команды dig
Допустим чтобы просмотреть только ip-адрес, без лишней информации, используем опцию +short
$ dig ya.ru +short213.180.193.393.158.134.20387.250.250.20377.88.21.3213.180.204.387.250.250.393.158.134.387.250.251.3 |
Также интересно:
Вы также можете вывести информацию по любому виду информации с ключем +short
Пример:
$ dig ya.ru ns +shortns5.yandex.ru.ns1.yandex.ru. |
7. Просмотр информации об обратной зоне домена (PTR)
Для просмотра обратной зоны необходимо использовать ключ -х
Для примера, мы хотим узнать имя домена по айпи-адресу 77.88.21.3
$ dig -x 77.88.21.3 +short |
Для вывода полной информации убираем ключ +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:;; 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 |
8. Использование конкретного DNS-сервера для выполнения запроса
Для использования конкретного DNS-сервера используется запись вида – @dnsserver, где dnsserver это или имя или ip-адрес DNS-сервера
Данный пример мы рассмотрели в п.1
9. Объемный запрос (запрос информации сразу о нескольких доменах)
Для запроса информации о нескольких доменах возможно использование текстовых файлов с перечислением доменов.
Создадим файл names.txt с именами доменов:
$nano names.txtya.rugoogle.ru |
Далее используем ключ -f для чтения из файла:
$ dig -f names.txt +noall +answerya.ru. 5241 IN A 87.250.251.3ya.ru. 5241 IN A 93.158.134.203ya.ru. 5241 IN A 213.180.193.3ya.ru. 5241 IN A 87.250.250.203ya.ru. 5241 IN A 93.158.134.3ya.ru. 5241 IN A 87.250.250.3ya.ru. 5241 IN A 77.88.21.3ya.ru. 5241 IN A 213.180.204.3google.ru. 231 IN A 74.125.232.55google.ru. 231 IN A 74.125.232.56google.ru. 231 IN A 74.125.232.63 |
Также можно комбинировать тип DNS записи c опцией -f:
$dig -f names.txt MX +noall +answerya.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: +cmdya.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. |
10. Изменение параметров по умолчанию для команды dig
Например вы хотите, чтобы утилита dig по умолчанию выводила только секцию ответа (ANSWER SECTION).
Для этого необходимо внести в файл .digrc необходимые ключи, в нашем случае +noall +answer:
$nano $HOME/.digrc+noall +answer |
Вывод будет:
$ dig ya.ruya.ru. 4162 IN A 93.158.134.203ya.ru. 4162 IN A 213.180.193.3ya.ru. 4162 IN A 87.250.250.203ya.ru. 4162 IN A 93.158.134.3ya.ru. 4162 IN A 87.250.250.3ya.ru. 4162 IN A 77.88.21.3ya.ru. 4162 IN A 213.180.204.3ya.ru. 4162 IN A 87.250.251.3 |
Таким образом мы рассмотрели мизерную часть этой замечательной утилиты, для тех, кто хочет большего, добро пожаловать в man dig 😉
https://greendail.ru/node/474




Comments
So empty here ... leave a comment!