Итак, что такое dig?
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.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)
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: +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 |
3. Запрос 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. |
4. Запрос 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. |
5. Просмотр всех типов 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 |
6. Краткий вывод команды 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. |
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.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. |
10. Изменение параметров по умолчанию для команды 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 |
Таким образом мы рассмотрели мизерную часть этой замечательной утилиты, для тех, кто хочет большего, добро пожаловать в man dig 😉
Отсюда: http://greendail.ru/node/474