Linux How-to

nslookup и dig: диагностика DNS из командной строки

Практические команды nslookup и dig для диагностики DNS: запросы по типу записи, трассировка +trace, проверка распространения, resolvectl на Linux.

Проверено: Ubuntu 22.04/24.04, Windows 10/11

Два инструмента для диагностики DNS-проблем: nslookup работает на Windows и Linux из коробки, dig — мощнее и информативнее, доступен на Linux/macOS. Разбираем основные сценарии.

nslookup — кроссплатформенный базовый инструмент

# Базовый запрос: получить IP домена
nslookup asknews.ru

# Запрос конкретного типа записи
nslookup -type=MX asknews.ru      # почтовые серверы
nslookup -type=TXT asknews.ru     # TXT-записи (SPF, DKIM)
nslookup -type=NS asknews.ru      # nameserver-ы домена
nslookup -type=AAAA asknews.ru    # IPv6

# Запрос через конкретный DNS-сервер
nslookup asknews.ru 8.8.8.8       # через Google DNS
nslookup asknews.ru 1.1.1.1       # через Cloudflare

Что важно в выводе nslookup: строка Server: показывает какой DNS-сервер ответил. Non-authoritative answer означает что ответ из кэша резолвера, не от авторитетного сервера домена.

dig — расширенная диагностика

# Установить если нет (Ubuntu/Debian)
sudo apt install dnsutils -y
# Базовый запрос
dig asknews.ru

# Только IP, без лишнего
dig asknews.ru +short

# Конкретный тип записи
dig asknews.ru MX
dig asknews.ru TXT
dig asknews.ru NS
dig asknews.ru AAAA

# Через конкретный DNS-сервер
dig @8.8.8.8 asknews.ru
dig @1.1.1.1 asknews.ru

# Обратный DNS: IP → имя
dig -x 185.230.63.171

Трассировка DNS-запроса

# Показать полную цепочку: корень → TLD → NS → ответ
dig asknews.ru +trace

# Краткий вывод трассировки
dig asknews.ru +trace +short
Совет: +trace позволяет убедиться, что делегирование DNS работает правильно: корневые серверы знают TLD, TLD знает NS домена, NS возвращает правильный IP.

Проверка распространения DNS-изменений

# Сравнить ответы разных DNS-серверов (выявить расхождение при смене IP)
for dns in 1.1.1.1 8.8.8.8 9.9.9.9 77.88.8.8; do
  echo -n "$dns: "
  dig @$dns asknews.ru +short
done
# Проверить TTL — сколько ещё кэшируется старый ответ
dig asknews.ru | grep -A1 'ANSWER SECTION'

Диагностические сценарии

Сайт не открывается — DNS работает?

# Если dig возвращает IP — DNS в порядке, проблема дальше
dig asknews.ru +short

# Если пустой ответ или NXDOMAIN — домен не разрешается
# NXDOMAIN = домен не существует в DNS

Почта не доходит — проверить MX

dig asknews.ru MX +short
# Должны быть MX-записи с приоритетом

SPF/DKIM не проходит — проверить TXT

dig asknews.ru TXT +short | grep spf
dig mail._domainkey.asknews.ru TXT +short

resolvectl — диагностика на Linux с systemd-resolved

# Статус DNS
resolvectl status

# Запрос через systemd-resolved
resolvectl query asknews.ru
resolvectl query --type=MX asknews.ru

# Статистика кэша
resolvectl statistics

# Сброс кэша
sudo resolvectl flush-caches

Итог

nslookup — быстрая проверка с любого устройства. dig +trace — полная трассировка делегирования. dig @DNS — сравнение ответов разных серверов при проблемах с распространением. Три команды покрывают 90% DNS-задач.