В мире системного администрирования и DevOps работа с DNS-записями является рутинной задачей. Для выполнения таких операций существуют различные инструменты, однако две утилиты выделяются среди остальных: host и dig. В данной статье мы детально рассмотрим использование этих утилит, разберём их ключевые отличия и приведём примеры применения.

Утилита host

host — это простая и удобная программа для выполнения запросов к DNS-серверам. Она позволяет оперативно получать данные о доменных именах, включая IP-адреса, MX-записи, TXT-записи и прочие типы записей. Важной особенностью host является возврат кода завершения 1 в случае невозможности разрешения записи. Это делает её полезным инструментом для автоматизации и написания скриптов, когда критически важно знать успешность выполнения запроса.

Синтаксис команды host

$ host -t <тип_записи> <доменное_имя> <DNS_сервер>
  • -t <тип_записи> — указывает тип DNS-записи, который требуется получить (например, A, MX, TXT, CNAME и др.);
  • <доменное_имя> — доменное имя, для которого выполняется запрос;
  • <DNS_сервер> — необязательный параметр, определяющий конкретный DNS-сервер для обращения. Если этот параметр не задан, используется системный DNS-сервер.

Примеры использования host

Запрашивание A-записи (IPv4-адрес):

$ host -t A example.com
example.com has address 93.184.216.34

Этот пример демонстрирует получение IPv4-адреса для доменного имени example.com.

Запрос MX-записи (почтового сервера):

$ host -t MX example.com
example.com mail is handled by 0 .

Здесь возвращается информация о почтовом сервере для домена example.com.

Запрос несуществующей записи:

$ host -t A nonexistent.example.com
Host nonexistent.example.com not found: 3(NXDOMAIN)

В данном случае команда возвращает код завершения 1, поскольку искомая запись отсутствует.

Использование host в скриптах

Благодаря возврату кода завершения 1 при неуспешном запросе, host идеально подходит для использования в скриптах для проверки доступности доменов:

if host -t A example.com &> /dev/null; then
    echo "Домен example.com резолвится."
else
    echo "Домен example.com не резолвится."
fi

Утилита dig

dig (Domain Information Groper) — это более функциональный и гибкий инструмент для работы с DNS. Он обеспечивает детальную информацию о выполненных DNS-запросах и всегда возвращает код завершения 0, независимо от результата запроса. Это делает его менее удобным для автоматизации, но идеальным вариантом для диагностических целей и углублённого анализа.

Синтаксис команды dig

$ dig @<DNS_сервер> <доменное_имя> <тип_записи>
  • @<DNS_сервер> — необязательный параметр, задающий конкретный DNS-сервер для обращения;
  • <доменное_имя> — доменное имя, которое подлежит запросу;
  • <тип_записи> — тип DNS-записи, которую нужно получить (например, A, MX, TXT).

Примеры использования dig

Запрос A-записи (IPv4-адрес):

$ dig example.com A

; <<>> DiG 9.16.1-Ubuntu <<>> example.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;example.com.                    IN      A

;; ANSWER SECTION:
example.com.             300     IN      A       93.184.216.34

;; Query time: 10 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Oct 11 12:34:56 UTC 2023
;; MSG SIZE  rcvd: 56

Данный пример показывает, насколько подробно dig выводит результат запроса A-записи для домена example.com.

Запрос MX-записи (почтового сервера):

$ dig example.com MX

;; QUESTION SECTION:
;example.com.                    IN      MX

;; ANSWER SECTION:
example.com.             300     IN      MX      0 .

;; AUTHORITY SECTION:
example.com.             300     IN      NS      a.iana-servers.net.
example.com.             300     IN      NS      b.iana-servers.net.

Здесь мы получаем информацию о почтовых серверах для домена example.com.

Запрос несуществующей записи:

$ dig nonexistent.example.com A

;; QUESTION SECTION:
;nonexistent.example.com.        IN      A

;; AUTHORITY SECTION:
example.com.             300     IN      SOA     a.iana-servers.net. hostmaster.example.com. 2023101101 7200 3600 1209600 3600

В этом случае dig всё равно возвращает код завершения 0, несмотря на отсутствие искомой записи.

Использование dig для диагностики

dig активно применяется для диагностики проблем с DNS благодаря своим обширным возможностям вывода. К примеру, можно легко проверить, какие DNS-серверы обслуживают домен:

$ dig example.com NS

;; ANSWER SECTION:
example.com.             300     IN      NS      a.iana-servers.net.
example.com.             300     IN      NS      b.iana-servers.net.

Сравнение host и dig

Характеристикаhostdig
ПростотаПростаяБолее сложная
Код возвратаВозвращает 1 при ошибкеВсегда возвращает 0
ПодробностьМинимальнаяОчень подробная
Использование в скриптахУдобна для автоматизацииМенее удобна для автоматизации
ДиагностикаПодходит для быстрых проверокИдеальна для глубокого анализа

Заключение

Оба инструмента — host и dig — являются незаменимыми помощниками при работе с DNS. host подойдёт для простых и быстрых проверок, тогда как dig обеспечит глубокий анализ и диагностику. Выбор между этими утилитами зависит от стоящих перед вами задач: для автоматизации предпочтительнее использовать host, а для тщательного анализа — dig. Владение обеими утилитами позволит значительно повысить эффективность вашей работы с DNS.

От root

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *