DIG: продвинутая диагностика DNS для Linux и Windows

шпаргалка IT-инженера с примерами для Windows и Linux

Общеизвестно: dig — это швейцарский нож для диагностики DNS. Если nslookup показывает «что-то не так», dig покажет «что именно не так, почему и на каком этапе». Работает на Linux из коробки, на Windows — после установки.

Эта шпаргалка — для тех, кто хочет глубоко диагностировать DNS, писать скрипты мониторинга, находить проблемы с DNSSEC, трассировать делегирование и получать максимум информации за один запрос.

Когда это использовать

Реальные кейсы:

  • Глубокая диагностика DNS — нужно видеть TTL, флаги, секции ответа
  • Автоматизация и скрипты — dig +short даёт чистый вывод для парсинга
  • Проверка DNSSEC — валидация подписей DNS
  • Трассировка делегирования — dig +trace показывает весь путь резолвинга
  • Измерение времени ответа — встроенная статистика Query time
  • Batch-запросы — массовая проверка доменов из файла

Типовые ситуации:

  • nslookup не даёт достаточно информации
  • Нужно проверить конкретные флаги DNS (AA, RD, RA)
  • Требуется узнать точный TTL записи
  • Пишете скрипт мониторинга DNS
  • Диагностируете проблемы с DNSSEC
  • Проверяете propagation DNS после изменений

Ошибки новичков:

  • Используют dig на Windows, не установив его — команда не найдена
  • Не знают про +short — получают огромный вывод вместо одной строки
  • Не используют +trace — не видят проблемы с делегированием
  • Забывают про @ для указания DNS-сервера
  • Не знают про batch mode — делают 100 запросов руками

Быстрый старт

Простейший запрос (как nslookup):


dig google.com

Короткий вывод (только результат):


dig +short google.com
# Вывод: 142.250.185.46

Проверка MX-записей:


dig MX gmail.com +short
# Вывод: 5 gmail-smtp-in.l.google.com.

Запрос к конкретному DNS:


dig @8.8.8.8 google.com

Трассировка полного пути резолвинга:


dig +trace google.com

Проверка времени ответа:


dig google.com | grep "Query time"

Установка dig

Linux — установка команды dig

dig входит в пакет bind-utils (RHEL/CentOS) или dnsutils (Debian/Ubuntu).


# Debian/Ubuntu/Astra Linux
sudo apt update
sudo apt install dnsutils

# CentOS/RHEL/Rocky/AlmaLinux
sudo yum install bind-utils
# ИЛИ на новых версиях
sudo dnf install bind-utils

# Fedora
sudo dnf install bind-utils

# Arch Linux
sudo pacman -S bind-tools

# openSUSE
sudo zypper install bind-utils

# Alpine Linux
apk add bind-tools

Проверка установки:


dig -v
# Вывод: DiG 9.18.28-1~deb12u2-Debian

Astra Linux — установка dig

Astra Linux основан на Debian, поэтому установка аналогична:


# Astra Linux Special Edition / Common Edition
sudo apt update
sudo apt install dnsutils

# Проверка
dig -v
which dig

Windows — установка dig

На Windows dig не установлен по умолчанию. Есть несколько способов:

Способ 1: BIND Tools для Windows (рекомендуется)

  1. Скачиваем BIND с официального сайта ISC: https://www.isc.org/download/
  2. Выбираем BIND 9Windows → Скачиваем .zip архив
  3. Распаковываем в C:\dig\
  4. Добавляем C:\dig\ в PATH

Добавление в PATH:


# PowerShell (от администратора)
$env:Path += ";C:\dig\"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)

Способ 2: Chocolatey (проще)


# Установка Chocolatey (если ещё не установлен)
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

# Установка dig
choco install bind-toolsonly -y

# Проверка
dig -v

Способ 3: WSL (Windows Subsystem for Linux)


# Установка WSL (Windows 10/11)
wsl --install

# В WSL (Ubuntu)
sudo apt update
sudo apt install dnsutils

# Использование
wsl dig google.com

Способ 4: Portable версия (без установки)

  1. Скачиваем dig.exe с https://www.isc.org/
  2. Кладём в удобную папку (например, C:\Tools\)
  3. Запускаем через полный путь: C:\Tools\dig.exe google.com

macOS — dig

Установлен по умолчанию. Если отсутствует:


# Через Homebrew
brew install bind

Основной синтаксис

Базовый формат команды dig


dig [@сервер] [домен] [тип] [опции]

Примеры:


# Простейший запрос (A-запись)
dig example.com

# Указание типа записи
dig example.com MX

# Запрос к конкретному DNS
dig @8.8.8.8 example.com

# Комбинация всего
dig @1.1.1.1 example.com AAAA +short

Порядок параметров (важно)

dig гибок в порядке параметров, но есть логика:


# Все эти варианты работают одинаково:
dig example.com MX @8.8.8.8 +short
dig @8.8.8.8 MX example.com +short
dig +short @8.8.8.8 example.com MX
dig MX example.com +short @8.8.8.8

Рекомендуемый порядок (для читаемости):


dig @[DNS-сервер] [домен] [тип] [опции]

# Пример:
dig @8.8.8.8 google.com MX +short

Типы DNS-записей в dig

Синтаксис проще, чем в nslookup — просто указываем тип БЕЗ -type=:


# A-запись (по умолчанию)
dig example.com
dig example.com A

# AAAA (IPv6)
dig example.com AAAA

# MX (почтовые серверы)
dig example.com MX

# NS (DNS-серверы)
dig example.com NS

# CNAME (алиас)
dig www.example.com CNAME

# TXT (текстовые записи)
dig example.com TXT

# SOA (информация о зоне)
dig example.com SOA

# PTR (обратная запись)
dig -x 8.8.8.8

# SRV (сервисные записи)
dig _ldap._tcp.example.com SRV

# ANY (все записи) — многие DNS больше не отвечают
dig example.com ANY

# CAA (Certificate Authority Authorization)
dig example.com CAA

# DNSKEY (для DNSSEC)
dig example.com DNSKEY

# DS (Delegation Signer для DNSSEC)
dig example.com DS

Полезные опции (+флаги)

+short — короткий вывод (самая полезная опция)

Убирает весь шум, оставляет только результат. Идеально для скриптов.


# Без +short
dig google.com
# Вывод: ~15 строк с заголовками, статистикой и т.д.

# С +short
dig +short google.com
# Вывод: 142.250.185.46

# Примеры
dig +short google.com MX
# Вывод: 10 smtp.google.com.

dig +short google.com NS
# Вывод:
# ns1.google.com.
# ns2.google.com.
# ns3.google.com.
# ns4.google.com.

+trace — трассировка делегирования

Показывает весь путь от корневых серверов до авторитетного DNS. Критично для диагностики делегирования.


dig +trace google.com

Вывод показывает:

  1. Корневые серверы (.)
  2. TLD серверы (.com)
  3. Авторитетные NS для google.com
  4. Финальный ответ

Полезно когда:

  • Домен не резолвится, но непонятно на каком этапе
  • Проверяете делегирование после смены NS
  • Ищете проблемы с DNSSEC

+noall +answer — только секция ответа

Чище чем +short, но с TTL и типом записи.


dig +noall +answer google.com

# Вывод:
# google.com.    300    IN    A    142.250.185.46

+noall +authority — только секция авторитета


dig +noall +authority example.com

+noall +additional — только дополнительная секция


dig +noall +additional example.com

+stats — только статистика


dig +stats google.com

# Вывод включает:
# Query time: 24 msec
# SERVER: 192.168.1.1#53(192.168.1.1)
# WHEN: Tue Feb 03 15:30:45 EET 2026
# MSG SIZE  rcvd: 55

+dnssec — проверка DNSSEC

Запрашивает DNSSEC-подписи.


dig +dnssec example.com

# Проверка валидности DNSSEC
dig +dnssec +multiline example.com DNSKEY

+tcp — использовать TCP вместо UDP

По умолчанию DNS использует UDP. Некоторые запросы требуют TCP (большие ответы, AXFR).


dig +tcp google.com

+notcp — явно использовать UDP


dig +notcp google.com

+multiline — многострочный вывод (для SOA, DNSKEY)


dig +multiline example.com SOA

+noquestion — скрыть секцию вопроса


dig +noquestion google.com

+nocomments — убрать комментарии


dig +nocomments google.com

+nocmd — убрать строку команды из вывода


dig +nocmd google.com

+noadditional — скрыть additional секцию


dig +noadditional google.com

Комбинирование опций


# Минимальный вывод: только ответ, без комментариев
dig +noall +answer +nocmd google.com

# Вывод: только IP и статистика
dig +short +stats google.com

# Трассировка с коротким выводом (не рекомендуется, trace сам по себе verbose)
dig +trace +short google.com

Указание DNS-сервера

Синтаксис @ для выбора DNS


dig @[IP-адрес или hostname] [домен]

Публичные DNS-серверы


# Google DNS
dig @8.8.8.8 google.com
dig @8.8.4.4 google.com

# Cloudflare DNS
dig @1.1.1.1 google.com
dig @1.0.0.1 google.com

# Quad9 DNS
dig @9.9.9.9 google.com

# OpenDNS
dig @208.67.222.222 google.com
dig @208.67.220.220 google.com

# Yandex DNS
dig @77.88.8.8 google.com

# AdGuard DNS
dig @94.140.14.14 google.com

Локальный DNS-сервер


# Обычно это шлюз или роутер
dig @192.168.1.1 google.com

# localhost (если запущен локальный DNS)
dig @127.0.0.1 google.com
dig @localhost google.com

Авторитетный DNS напрямую


# Сначала находим NS
dig +short google.com NS
# Вывод: ns1.google.com, ns2.google.com...

# Запрашиваем напрямую
dig @ns1.google.com google.com

Указание порта DNS


# Нестандартный порт (например, 5353)
dig @192.168.1.1 -p 5353 google.com

Основные команды и примеры

Узнать IP домена


# Полный вывод
dig google.com

# Только IP
dig +short google.com

# IPv4 и IPv6
dig google.com A
dig google.com AAAA

# Оба сразу
dig google.com A google.com AAAA

Обратный DNS (PTR запись)


# Способ 1: опция -x (рекомендуется)
dig -x 8.8.8.8

# Способ 2: явный PTR
dig -x 8.8.8.8 PTR

# Способ 3: полная запись (вручную)
dig 8.8.8.8.in-addr.arpa PTR

# Короткий вывод
dig +short -x 8.8.8.8
# Вывод: dns.google.

Проверка MX записей


# Полный вывод
dig gmail.com MX

# Короткий вывод
dig +short gmail.com MX
# Вывод:
# 5 gmail-smtp-in.l.google.com.
# 10 alt1.gmail-smtp-in.l.google.com.

# Только серверы (без приоритета)
dig +short gmail.com MX | awk '{print $2}'

Проверка NS записей


# Все NS для домена
dig google.com NS

# Короткий вывод
dig +short google.com NS
# Вывод:
# ns1.google.com.
# ns2.google.com.
# ns3.google.com.
# ns4.google.com.

# С IP-адресами NS
dig google.com NS +short | while read ns; do
    echo "$ns -> $(dig +short $ns)"
done

Проверка TXT записей


# Все TXT-записи
dig google.com TXT

# SPF запись
dig +short google.com TXT | grep spf

# DKIM запись
dig +short default._domainkey.google.com TXT

# DMARC запись
dig +short _dmarc.google.com TXT

# Google Site Verification
dig +short google.com TXT | grep google-site-verification

Проверка CNAME


dig www.github.com CNAME

# Короткий вывод
dig +short www.github.com CNAME
# Вывод: github.com.

Проверка SOA записи


# Обычный вывод
dig google.com SOA

# Многострочный (читаемый)
dig +multiline google.com SOA

# Только serial number
dig +short google.com SOA | awk '{print $3}'

Проверка CAA записей

CAA (Certificate Authority Authorization) — указывает, какие CA могут выпускать сертификаты для домена.


dig google.com CAA

# Короткий вывод
dig +short google.com CAA
# Вывод: 0 issue "pki.goog"

Проверка SRV записей


# Формат: _service._protocol.domain
dig _ldap._tcp.example.com SRV
dig _sip._tcp.example.com SRV
dig _xmpp-server._tcp.example.com SRV

# Microsoft AD (поиск контроллеров домена)
dig _ldap._tcp.dc._msdcs.example.com SRV

Продвинутые техники

Трассировка делегирования (dig +trace)

Показывает полный путь резолвинга от корневых серверов.


dig +trace google.com

Вывод показывает:


# 1. Корневые серверы
.            518400  IN  NS  a.root-servers.net.

# 2. TLD серверы для .com
com.         172800  IN  NS  a.gtld-servers.net.

# 3. Авторитетные NS для google.com
google.com.  172800  IN  NS  ns1.google.com.

# 4. Финальный ответ
google.com.  300     IN  A   142.250.185.46

Когда использовать:

  • Домен не резолвится, но непонятно почему
  • Проверяете делегирование после смены NS
  • Ищете где именно ломается цепочка

Проверка DNSSEC


# Запрос DNSKEY (публичные ключи)
dig +dnssec google.com DNSKEY

# Запрос DS (Delegation Signer)
dig +dnssec google.com DS

# Проверка валидности (требует валидирующий резолвер)
dig +dnssec +multiline google.com A

# Проверка цепочки доверия
dig +trace +dnssec google.com

Batch запросы (массовая проверка)

Способ 1: Файл с доменами


# Создаём файл domains.txt
cat > domains.txt << EOF
google.com
github.com
stackoverflow.com
EOF

# Запускаем batch
dig -f domains.txt +short

Способ 2: Скрипт bash


#!/bin/bash
while read domain; do
    echo "=== $domain ==="
    dig +short "$domain"
    echo ""
done < domains.txt

Способ 3: One-liner


for domain in google.com github.com reddit.com; do
    echo "$domain: $(dig +short $domain)"
done

Замер времени ответа DNS


# Показать Query time
dig google.com | grep "Query time"

# Короткий вывод со статистикой
dig +stats +short google.com

# Сравнение скорости разных DNS
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
    echo -n "$dns: "
    dig @$dns google.com | grep "Query time"
done

Проверка любого хоста (ANY запрос)

ВАЖНО: Многие современные DNS-серверы игнорируют ANY запросы из-за атак усиления.


dig example.com ANY

# Если ANY не работает, запрашиваем все типы вручную
for type in A AAAA MX NS TXT SOA; do
    echo "=== $type ==="
    dig +short example.com $type
done

Проверка зоновых трансферов (AXFR)

AXFR (Full Zone Transfer) — полная выгрузка зоны DNS. Обычно закрыто из соображений безопасности.


# Попытка зонового трансфера
dig @ns1.example.com example.com AXFR

# Если доступно - вывалит всю зону
# Если нет: Transfer failed or refused

Законное использование: проверка secondary DNS серверов.

Проверка TTL (Time To Live)


# Полный вывод с TTL
dig +noall +answer google.com

# Вывод:
# google.com.    300    IN    A    142.250.185.46
#                 ^^^
#                 TTL в секундах

# Только TTL
dig +noall +answer google.com | awk '{print $2}'

Проверка с разных DNS одновременно


#!/bin/bash
DOMAIN=$1
DNS_SERVERS="8.8.8.8 1.1.1.1 9.9.9.9 192.168.1.1"

echo "Checking $DOMAIN on multiple DNS servers:"
echo ""

for dns in $DNS_SERVERS; do
    echo "DNS: $dns"
    dig @$dns +short $DOMAIN
    echo ""
done

Игнорирование рекурсии (+norecurse)

Запрос только к авторитетному серверу без рекурсии.


dig +norecurse @8.8.8.8 google.com

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

Диагностика проблем DNS через dig

Проблема: Домен не резолвится

Шаги диагностики:


# 1. Проверяем базовый запрос
dig example.com

# 2. Если NXDOMAIN - проверяем NS
dig +short example.com NS

# 3. Если NS есть - проверяем SOA
dig example.com SOA

# 4. Трассируем делегирование
dig +trace example.com

# 5. Запрашиваем авторитетный NS напрямую
dig @ns1.example.com example.com

Проблема: Разные ответы от разных DNS


# Сравниваем ответы
dig @8.8.8.8 +short example.com > /tmp/google_dns.txt
dig @1.1.1.1 +short example.com > /tmp/cloudflare_dns.txt
dig @ns1.example.com +short example.com > /tmp/authoritative.txt

# Сравниваем файлы
diff /tmp/google_dns.txt /tmp/cloudflare_dns.txt
diff /tmp/google_dns.txt /tmp/authoritative.txt

# Или одной командой
echo "Google DNS: $(dig @8.8.8.8 +short example.com)"
echo "Cloudflare: $(dig @1.1.1.1 +short example.com)"
echo "Authoritative: $(dig @ns1.example.com +short example.com)"

Проблема: Медленный DNS


# Замеряем время для каждого DNS
for dns in 8.8.8.8 1.1.1.1 9.9.9.9 192.168.1.1; do
    echo -n "$dns: "
    dig @$dns google.com | grep "Query time"
done

# Повторяем несколько раз для среднего значения
for i in {1..5}; do
    dig @8.8.8.8 google.com | grep "Query time"
done

Проблема: DNS propagation (распространение изменений)


# Проверяем авторитетный DNS (должен быть новый)
dig @ns1.example.com +short example.com

# Проверяем публичные DNS (могут кешировать старое)
dig @8.8.8.8 +noall +answer example.com
dig @1.1.1.1 +noall +answer example.com

# Смотрим TTL - сколько ждать
dig @8.8.8.8 +noall +answer example.com | awk '{print $2 " seconds left"}'

Проблема: DNSSEC ошибки


# Проверяем DNSSEC валидацию
dig +dnssec example.com

# Ищем флаг "ad" (authentic data)
dig +dnssec example.com | grep "flags:"

# Проверяем DNSKEY
dig +dnssec example.com DNSKEY

# Проверяем DS запись
dig +dnssec example.com DS

# Трассировка с DNSSEC
dig +trace +dnssec example.com

Проблема: Почта не доходит


# 1. Проверяем MX
dig +short example.com MX

# 2. Проверяем, резолвятся ли почтовые серверы
dig +short mail.example.com

# 3. Проверяем SPF
dig +short example.com TXT | grep spf

# 4. Проверяем DKIM (замените "default" на ваш селектор)
dig +short default._domainkey.example.com TXT

# 5. Проверяем DMARC
dig +short _dmarc.example.com TXT

# 6. Reverse DNS для почтового сервера
dig +short -x 203.0.113.10

DIG в скриптах и автоматизации

Скрипт мониторинга DNS


#!/bin/bash
# dns-monitor.sh - Мониторинг DNS-записи

DOMAIN=$1
EXPECTED_IP=$2
CURRENT_IP=$(dig +short $DOMAIN | head -1)

if [ "$CURRENT_IP" == "$EXPECTED_IP" ]; then
    echo "OK: $DOMAIN -> $CURRENT_IP"
    exit 0
else
    echo "ERROR: $DOMAIN -> $CURRENT_IP (expected $EXPECTED_IP)"
    exit 1
fi

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


./dns-monitor.sh example.com 203.0.113.10

Скрипт проверки propagation


#!/bin/bash
# check-propagation.sh

DOMAIN=$1
DNS_SERVERS="8.8.8.8 8.8.4.4 1.1.1.1 1.0.0.1 9.9.9.9"

echo "Checking DNS propagation for: $DOMAIN"
echo "=========================================="

for dns in $DNS_SERVERS; do
    IP=$(dig @$dns +short $DOMAIN | head -1)
    echo "$dns: $IP"
done

Скрипт сравнения TTL


#!/bin/bash
# ttl-check.sh

DOMAIN=$1

echo "TTL values for $DOMAIN:"
dig +noall +answer $DOMAIN | while read line; do
    TTL=$(echo $line | awk '{print $2}')
    TYPE=$(echo $line | awk '{print $4}')
    VALUE=$(echo $line | awk '{print $5}')
    echo "$TYPE: $TTL seconds ($VALUE)"
done

Экспорт в JSON (через jq)


#!/bin/bash
# dig-to-json.sh

DOMAIN=$1

dig +short $DOMAIN | jq -R -s -c 'split("\n")[:-1] | {domain: "'$DOMAIN'", ips: .}'

# Вывод: {"domain":"google.com","ips":["142.250.185.46"]}

Массовая проверка с логированием


#!/bin/bash
# bulk-dns-check.sh

LOGFILE="dns-check-$(date +%Y%m%d-%H%M%S).log"

while read domain; do
    echo "Checking: $domain" | tee -a $LOGFILE
    dig +short $domain | tee -a $LOGFILE
    echo "" | tee -a $LOGFILE
done < domains.txt

echo "Results saved to: $LOGFILE"

Уведомление при изменении DNS


#!/bin/bash
# dns-change-alert.sh

DOMAIN=$1
CACHE_FILE="/tmp/dns-cache-$DOMAIN"

CURRENT_IP=$(dig +short $DOMAIN)

if [ -f "$CACHE_FILE" ]; then
    CACHED_IP=$(cat $CACHE_FILE)
    
    if [ "$CURRENT_IP" != "$CACHED_IP" ]; then
        echo "ALERT: DNS changed for $DOMAIN"
        echo "Old: $CACHED_IP"
        echo "New: $CURRENT_IP"
        # Здесь можно добавить отправку email/telegram
    fi
fi

echo $CURRENT_IP > $CACHE_FILE

Полезные комбинации и хаки

Только IP, ничего лишнего


dig +short google.com

Только первый IP (если их несколько)


dig +short google.com | head -1

Проверка на всех публичных DNS


for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
    echo "$dns: $(dig @$dns +short google.com)"
done

Все записи одного типа для списка доменов


for domain in google.com github.com reddit.com; do
    echo "$domain MX: $(dig +short $domain MX)"
done

Проверка с таймаутом


# Таймаут 2 секунды
timeout 2 dig google.com

Цветной вывод (через grep)


dig google.com | grep --color=always -E "ANSWER|$"

Поиск IP в определённой подсети


# Ищем все A-записи, начинающиеся с 192.168
dig +short example.com | grep "^192.168"

Обратный DNS для подсети (массово)


for i in {1..254}; do
    echo -n "192.168.1.$i: "
    dig +short -x 192.168.1.$i
done

Проверка DNS через VPN vs без VPN


# Без VPN
dig +short example.com > /tmp/no-vpn.txt

# Включаем VPN

# С VPN
dig +short example.com > /tmp/with-vpn.txt

# Сравниваем
diff /tmp/no-vpn.txt /tmp/with-vpn.txt

DIG vs NSLOOKUP — когда что использовать

Задача dig nslookup
Быстрая проверка IP dig +short domain.com nslookup domain.com
Скрипты и автоматизация ✅ Отлично ❌ Плохо
Интерактивный режим ❌ Нет ✅ Есть
Доступность на Windows ❌ Нужна установка ✅ Из коробки
Доступность на Linux ✅ Обычно есть ✅ Обычно есть
Детальный вывод (TTL, флаги) ✅ Отлично ❌ Ограничено
Трассировка делегирования ✅ dig +trace ❌ Нет
DNSSEC проверка ✅ Есть ❌ Нет
Batch запросы ✅ dig -f file ❌ Нет
Простота для новичков ❌ Сложнее ✅ Проще

Вывод:

  • nslookup — для быстрых разовых проверок на Windows, интерактивной работы
  • dig — для скриптов, автоматизации, глубокой диагностики, Linux-окружения

Частые ошибки и решения

Ошибка: «dig: command not found»

Причина: dig не установлен.

Решение:


