Розглянемо детально вивід команди dig, щоб зрозуміти, як вона працює.
Спочатку бачимо рядок, що вказує версію dig та домен, для якого виконується запит. Далі йдуть глобальні параметри, які застосовуються до всіх запитів. У цьому випадку це параметр +cmd, який є стандартним для команди dig. Після цього наводиться тип операції (запит), статус (без помилок), ID (ідентифікатор для зв’язку запиту та відповіді) та прапори (qr rd ra), що позначають запит, бажану рекурсію та доступну рекурсію. Також відображається кількість запитів, відповідей, авторитетних відповідей та додаткової інформації.
Розбір псевдосекції Opt
Далі в результаті виводиться псевдосекція Opt, яка містить інформацію про розширення DNS (EDNS). Розглянемо її детальніше:
EDNS версія 0 вказує на версію розширень DNS, що використовується. EDNS дозволяє передавати додаткові дані та прапори, збільшуючи розмір UDP-пакетів. Розмір UDP-пакета також вказаний, а прапори в даному випадку не використовуються.
Секція запитань
У розділі запитань міститься інформація про доменне ім’я, для якого проводиться запит, клас (Інтернет) та тип запиту (A, тобто адреса).
Розділ відповідей
Розділ “Відповіді” відображає отримані від DNS-сервера IP-адреси для зазначеного домену. Для кожної адреси наводиться час життя (TTL), клас (IN) та тип запису (A).
Розділ статистики
Останній розділ містить статистику запиту, включаючи час, необхідний для отримання відповіді, IP-адресу та порт DNS-сервера, дату та час запиту, а також розмір отриманого повідомлення.
Час запиту вказує на затримку при отриманні відповіді. Інформація про сервер показує локальний розпізнавач, який може перенаправляти запити до вищих DNS-серверів. Також зафіксовано момент запиту та розмір отриманих даних.
Контроль виводу
Команда dig надає можливість гнучкого налаштування виводу, дозволяючи виключати або включати певні розділи.
Для виключення певних розділів використовуються такі параметри запиту:
+nocomments
: виключає коментарі.+noauthority
: не показує розділ авторитету.+noadditional
: не показує додатковий розділ.+nostats
: виключає розділ зі статистикою.+noanswer
: не відображає розділ відповідей.+noall
: приховує все.
Для ввімкнення конкретних розділів використовуються такі параметри запиту:
+коментарі
: показує рядки коментарів.+авторитет
: відображає розділ повноважень.+додатковий
: показує додатковий розділ.+статистика
: виводить розділ зі статистикою.+відповідь
: показує розділ відповідей.+все
: показує все.
Поєднання +noall
із одним із наведених вище параметрів дозволяє вибірково виводити необхідні розділи. Якщо потрібно, можна налаштувати файл конфігурації .digrc
у домашньому каталозі, щоб застосовувати необхідні параметри автоматично.
Наприклад, щоб приховати коментарі, потрібно ввести:
dig wdzwdz.com +nocomments
Щоб виключити все, використовуємо:
dig wdzwdz.com +noall
Для відображення лише розділу відповідей, слід вказати:
dig wdzwdz.com +noall +answer
Для відображення розділу відповідей та статистики, потрібно ввести:
dig wdzwdz.com +noall +answer +stats
Для створення файлу .digrc
з параметрами +noall +answer
потрібно ввести:
echo "+noall +answer" > $HOME/.digrc
Перевірити вміст цього файлу можна командою:
cat .digrc
Тепер команда dig буде завжди використовувати ці параметри, як показано нижче:
dig ubuntu.org
dig linux.org
dig github.com
Типи записів DNS
Запити dig отримують інформацію з різних типів записів, що зберігаються на DNS-серверах. Якщо не вказувати іншого, команда запитує запис A (адреса). Нижче наведено перелік типів записів, що часто використовуються з dig:
Запис A | Зв’язує домен з IPv4-адресою. |
Запис MX | Вказує поштові сервери для домену. |
Запис NS | Делегує домен або піддомен на набір DNS-серверів. |
Запис TXT | Зберігає текстову інформацію про домен. |
Запис SOA | Містить інформацію про домен: основний сервер, відповідальну сторону, час зміни, частоту оновлення зони, тощо. |
TTL | Визначає час кешування запису DNS сервером-посередником. |
ANY | Запитує всі типи записів. |
Для запиту запису A використовуємо:
dig redhat.com A
Запит записів обміну поштою виконується за допомогою параметра MX:
dig yahoo.com MX
Для отримання списку серверів імен потрібно скористатися параметром NS:
dig fedora.com NS
Щоб отримати початок зони авторизації, використовується прапорець SOA:
dig manjaro.com SOA
Прапорець TTL показує час життя запису у кеші. При повторному виконанні запиту можна побачити, як значення зменшується, а потім повертається до початкового:
dig usa.gov TTL
Для отримання текстових записів використовуємо параметр TXT:
dig usa.gov TXT
Вказівка DNS-сервера
Команда dig дозволяє використовувати певний DNS-сервер для запиту. Для цього використовується знак “@” перед адресою DNS-сервера:
За замовчуванням, команда dig використовує локальний DNS-сервер (127.0.0.53):
dig usa.gov +stats
Для використання публічного DNS-сервера Google, вводимо:
dig @8.8.8.8 usa.gov +stats
Запит декількох доменів
Команда dig може обробляти кілька доменів в одному запиті:
dig ubuntu.org fedora.org manjaro.com
Також можна завантажити список доменів з текстового файла, використовуючи параметр -f. Спочатку відобразимо вміст файла:
cat domains.txt
А потім надішлемо цей список в dig:
dig -f domains.txt
Зворотні DNS-пошуки
За допомогою dig можна здійснювати зворотні DNS-пошуки, щоб визначити доменне ім’я за IP-адресою. Це можливо за наявності запису PTR.
Для зворотного пошуку використовується параметр -x:
dig -x 209.51.188.148
Також можна явно запитувати PTR запис, надавши IP-адресу в зворотному порядку з додаванням суфікса “.in-addr.arpa”:
dig ptr 148.188.51.209.in-addr.arpa
Висновок
Команда dig є потужним інструментом для дослідження роботи DNS. З її допомогою можна отримати детальну інформацію про доменні імена, їх IP-адреси, поштові сервери та іншу важливу інформацію, що стосується роботи мережі Інтернет.