С помощью команды dig Вы можете запросить информацию о доменном имени у DNS-серверов. В этой статье описано 10 примеров использования команды dig.
1. Простой вывод команды dig
По-умолчанию при обычном запросе выводятся А записи, как показано ниже в выводе
$ dig google.com ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35727 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 73 IN A 172.217.16.142 ;; Query time: 16 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Jan 05 12:00:54 +03 2020 ;; MSG SIZE rcvd: 55
Команда dig содержит следующие секции:
Заголовок (Header): Здесь отображается версия dig, глобальные параметры, используемые командой dig, и несколько дополнительных сведений о заголовке.
Секция запроса (QUESTION SECTION): Отображает вопрос, который он задал DNS. То есть это Ваш запрос.
Секция ответа (ANSWER SECTION): Отображает ответ, который он получает от DNS. A записи в нашем случае.
Секция полномочий (AUTHORITY SECTION): Здесь отображается сервер DNS, который имеет полномочия отвечать на этот запрос. Отображает доступные NS серверы для google.com в нашем случае.
Секции дополнительные (ADDITIONAL SECTION): Здесь отображается IP адреса серверов имен, перечисленных в разделе полномочия.
В секции Статистика (Stats section) внизу отображается немного информации о команде dig включая сколько времени потребовалось для выполнения этого запроса.
2. Вывести только ANSWER SECTION в dig
Мы можем отключать разные секции этими параметрами:
+nocomments – отключить комментарии
+noauthority – отключить AUTHORITY SECTION
+noadditional – отключить ADDITIONAL SECTION
+nostats – отключить Stats section
+noanswer – отключить ANSWER SECTION (но нам это не надо, конечно)
Итак выведем только ANSWER SECTION:
$ dig google.com +nocomments +noquestion +noauthority +noadditional +nostats ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com +nocomments +noquestion +noauthority +noadditional +nostats ;; global options: +cmd google.com. 156 IN A 172.217.16.142
Вместо отключения каждой секции мы можем отключить все с помощью +noall и включить только секцию ответа +answer
$ dig google.com +noall +answer ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com +noall +answer ;; global options: +cmd google.com. 3 IN A 172.217.16.142
3. Запрос MX записей с помощью dig
Для запроса MX записей сделаем следующее:
$ dig google.com MX +noall +answer ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com MX +noall +answer ;; global options: +cmd google.com. 16 IN MX 40 alt3.aspmx.l.google.com. google.com. 16 IN MX 50 alt4.aspmx.l.google.com. google.com. 16 IN MX 10 aspmx.l.google.com. google.com. 16 IN MX 20 alt1.aspmx.l.google.com. google.com. 16 IN MX 30 alt2.aspmx.l.google.com.
Или можно использовать -t
$ dig -t MX google.com +noall +answer
4. Запрос NS записей в dig
Чтобы узнать NS записи используйте эту команду:
$ dig google.com NS +noall +answer ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com NS +noall +answer ;; global options: +cmd google.com. 7595 IN NS ns1.google.com. google.com. 7595 IN NS ns4.google.com. google.com. 7595 IN NS ns2.google.com. google.com. 7595 IN NS ns3.google.com.
Можно использовать опцию -t
$ dig -t NS google.com +noall +answer
5. Показать все DNS записи с помощью dig
Чтобы узнать все записи (A, MX, NS, и т.п.), ипользуйте ANY
$ dig google.com ANY +noall +answer ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com ANY +noall +answer ;; global options: +cmd google.com. 343 IN MX 50 alt4.aspmx.l.google.com. google.com. 343 IN MX 20 alt1.aspmx.l.google.com. google.com. 343 IN MX 40 alt3.aspmx.l.google.com. google.com. 343 IN MX 10 aspmx.l.google.com. google.com. 343 IN MX 30 alt2.aspmx.l.google.com. google.com. 259 IN AAAA 2a00:1450:4001:808::200e google.com. 140 IN A 172.217.16.142 google.com. 7423 IN NS ns1.google.com. google.com. 7423 IN NS ns4.google.com. google.com. 7423 IN NS ns2.google.com. google.com. 7423 IN NS ns3.google.com.
или -t ANY
$ dig -t ANY google.com +noall +answer
6. Вывод в сокращенном виде в dig
Просто используем параметр +short и получаем только А запись
$ dig google.com +short 172.217.20.14
Получим NS записи в сокращенном виде
$ dig google.com ns +short ns3.google.com. ns2.google.com. ns4.google.com. ns1.google.com.
7. Обратная запись DNS (Reverse Look-up) с помощью dig
Используем параметр -x
$ dig -x 172.217.20.14 +short bud02s28-in-f14.1e100.net. ham02s13-in-f14.1e100.net.
Получим полный вывод, если уберем опцию +short
$ dig -x 209.132.183.81 ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> -x 172.217.20.14 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15962 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;14.20.217.172.in-addr.arpa. IN PTR ;; ANSWER SECTION: 14.20.217.172.in-addr.arpa. 7141 IN PTR ham02s13-in-f14.1e100.net. 14.20.217.172.in-addr.arpa. 7141 IN PTR bud02s28-in-f14.1e100.net. ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Jan 05 14:17:07 +03 2020 ;; MSG SIZE rcvd: 124
8. Как указать поределенный DNS сервер в dig
По-умолчанию dig используем DNS сервера указанные в Вашем файле /etc/resolv.conf
Используем параметр @сервер, если хотим указать другой сервер:
$ dig @8.8.8.8 google.com ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> @8.8.8.8 google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38493 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 58 IN A 172.217.16.142 ;; AUTHORITY SECTION: google.com. 6721 IN NS ns2.google.com. google.com. 6721 IN NS ns3.google.com. google.com. 6721 IN NS ns1.google.com. google.com. 6721 IN NS ns4.google.com. ;; Query time: 7 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Sun Jan 05 14:20:24 +03 2020 ;; MSG SIZE rcvd: 116
9. Как сделать массовые DNS запросы с помощью dig
Сначала нам нужно создать файл с доменными именами (например), которые указаны по одному в строку
$ vim names.txt google.com yandex.ru yahoo.com
Теперь отправим команду dig -f имя_файла и посмотрим что получится:
$ dig -f names.txt +noall +answer google.com. 129 IN A 172.217.16.142 yandex.ru. 216 IN A 77.88.55.88 yandex.ru. 216 IN A 5.255.255.88 yandex.ru. 216 IN A 77.88.55.50 yandex.ru. 216 IN A 5.255.255.5 yahoo.com. 771 IN A 98.138.219.232 yahoo.com. 771 IN A 72.30.35.9 yahoo.com. 771 IN A 98.137.246.8 yahoo.com. 771 IN A 98.137.246.7 yahoo.com. 771 IN A 98.138.219.231 yahoo.com. 771 IN A 72.30.35.10
Как видим, мы получили А записи всех указанных доменов. Так же можно и с другими записями. Например MX:
$ dig -f names.txt MX +noall +answer google.com. 599 IN MX 20 alt1.aspmx.l.google.com. google.com. 599 IN MX 50 alt4.aspmx.l.google.com. google.com. 599 IN MX 40 alt3.aspmx.l.google.com. google.com. 599 IN MX 10 aspmx.l.google.com. google.com. 599 IN MX 30 alt2.aspmx.l.google.com. yandex.ru. 221 IN MX 10 mx.yandex.ru. yahoo.com. 987 IN MX 1 mta5.am0.yahoodns.net. yahoo.com. 987 IN MX 1 mta6.am0.yahoodns.net. yahoo.com. 987 IN MX 1 mta7.am0.yahoodns.net.
Мы можем так же одной командой обрабатывать несколько имен:
$ dig google.com mx +noall +answer yandex.ru ns +noall +answer ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com mx +noall +answer yandex.ru ns +noall +answer ;; global options: +cmd google.com. 513 IN MX 30 alt2.aspmx.l.google.com. google.com. 513 IN MX 10 aspmx.l.google.com. google.com. 513 IN MX 40 alt3.aspmx.l.google.com. google.com. 513 IN MX 50 alt4.aspmx.l.google.com. google.com. 513 IN MX 20 alt1.aspmx.l.google.com. yandex.ru. 345600 IN NS ns1.yandex.ru. yandex.ru. 345600 IN NS ns2.yandex.ru. yandex.ru. 345600 IN NS ns9.z5h64q92x9.net.
10. Использование файла $HOME/.digrc для указания дефолтных настроек dig
Если, например, Вы всегда используете параметры “+noall +answer”, можете просто прописать их в файл .digrc и больше никогда не вводить:
$ cat $HOME/.digrc +noall +answer
Теперь они всегда будут использоваться во всех командах
$ dig google.com ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com +noall +answer ;; global options: +cmd google.com. 3 IN A 172.217.16.142