# Debian/Ubuntu/Astra Linux
sudo apt install dnsutils

# CentOS/RHEL/Fedora
sudo dnf install bind-utils

# Windows
# Установите через Chocolatey или скачайте BIND tools

Ошибка: «;; connection timed out; no servers could be reached»

Причины:

  • DNS-сервер недоступен
  • Firewall блокирует порт 53
  • Нет интернета

Решение:


# Проверяем доступность DNS
ping 8.8.8.8

# Пробуем другой DNS
dig @1.1.1.1 google.com

# Проверяем /etc/resolv.conf (Linux)
cat /etc/resolv.conf

# Проверяем DNS настройки Windows
ipconfig /all

Ошибка: «SERVFAIL»

Причины:

  • Проблемы с DNSSEC
  • Неправильная конфигурация зоны
  • Циклическая зависимость в NS

Решение:


# Проверяем на разных DNS
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com

# Проверяем авторитетный DNS
dig @ns1.example.com example.com

# Трассируем проблему
dig +trace example.com

# Проверяем DNSSEC
dig +dnssec example.com

Ошибка: «NXDOMAIN»

Причина: Домен не существует или не резолвится.

Решение:


# Проверяем NS записи
dig +short example.com NS

# Проверяем SOA
dig example.com SOA

# Трассируем
dig +trace example.com

Ошибка: Пустой вывод при использовании +short

Причина: Запись не существует или тип указан неправильно.

Решение:


# Проверяем без +short
dig example.com MX

# Проверяем другой тип
dig example.com A

Краткий чек-лист

Установка dig:

  • ☐ Ubuntu/Debian/Astra: sudo apt install dnsutils
  • ☐ CentOS/RHEL: sudo dnf install bind-utils
  • ☐ Windows: Chocolatey или BIND tools
  • ☐ Проверка: dig -v

Базовая проверка:

  • ☐ IP домена: dig +short example.com
  • ☐ MX записи: dig +short example.com MX
  • ☐ NS записи: dig +short example.com NS
  • ☐ Обратный DNS: dig +short -x 8.8.8.8

Глубокая диагностика:

  • ☐ Трассировка: dig +trace example.com
  • ☐ DNSSEC: dig +dnssec example.com
  • ☐ TTL: dig +noall +answer example.com
  • ☐ Конкретный DNS: dig @8.8.8.8 example.com

Скрипты и автоматизация:

  • ☐ Используйте +short для чистого вывода
  • ☐ Batch режим: dig -f domains.txt
  • ☐ Парсинг: dig +short example.com | head -1
  • ☐ Статистика: dig +stats example.com

Проверка после изменений:

  • ☐ Авторитетный DNS: dig @ns1.example.com example.com
  • ☐ Публичные DNS: проверка на 8.8.8.8, 1.1.1.1
  • ☐ TTL: сколько ждать propagation
  • ☐ Сравнение: одинаковые ли ответы

Резюме

dig — это как рентген для DNS. Если nslookup говорит «болит», dig показывает «где именно, насколько серьёзно и что делать».

Три команды, которые решают 90% задач:

  1. dig +short example.com — быстрая проверка IP
  2. dig +trace example.com — глубокая диагностика делегирования
  3. dig @8.8.8.8 +noall +answer example.com — проверка с TTL на конкретном DNS

Когда использовать dig вместо nslookup:

  • Пишете скрипты мониторинга
  • Нужен точный TTL
  • Диагностируете DNSSEC
  • Трассируете делегирование
  • Работаете на Linux

Когда использовать nslookup:

  • Быстрая проверка на Windows
  • Интерактивная работа (серия запросов)
  • Простые разовые проверки

На Linux dig установлен почти везде. На Windows — потратьте 5 минут на установку через Chocolatey, и больше никогда не будете искать «nslookup показывает не всё, что делать».

Сохраните статью в закладки — dig имеет десятки опций, но вы будете использовать одни и те же 5-7 команд в 99% случаев.

Следующая шпаргалка: traceroute и mtr — диагностика сетевых маршрутов.

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

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

Прокрутить вверх