Итак, что такое dig?
dig (англ. слово «копать», а формально — сокращение от «domain information groper») — утилита (DNS-клиент), предоставляющая пользователю интерфейс командной строки для обращения к системе DNS. Позволяет задавать различные типы запросов и запрашивать произвольно указываемые сервера. Является аналогом утилиты nslookup.
Утилита dig входит в стандартный комплект DNS сервера BIND.
Начнем,
1. Простой вывод команды dig (для понимания вывода, без доп.параметров )
Когда вы задаете имя домена в команде dig по-умолчанию вы получаете A-запись домена (ip-адрес сайта (домена) который мы запрашивали) как показано на листинге ниже
# dig 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
; (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)
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
Можно сделать проще, существует ключ +noall, который выключает все секции. Таким образом мы используем ключ +noall и добавляем ключ +answer, уменьшая длину команды
# dig ya.ru +noall +answer
3. Запрос MX-записи
Для запроса MX-записи домена мы используем одноименный аргумент командной строки (MX)
# dig ya.ru MX +noall +answer
Этот же запрос можно выполнить с ключом -t (тип)
# dig -t MX ya.ru +noall +answer
4. Запрос NS-записи
По аналогии с предыдущим пунктом, используем аргумент NS
# dig ya.ru NS +noall +answer
Вы также можете использовать ключ -t для указания типа запроса
$#dig -t NS ya.ru +noall +answer
5. Просмотр всех типов DNS-записей
Для этого используется ключ ANY
# dig ya.ru ANY +noall +answer
Также допустим ключ -t
# dig -t ANY ya.ru +noall +answer
6. Краткий вывод команды dig
Допустим чтобы просмотреть только ip-адрес, без лишней информации, используем опцию +short
# dig ya.ru +short
Вы также можете вывести информацию по любому виду информации с ключем +short
Пример:
# dig ya.ru ns +short
7. Просмотр информации об обратной зоне домена (PTR)
Для просмотра обратной зоны необходимо использовать ключ -х
Для примера, мы хотим узнать имя домена по айпи-адресу 77.88.21.3
# dig -x 77.88.21.3 +short
Для вывода полной информации убираем ключ +short
# dig -x 77.88.21.3
8. Использование конкретного DNS-сервера для выполнения запроса
Для использования конкретного DNS-сервераиспользуется запись вида — @dnsserver, где dnsserver это или имя или ip-адрес DNS-сервера
Данный пример мы рассмотрели в п.1
9. Объемный запрос (запрос информации сразу о нескольких доменах)
Для запроса информации о нескольких доменах возможно использование текстовых файлов с перечислением доменов.
Создадим файл names.txt с именами доменов:
# nano names.txt
google.ru
Далее используем ключ -f для чтения из файла:
# dig -f names.txt +noall +answer
Также можно комбинировать тип DNS записи c опцией -f:
# dig -f names.txt MX +noall +answer
Также возможно перечисление доменов непосредственно в командной строке. Для примера узнаем MX-запись для домена ya.ru и NS-запись для домена google.ru:
# dig ya.ru mx +noall +answer google.ru ns +noall +answer
10. Изменение параметров по умолчанию для команды dig
Например вы хотите, чтобы утилита dig по умолчанию выводила только секцию ответа (ANSWER SECTION).
Для этого необходимо внести в файл .digrc необходимые ключи, в нашем случае +noall +answer:
# nano $HOME/.digrc
+noall +answer
Вывод будет:
# dig ya.ru
Таким образом мы рассмотрели мизерную часть этой замечательной утилиты, для тех, кто хочет большего, добро пожаловать в man dig ;)