Общеизвестно: 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 (рекомендуется)
- Скачиваем BIND с официального сайта ISC:
https://www.isc.org/download/ - Выбираем BIND 9 → Windows → Скачиваем .zip архив
- Распаковываем в
C:\dig\ - Добавляем
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 версия (без установки)
- Скачиваем dig.exe с
https://www.isc.org/ - Кладём в удобную папку (например,
C:\Tools\) - Запускаем через полный путь:
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
Вывод показывает:
- Корневые серверы (.)
- TLD серверы (.com)
- Авторитетные NS для google.com
- Финальный ответ
Полезно когда:
- Домен не резолвится, но непонятно на каком этапе
- Проверяете делегирование после смены 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% задач:
dig +short example.com— быстрая проверка IPdig +trace example.com— глубокая диагностика делегирования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 — диагностика сетевых маршрутов.



