Запрос данных DNS с помощью dig, whois и ping в Ubuntu

Dig – это сетевой инструмент, позволяющий обращаться к серверам DNS за информацией. Он может быть очень полезным при диагностике проблем с направлением домена; также это отличный способ убедиться в правильной работе конфигураций.

Эта статья охватывает использование dig для проверки настроек доменного имени и выведения данных о том, как интернет видит домен. В ней также рассматриваются другие связанные с dig инструменты, такие как whois и ping.

Примечание: Для тестирования команд данное руководство использует сервер Ubuntu 12.04, но любой современный дистрибутив Linux будет работать таким же образом.

Использование dig

Основной способ использования dig – это указание домена, к которому нужно обратиться с запросом:

dig example.com

Для примера можно протестировать «duckduckgo.com», чтобы увидеть, какую информацию возвращает dig:

; <<>> DiG 9.8.1-P1 <<>> duckduckgo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64399
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;duckduckgo.com.                          IN           A
;; ANSWER SECTION:
...duckduckgo.com.           99           IN           A             107.21.1.61
...duckduckgo.com.           99           IN           A             184.72.106.253
...duckduckgo.com.           99           IN           A             184.72.106.52
...duckduckgo.com.           99           IN           A             184.72.115.86
;; Query time: 33 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Aug 23 14:26:17 2013
;; MSG SIZE  rcvd: 96

Выведено достаточно много информации. Рассмотрим ее по частям.

; <<>> DiG 9.8.1-P1 <<>> duckduckgo.com
;; global options: +cmd

Вышеуказанные строки являются заголовком выведенного запроса. Можно также запустить dig в пакетном режиме (batch), потому надлежащая маркировка результатов имеет большое значение для обеспечения корректного анализа.

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64399
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

Следующая часть предоставляет техническое резюме результатов запроса. Здесь можно видеть, что запрос был успешным, что было получено 4 «ответа», а также использованные флаги.

;; QUESTION SECTION:
;duckduckgo.com.                          IN           A
;; ANSWER SECTION:
duckduckgo.com.           99           IN           A             107.21.1.61
duckduckgo.com.           99           IN           A             184.72.106.253
duckduckgo.com.           99           IN           A             184.72.106.52
duckduckgo.com.           99           IN           A             1

Вышеприведенная часть содержит собственно искомые результаты. Она вновь формулирует запрос, а затем возвращает соответствующие DNS-записи для этого доменного имени.

Как можно видеть, выведены четыре записи «А» для «duckduckgo.com». Записи «А» выводятся по умолчанию. Это показывает  IP-адреса, по которым отвечает доменное имя.

«99» — это TTL (то есть, «time to live») до того, как DNS-сервер перепроверит связь между именем домена и IP-адресом. «IN» означает, что класс записи является стандартным.

;; Query time: 33 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Aug 23 14:26:17 2013
;; MSG SIZE  rcvd: 96

Эти строки просто предоставляют некоторые статистические данные о фактических результатах запроса. Время запроса может указать на проблему с DNS-сервером.

Тестирование DNS-записей с помощью dig

Если доменное имя уже установлено, можно использовать dig для запроса информации.

Чтобы проверить, правильно ли установлены записи А, введите:

dig your_domain_name.com

При необходимости проверить, правильно ли направлены почтовые серверы, введите:

dig your_domain_name.com MX

В целом, тип записи, поиск которой нужно провести, можно использовать после доменного имени в запросе.

Чтобы получить информацию обо всех записях, введите:

dig your_domain_name.com ANY

Это отобразит все записи, соответствующие базовому домену, а именно записи SOA, NS, A и MX.

Примечание: В связи с особенностями работы TTL и DNS иногда требуется некоторое время, чтобы внесенные изменения были переданы на сервер доменных имён. Если созданная запись не выводится, подождите, пока TTL достигнет 0, чтобы проверить, появилась ли данная запись.

Чтобы отобразить только фактический IP, на который направлен домен, введите:

dig your_domain_name.com +short

Использование команды host

Команда host является альтернативой команде dig. Данная команда действует подобным dig образом, а также использует многие её опции.

Базовый синтаксис:

host domain_name_or_IP_address

Обратите внимание: не нужно использовать флаг, чтобы изменить функциональность с обычного поиска DNS на обратный поиск.

Как и с командой dig, можно указать тип нужной записи. Для этого используется флаг «-t».

Чтобы вернуть записи «mх» Google, наберите:

host -t mx google.com
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.

Так же легко можно получить и другие типы записей.

Все записи можно отобразить при помощи флага -а. Данное руководство не предоставляет выведенного результата, так как он достаточно длинный.

host -a google.com

Чтобы получить дополнительную информацию о хосте, можно вывести подробный результат с помощью флага «-v».

host -v google.com

Это действие предоставляет подробную информацию.

Другие инструменты для опроса серверов имен DNS

ping

Ping является простым способом проверить, правильно ли распознается доменное имя.

Данная команда очень проста в использовании:

ping your_domain_name.com
PING your_domain_name.com (192.241.160.34) 56(84) bytes of data.
64 bytes from 192.241.160.34: icmp_req=1 ttl=64 time=0.026 ms
64 bytes from 192.241.160.34: icmp_req=2 ttl=64 time=0.038 ms
64 bytes from 192.241.160.34: icmp_req=3 ttl=64 time=0.037 ms
. . .

Она будет продолжать выводить информацию, пока не будут нажаты «CTRL-C».

Можно также сказать программному обеспечению использовать ping только определенное количество раз. Чтобы использовать ping три раза:

ping -c 3 your_domain_name.com
PING your_domain_name.com (192.241.160.34) 56(84) bytes of data.
64 bytes from 192.241.160.34: icmp_req=1 ttl=64 time=0.027 ms
64 bytes from 192.241.160.34: icmp_req=2 ttl=64 time=0.059 ms
64 bytes from 192.241.160.34: icmp_req=3 ttl=64 time=0.042 ms
--- your_domain_name.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.027/0.042/0.059/0.015 ms

Данная команда может быть использована для того, чтобы проверить, относится ли доменное имя к назначенному IP-адресу.

whois

Протокол whois выводит информацию о зарегистрированных доменных именах, включая серверы имен, с которыми они настроены работать.

В то время как большая часть информации касается регистрации домена, этот протокол может быть полезен для того, чтобы убедиться, что серверы имен возвращаются правильно.

Запустите следующую команду:

whois your_domain_name.com

Это выведет длинный список информации. Форматирование будет меняться на основе Whois-сервера, содержащего информацию.

В нижней части можно увидеть серверы домена, которые обеспечивают пересылку домена на правильные IP-адреса.

Читайте также: