The short answer is that it’s usually not possible, unless you control the domain.
Option 1: ANY query
When you query for ANY, you will get a list of all records at that level but not below.
# try this
dig google.com any
This may return A records, TXT records, NS records, MX records, etc if the domain name is exactly «google.com». However, it will not return child records (e.g., www.google.com). More precisely, you MAY get these records if they exist.
The name server does not have to return these records if it chooses not to do so (for example, to reduce the size of the response). Most DNS servers reject ANY queries.
Option 2: AXFR query
An AXFR is a zone transfer, and is likely what you want. However, these are typically restricted and not available unless you control the zone. You’ll usually conduct a zone transfer directly from the authoritative server (the @ns1.google.com below) and often from a name server that may not be published (a stealth name server).
# This will return "Transfer failed"
dig @ns1.google.com google.com axfr
If you have control of the zone, you can set it up to get transfers that are protected with a TSIG key. This is a shared secret the client can send to the server to authorize the transfer.
Option 3: Scrape with a script
Another option is to scrape all DNS records with a script. You’d have to iterate through all the DNS record types, and also through common subdomains, depending on your needs.
Option 4: Use specialized tooling
There are some online tools that enumerate subdomains, and online tools that list all DNS records for a DNS name. Note that subdomain enumeration is usually not exhaustive.
При внесении изменений в записи NS-серверов для вашего домена, полезно знать как эти данные подхватывают DNS серверы по всему миру, в том числе и у вашего провайдера. В этой статье я опишу как быстро и просто это сделать с помощью встроенных средств операционной системы Windows или он-лайн в окне браузера.
Как проверить DNS записи доменного имени в Windows
В операционной системе Windows есть полезная утилита nslookup, которая позволит узнать значения необходимых вам DNS записей. Для ее использования нам понадобится консоль. Вызвать ее в Windows 10 можно сочетанием клавиш [Win]+[R].
Далее набрать команду cmd и нажать клавишу [OK]
Использование nslookup в Windows для проверки записей для доменного имени
По-умолчанию, если выполнить команду nslookup domainname.tld
(где domainname.tld — доменное имя) вы получите информацию о А-записи запрашиваемого доменного имени через DNS сервер по-умолчанию (обычно это ваш шлюз, роутер). Например:
>nslookup yandex.ru Сервер: 192.168.204.2 Address: 192.168.204.2 Не заслуживающий доверия ответ: Имя: yandex.ru Addresses:77.88.55.50 5.255.255.80 5.255.255.88 77.88.55.55
Чтобы посмотреть записи через другой DNS сервер, то есть увидеть какие значения записей для домена хранятся на другом DNS сервере, а они могут быть иными, выполните следующую команду: nslookup domainname.tld dns-server
(где domainname.tld — доменное имя, а dns-server адрес стороннего DNS сервера, например 1.1.1.1 от CloudFlare).
>nslookup yandex.ru 1.1.1.1 Сервер: one.one.one.one Address: 1.1.1.1 Не заслуживающий доверия ответ: Имя: yandex.ru Addresses:77.88.55.55 5.255.255.88 77.88.55.50 5.255.255.80
Для просмотра других записей домена нужно команде nslookup добавить опцию -type=YYY
, где YYY — тип проверяемой записи. Например для просмотра MX-записи используйте команду nslookup -type=mx domainname.tld
.
>nslookup -type=mx yandex.ru Сервер: 192.168.204.2 Address: 192.168.204.2 Не заслуживающий доверия ответ: yandex.ru MX preference = 10, mail exchanger = mx.yandex.ru mx.yandex.ru internet address = 77.88.21.249
Аналогично для других записей, а так же через альтернативные DNS.
Описание ресурсных записей для домена
Для того, чтобы настроить на своем домене сайт, почту или другие сервисы, потребуется в зоне домена указать соответствующие сервисам ресурсные записи.
Настройка ресурсных записей выполняется либо хостинг-провайдером автоматически, при создании сайта или почты в панели управления хостингом, либо администратором домена вручную с помощью специального редактора.
Базовые типы записей, с которыми работают администраторы и владельцы сайтов:
- NS-запись — главный тип, определяющий адреса DNS-серверов, обслуживающих домен.
- A-запись — привязывает доменное имя на один IP-адрес, используя протокол IPv4. Возможно использование более одного IP-адреса. Тогда добавляют вторую A-запись c другим IP-адресом. Если есть необходимость указания нескольких имен для одного IP, как правило, используют CNAME-запись для формирования псевдонимов (алиасов).
- AAAA — тип записи, аналогичный предыдущей, но с IPv6-адресами.
- CNAME — указывает, что данный домен выполняет функции псевдонима (алиаса) другого домена. Для псевдонима записи других типов не вносятся.
- MX-запись — указывает имя сервера, ответственного за прием почты для домена. В зоне домена может быть несколько MX-записей с разными приоритетами.
- TXT-запись — используется для хранения произвольной информации в DNS. Запись может использоваться для подтверждения владения доменом в р различных сервисах.
- SOA-запись — содержит служебную информацию: доменное имя, время последнего обновления зоны домена, адрес администратора зоны, настройки временных параметров и другую информацию.
Корректность заполнения ресурсных записей важна для успешного делегирования домена и дальнейшего функционирования службы name-серверов.
Он-лайн проверка записей для домена
Он-лайн проверка DNS записей имеет преимущество в том, что вы можете сделать ее с любого устройства с браузеров и доступом в Интернет.
Проверка записей DNS с помощью Набора инструментов администратора от Google
Набор инструментов для администратора от Google содержит утилиту Dig, с помощью которой можно проверить все интересующие вас записи для домена.
Особенность данного сервиса в том, что проверка идет только через DNS серверы Google.
Он-лайн проверка DNS записей от регистратора REG.RU
Регистратор REG.RU предлагает свой сервис DIG для просмотра записей для домена.
У этого сервиса в отличии от Google есть возможность выбрать DNS сервер, чтобы посмотреть записи для домена.
Как проверить NS записи на всех DNS серверов сразу
Если вы хотите проверить записи для домена на всех (на большинстве популярных) DNS серверах, то можно воспользоваться сайтом https://www.digwebinterface.com/. Который грубо говоря представляет собой WEB оболочку для утилиты DIG.
Очень удобно прослеживать как ваши изменения для доменных записей реплицируются по DNS серверам мира.
Дополнительные сервисы для проверки
Я привел только самые удобные с моей стороны сервисы по проверки NS записей для доменного имени. Но есть и другие:
- https://2ip.ru/dig/
- https://dnschecker.org/
Возможно вам они понравятся даже больше.
Почему домены начинают работать не сразу
DNS-серверы интернет-провайдеров обновляются через определенные промежутки времени. Обычно от часа до суток. Если вы только что прописали или сменили DNS-серверы, то готовьтесь к тому, что внесенные изменения вы и посетители вашего сайта увидят через 24 часа. А полная синхронизация всех DNS серверов в мире может растянуться на трое суток.
Так же на скорость обновления значений влияет параметр TTL каждой ресурсной записи.
Благодарности
При написании статьи были использованы следующие ресурсы:
- https://www.nic.ru/help/chto-takoe-name-servery-ns_8578.html
- https://help.reg.ru/hc/ru/articles/4408047119761-Что-такое-DNS-простыми-словами
Dig (Domain Information Groper) — это мощный инструмент командной строки для запроса серверов имен DNS.
Команда dig
позволяет запрашивать информацию о различных записях DNS, включая адреса хостов, почтовые обмены и серверы имен. Это наиболее часто используемый системными администраторами инструмент для устранения проблем с DNS из-за его гибкости и простоты использования.
В этом руководстве объясняется, как использовать утилиту dig
на практических примерах и подробных объяснениях наиболее распространенных вариантов dig
.
Установка dig
Чтобы проверить, доступна ли команда dig
в вашей системе, введите:
dig -v
Результат должен выглядеть примерно так:
DiG 9.11.3-1ubuntu1.1-Ubuntu
Если dig
отсутствует в вашей системе, приведенная выше команда напечатает «dig: команда не найдена». Инструмент dig
можно установить с помощью диспетчера пакетов дистрибутива.
Установите dig
на Ubuntu и Debian
sudo apt update && sudo apt install dnsutils
Установите dig
на CentOS и Fedora
sudo yum install bind-utils
Установить dig
на Arch Linux
sudo pacman -S bind-tools
Понимание dig
вывода
В простейшей форме, когда используется для запроса одного хоста (домена) без каких-либо дополнительных параметров, команда dig
довольно многословна.
В следующем примере мы работаем в домене linux.org
:
dig linux.org
Результат должен выглядеть примерно так:
Давайте разберемся по разделам и объясним вывод команды dig
:
-
В первой строке вывода выводится установленная версия
dig
и запрашиваемое доменное имя. Вторая строка показывает глобальные параметры (по умолчанию только cmd).; <<>> DiG 9.13.3 <<>> linux.org ;; global options: +cmd
Если вы не хотите, чтобы эти строки включались в вывод, используйте параметр
+nocmd
. Эта опция должна быть самой первой после командыdig
. -
В следующем разделе приведены технические сведения об ответе, полученном от запрашиваемого центра (DNS-сервера). В заголовке отображается код операции (действие, выполняемое командой
dig
) и статус действия. В этом примере статусNOERROR
, что означает, что запрошенный орган обслужил запрос без каких-либо проблем.;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37159 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5
Этот раздел можно удалить с помощью параметра
+nocomments
, который также отключает заголовки некоторых других разделов. -
Псевдо-раздел «OPT» отображается только в более новых версиях утилиты
dig
. Вы можете узнать больше о механизмах расширения для DNS (EDNS)здесь .;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096
Чтобы исключить этот раздел из вывода, используйте параметр
+noedns
. -
В разделе «ВОПРОС»
dig
показывает запрос (вопрос). По умолчаниюdig
запрашивает запись A.;; QUESTION SECTION: ;linux.org. IN A
Вы можете отключить этот раздел, используя опцию
+noquestion
. -
Раздел «ОТВЕТ» дает нам ответ на наш вопрос. Как мы уже упоминали, по умолчанию
dig
запрашивает запись A. Здесь мы видим, что доменlinux.org
указывает на IP-адрес104.18.59.123
.;; ANSWER SECTION: linux.org. 300 IN A 104.18.59.123 linux.org. 300 IN A 104.18.58.123
Обычно вы не хотите отключать ответ, но вы можете удалить этот раздел из вывода, используя параметр
+noanswer
. -
Раздел «АВТОРИТЕТ» сообщает нам, какие серверы являются полномочными для ответа на запросы DNS о запрошенном домене.
;; AUTHORITY SECTION: linux.org. 86379 IN NS lia.ns.cloudflare.com. linux.org. 86379 IN NS mark.ns.cloudflare.com.
Вы можете отключить этот раздел вывода, используя параметр
+noauthority
. -
Раздел «ДОПОЛНИТЕЛЬНО» предоставляет нам информацию об IP-адресах авторитетных DNS-серверов, указанных в разделе полномочий.
;; ADDITIONAL SECTION: lia.ns.cloudflare.com. 84354 IN A 173.245.58.185 lia.ns.cloudflare.com. 170762 IN AAAA 2400:cb00:2049:1::adf5:3ab9 mark.ns.cloudflare.com. 170734 IN A 173.245.59.130 mark.ns.cloudflare.com. 170734 IN AAAA 2400:cb00:2049:1::adf5:3b82
Параметр
+noadditional
отключает дополнительный раздел ответа. -
Последний раздел вывода
dig
включает статистику запроса.;; Query time: 58 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Oct 12 11:46:46 CEST 2018 ;; MSG SIZE rcvd: 212
Вы можете отключить эту часть с
+nostats
опции+nostats
.
Печать только ответа
Как правило, вы хотите получить только краткий ответ на свой запрос о dig
.
1. Получите короткий ответ
Чтобы получить краткий ответ на свой вопрос, используйте опцию +short
:
dig linux.org +short
104.18.59.123
104.18.58.123
Вывод будет включать только IP-адреса записи A.
2. Получите подробный ответ
Чтобы получить более подробный ответ, отключите все результаты с помощью параметров +noall
, а затем включите только раздел ответов с параметром +answer
.
dig linux.org +noall +answer
; <<>> DiG 9.13.3 <<>> linux.org +noall +answer
;; global options: +cmd
linux.org. 67 IN A 104.18.58.123
linux.org. 67 IN A 104.18.59.123
Сервер имен для конкретного запроса
По умолчанию, если сервер имен не указан, dig
использует серверы, перечисленные в файле /etc/resolv.conf
.
Чтобы указать сервер имен, для которого будет выполняться запрос, используйте символ @
(at), за которым следует IP-адрес или имя хоста сервера имен.
Например, чтобы запросить у сервера имен Google (8.8.8.8) информацию о домене linux.org
вы должны использовать:
dig linux.org @8.8.8.8
; <<>> DiG 9.13.3 <<>> linux.org @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39110
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;linux.org. IN A
;; ANSWER SECTION:
linux.org. 299 IN A 104.18.58.123
linux.org. 299 IN A 104.18.59.123
;; Query time: 54 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Oct 12 14:28:01 CEST 2018
;; MSG SIZE rcvd: 70
Запрос типа записи
Dig позволяет выполнять любой допустимый DNS-запрос, добавляя тип записи в конец запроса. В следующем разделе мы покажем вам примеры того, как искать наиболее распространенные записи, такие как A (IP-адрес), CNAME (каноническое имя), TXT (текстовая запись), MX (почтовый обменник) и NS ( серверов имен).
1. Запрос записей A
Чтобы получить список всех адресов для доменного имени, используйте параметр a
:
dig +nocmd google.com a +noall +answer
google.com. 128 IN A 216.58.206.206
Как вы уже знаете, если тип записи DNS не указан, dig
запросит запись A. Вы также можете запросить запись A, не указывая параметр a
.
2. Запрос записей CNAME
Чтобы найти псевдоним домена, используйте опцию cname
:
dig +nocmd mail.google.com cname +noall +answer
mail.google.com. 553482 IN CNAME googlemail.l.google.com.
3. Запрос записей TXT
Используйте параметр txt
чтобы получить все записи TXT для определенного домена:
dig +nocmd google.com txt +noall +answer
google.com. 300 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com. 300 IN TXT "v=spf1 include:_spf.google.com ~all"
google.com. 300 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
4. Запрос записей MX.
Чтобы получить список всех почтовых серверов для определенного домена, используйте параметр mx
:
dig +nocmd google.com mx +noall +answer
google.com. 494 IN MX 30 alt2.aspmx.l.google.com.
google.com. 494 IN MX 10 aspmx.l.google.com.
google.com. 494 IN MX 40 alt3.aspmx.l.google.com.
google.com. 494 IN MX 50 alt4.aspmx.l.google.com.
google.com. 494 IN MX 20 alt1.aspmx.l.google.com.
5. Запрос NS-записей
Чтобы найти авторитетные серверы имен для нашего конкретного домена, используйте параметр ns
:
dig +nocmd google.com ns +noall +answer
google.com. 84527 IN NS ns1.google.com.
google.com. 84527 IN NS ns2.google.com.
google.com. 84527 IN NS ns4.google.com.
google.com. 84527 IN NS ns3.google.com.
6. Запрос всех записей
Используйте параметр any
чтобы получить список всех записей DNS для определенного домена:
dig +nocmd google.com any +noall +answer
google.com. 299 IN A 216.58.212.14
google.com. 299 IN AAAA 2a00:1450:4017:804::200e
google.com. 21599 IN NS ns2.google.com.
google.com. 21599 IN NS ns1.google.com.
google.com. 599 IN MX 30 alt2.aspmx.l.google.com.
google.com. 21599 IN NS ns4.google.com.
google.com. 599 IN MX 50 alt4.aspmx.l.google.com.
google.com. 599 IN MX 20 alt1.aspmx.l.google.com.
google.com. 299 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com. 21599 IN CAA 0 issue "pki.goog"
google.com. 599 IN MX 40 alt3.aspmx.l.google.com.
google.com. 3599 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com. 21599 IN NS ns3.google.com.
google.com. 599 IN MX 10 aspmx.l.google.com.
google.com. 3599 IN TXT "v=spf1 include:_spf.google.com ~all"
google.com. 59 IN SOA ns1.google.com. dns-admin.google.com. 216967258 900 900 1800 60
Обратный поиск в DNS
Чтобы запросить имя хоста, связанное с определенным IP-адресом, используйте параметр -x
.
Например, чтобы выполнить обратный поиск по 208.118.235.148
, введите:
dig -x 208.118.235.148 +noall +answer
Как видно из выходных данных ниже, IP-адрес 208.118.235.148
связан с именем хоста wildebeest.gnu.org
.
; <<>> DiG 9.13.3 <<>> -x 208.118.235.148 +noall +answer
;; global options: +cmd
148.235.118.208.in-addr.arpa. 245 IN PTR wildebeest.gnu.org.
Массовые запросы
Если вы хотите запросить большое количество доменов, вы можете добавить их в файл (по одному домену в строке) и использовать параметр -f
за которым следует имя файла.
В следующем примере мы запрашиваем домены, перечисленные в файле domains.txt
.
domains.txt
lxer.com
linuxtoday.com
tuxmachines.org
dig -f domains.txt +short
108.166.170.171
70.42.23.121
204.68.122.43
Файл .digrc
Поведение команды dig
можно контролировать, задав для каждого пользователя параметры в файле ${HOME}/.digrc
.
Если файл .digrc
присутствует в домашнем каталоге пользователя, указанные в нем параметры применяются перед аргументами командной строки.
Например, если вы хотите отобразить только раздел ответов, откройте текстовый редактор и создайте следующий файл ~/.digrc
:
~/.digrc
Выводы
dig
— это инструмент командной строки для запроса информации DNS и устранения проблем, связанных с DNS.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Команда nslookup — инструмент сетевого администрирования для запросов в доменной системе имен (DNS) с целью получения доменного имени, IP-адреса или другой информации из записей DNS.
Кроме того, эта команда используется для поиска и устранения проблем с DNS. В данном руководстве мы рассмотрим наиболее типичные примеры ее применения.
Команда nslookup может работать в интерактивном и неинтерактивном режимах. Интерактивный режим позволяет пользователю в режиме диалога отправлять DNS-серверу запросы о различных узлах и доменах. Неинтерактивный режим позволяет отправить один запрос об одном узле или домене.
Содержание
- Синтаксис команды nslookup
- Получение IP-адреса домена
- Авторитативный и неавторитативный ответы
- Запрос записи MX
- Запрос записи NS
- Запрос записи SOA
- Просмотр всех имеющихся записей DNS
- Обратный поиск DNS
- Использование конкретного DNS-сервера
- Изменение номера порта
- Изменение интервала ожидания ответа
- Режим отладки
- Интерактивный режим
- Заключение
nslookup [ОПЦИИ] [ИМЯ/АДРЕС] [СЕРВЕР ИМЕН]
Наиболее распространенные опции и типы аргументов мы рассмотрим ниже в соответствующих примерах.
Получение IP-адреса домена
Если указать в качестве аргумента команды nslookup доменное имя, она возвращает его «запись A» (A — address, IP-адрес).
$ nslookup yandex.ru
Здесь поле Server означает IP-адрес DNS-сервера, а затем выводится информация об IP-адресе домена «yandex.ru».
Авторитативный и неавторитативный ответы
В приведенном результате присутствует фраза «Non- Authoritative Answer» (неавторитативный ответ).
Авторитативным считается ответ от DNS-сервера, на котором есть полная информация о зоне домена. Во многих случаях на DNS-серверах такой информации нет, они хранят кэш с результатами прошлых запросов, на которые был получен авторитативный ответ. Когда такой сервер получает запрос, он осуществляет поиск в файле кэша и при наличии необходимых данных отправляет их как неавторитативный ответ, как в рассматриваемых нами примерах.
Запрос записи MX
Запись MX (Mail eXchange, обмен почтой) хранит соответствие доменного имени почтовому серверу этого домена. Например, для redhat.com в этих записях содержатся почтовые серверы домена, через которые должна отправляться вся электронная почта на адреса «@redhat.com». Получить запись MX можно при помощи опции -query=mx:
$ nslookup -query=mx redhat.com
В рассмотренном выше примере для домена «redhat.com» есть 2 записи MX. Число рядом с именем сервера (5, 10) означает его приоритет. Чем меньше число, тем выше приоритет. То есть при отправке письма на адрес «@redhat.com» сначала будет использоваться сервер mx1.redhat.com, а если он недоступен — mx2.redhat.com.
Запрос записи NS
Запись NS (Name Server, сервер имен) содержит соответствие доменного имени DNS-серверу, авторитативному для заданного домена. Ее можно получить при помощи опции -query=ns:
$ nslookup -query=ns yandex.ru
Запрос записи SOA
Запись SOA (Start of Authority, начальная запись зоны) содержит информацию о зоне домена, адрес его администратора, серийный номер и т.д. Ее можно получить при помощи опции -query=soa:
$ nslookup -query=soa yandex.ru
origin — имя первичного сервера зоны
mail addr – адрес администратора домена (noc@redhat.com, так как символ @ в описании зоны имеет собственное значение, в данном поле он заменен на точку)
serial – серийный номер файла зоны, используется для учета изменений. Здесь может быть любое целое число, но стандартный формат — «ГГГГММДДНН», то есть сначала указывается дата, а НН (в данном случае 01) увеличивается в случае нескольких обновлений в день
refresh – период времени (в секундах), через который вторичный DNS-сервер отправит запрос первичному, чтобы проверить, поменялся ли серийный номер. В случае изменения будет сделан новый запрос для получения информации о зоне
retry – указывает интервал для повторного соединения с первичным DNS-сервером, если он по каким-то причинам не смог ответить на запрос
expire – указывает время хранения кэша вторичным DNS-сервером, по истечении которого он будет считаться устаревшим
minimum – минимальное время хранения кэша вторичным DNS-сервером до повторного запроса
Просмотр всех имеющихся записей DNS
При помощи опции -query=any мы можем просмотреть все записи DNS, которые у нас есть для заданного доменного имени:
$ nslookup -type=any google.com
Обратный поиск DNS
Если вместо имени указать в качестве аргумента IP-адрес, будет выполнен обратный поиск DNS:
$ nslookup 5.255.255.70
Использование конкретного DNS-сервера
Для разрешения доменного имени можно использовать конкретный сервер имен (в данном случае ns1.redhat.com):
$ nslookup redhat.com ns1.redhat.com
Обратите внимание, что в результате отсутствует фраза «Non-authoritative answer», так как ns1.redhat.com обладает всей информацией о зоне для redhat.com.
Изменение номера порта
По умолчанию DNS-серверы используют порт 53, но при необходимости можно указать другой номер порта посредством опции -port:
$ nslookup port 56 yandex.ru
Изменение интервала ожидания ответа
Интервал ожидания ответа по умолчанию можно изменить, указав желаемое значение в секундах с опцией -timeout:
$ nslookup -timeout=10 google.com
Режим отладки
При помощи опции -debug вы можете включить режим отладки:
$ nslookup -debug redhat.com
В режиме отладки при поиске выводится информация о пакетах.
Интерактивный режим
Для входа в интерактивный режим запустите команду nslookup без опций. Далее можно вводить необходимые имена или адреса, а также устанавливать парметры при помощи команды set, например, следующие команды интерактивного режима:
$ nslookup
возвращают результат, аналогичный команде
$ nslookup -query=soa yandex.ru
Конечно, при поиске записей для одного имени использовать интерактивный режим бессмысленно. Но при необходимости работы с большим количеством записей он очень удобен, так как позволяет работать в режиме диалога.
Заключение
Мы рассмотрели основы работы с командой nslookup, а также основные типы записей DNS. Для более подробной информации о команде и ее опциях можно обратиться к соответствующей man-странице.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
С помощью команды dig Вы можете запросить информацию о доменном имени у DNS-серверов. В этой статье описано 10 примеров использования команды 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