nslookup и dig — диагностика DNS для системного администратора

Подробное руководство по nslookup: как пользоваться, проверка DNS, MX, IP, ошибки “не заслуживающий доверия ответ”, сравнение с dig и практические кейсы.

Пинг есть, сайта нет. Классика. Именно в такие моменты системный администратор открывает терминал и начинает копать DNS. И первое, что летит в ход — nslookup.

DNS — это телефонная книга интернета. Вы вводите google.com, DNS переводит это в IP-адрес, браузер идёт туда. Когда эта цепочка ломается — всё. Сайт недоступен, почта не ходит, пользователи звонят, и у вас начинается весёлый день.

nslookup (name server lookup) — утилита командной строки для DNS-запросов. Она позволяет вручную спросить у DNS-сервера: «где живёт этот домен?» — и получить ответ без браузера, без кеша, без магии. Просто сырой DNS-запрос и сырой ответ.

Инструмент старый, местами ругаемый, но живёт в каждой системе и всегда под рукой. В этой статье разберём его вдоль и поперёк — установку, команды, расшифровку вывода, типичные ошибки и сравнение с dig.


Что делает nslookup

nslookup отправляет DNS-запросы и выводит ответы. Звучит просто, но под капотом это полноценный инструмент резолвинга доменных имён.

Что конкретно умеет:

  • Узнать IP-адрес по доменному имени (A и AAAA записи)
  • Узнать домен по IP-адресу (обратный резолвинг, PTR записи)
  • Проверить MX-записи (почтовые серверы домена)
  • Проверить NS-записи (делегирование домена)
  • Опросить конкретный DNS-сервер, минуя системный резолвер
  • Работать в интерактивном режиме с несколькими запросами подряд

По сути, nslookup — это прямой разговор с DNS-сервером. Вы спрашиваете, сервер отвечает, вы видите результат. Без кеша браузера, без hosts-файла, без промежуточных прокси.


Установка nslookup на Linux

Debian и Ubuntu

В современных версиях Debian и Ubuntu утилита nslookup входит в пакет dnsutils:

sudo apt update
sudo apt install dnsutils

После установки доступны сразу три утилиты: nslookup, dig и host. Проверить:

nslookup --version
dig --version

Astra Linux

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

sudo apt install dnsutils

Если репозитории настроены корректно — пакет поставится без проблем. В Astra Linux SE (с мандатным управлением доступом) убедитесь, что запускаете команду с нужным уровнем конфиденциальности, иначе сетевые операции могут быть заблокированы политиками безопасности.

CentOS / RHEL / Fedora

sudo yum install bind-utils
# или для новых версий
sudo dnf install bind-utils

nslookup в Windows

В Windows утилита встроена по умолчанию — устанавливать ничего не нужно. Запуск через командную строку или PowerShell:

Win + R → cmd → Enter
nslookup google.com

Или через PowerShell:

nslookup google.com
nslookup -type=mx google.com

Интерфейс идентичен Linux-версии. Синтаксис команд тот же. Единственное отличие — в Windows нет dig из коробки, нужно ставить отдельно (BIND для Windows или использовать WSL).


Как пользоваться nslookup — основы

Базовый запрос

Самый простой случай — узнать IP-адрес домена:

nslookup google.com

Вывод будет примерно таким:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.185.46
Address: 2a00:1450:4010:c0f::8b

Разберём построчно:

  • Server / Address — DNS-сервер, которому отправлен запрос. В данном случае это локальный роутер 192.168.1.1, порт 53 (стандартный порт DNS).
  • Non-authoritative answer — ответ получен из кеша DNS, а не напрямую от авторитетного сервера. Об этом подробнее ниже.
  • Name — доменное имя.
  • Address — IP-адреса. Два адреса: IPv4 и IPv6.

Обратный резолвинг — узнать домен по IP

nslookup 8.8.8.8

Вывод:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
8.8.8.8.in-addr.arpa    name = dns.google.

IP 8.8.8.8 принадлежит dns.google — это публичный DNS Google. Обратный резолвинг работает через PTR-записи в специальных зонах .in-addr.arpa для IPv4 и .ip6.arpa для IPv6.

Интерактивный режим

Если нужно сделать несколько запросов подряд, удобнее зайти в интерактивный режим:

nslookup
> google.com
> yandex.ru
> set type=mx
> gmail.com
> exit

Режим позволяет менять параметры на лету без повторного ввода команды целиком.


Работа с DNS-серверами

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

По умолчанию nslookup использует системный DNS. Но можно указать любой другой:

nslookup google.com 8.8.8.8

Здесь 8.8.8.8 — DNS Google. Запрос пойдёт напрямую к нему, минуя системные настройки.

Это полезно когда нужно:

  • Проверить, что видит внешний DNS (а не локальный)
  • Сравнить ответы от разных серверов
  • Диагностировать проблему с конкретным DNS-провайдером

Публичные DNS-серверы для диагностики

Провайдер IPv4 IPv6
Google 8.8.8.8 / 8.8.4.4 2001:4860:4860::8888
Cloudflare 1.1.1.1 / 1.0.0.1 2606:4700:4700::1111
Яндекс 77.88.8.8 / 77.88.8.1 2a02:6b8::feed:0ff

Пример сравнения ответов:

# Спросить Google
nslookup example.com 8.8.8.8

# Спросить Cloudflare
nslookup example.com 1.1.1.1

# Спросить локальный DNS
nslookup example.com 192.168.1.1

Если ответы разные — проблема в конкретном DNS-сервере или ещё не завершилась DNS propagation.


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

По умолчанию nslookup запрашивает A-записи (IPv4). Но DNS хранит много других типов данных.

A-запись — IPv4-адрес

nslookup -type=A google.com

AAAA-запись — IPv6-адрес

nslookup -type=AAAA google.com

MX-запись — почтовые серверы

nslookup -type=MX gmail.com

Вывод:

gmail.com       mail exchanger = 5 gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.

Число перед именем сервера — приоритет. Чем меньше цифра, тем выше приоритет. Почта сначала пойдёт на сервер с приоритетом 5, при недоступности — на 10, затем на 20.

NS-запись — делегирование домена

nslookup -type=NS google.com

Вывод покажет, каким серверам делегирован домен:

google.com      nameserver = ns1.google.com.
google.com      nameserver = ns2.google.com.
google.com      nameserver = ns3.google.com.
google.com      nameserver = ns4.google.com.

TXT-запись — текстовые данные

nslookup -type=TXT google.com

В TXT хранятся SPF-записи для почты, коды верификации Google/Яндекс, DKIM-подписи и прочее.

SOA-запись — информация о зоне

nslookup -type=SOA google.com

SOA (Start of Authority) содержит информацию об основном DNS-сервере зоны, email администратора и параметры обновления.

CNAME — псевдоним

nslookup -type=CNAME www.github.com

CNAME показывает, что домен является псевдонимом другого домена.

Любые записи сразу

nslookup -type=ANY google.com

Запрашивает все доступные типы записей. Работает не на всех серверах — многие публичные DNS ограничивают ANY-запросы из соображений безопасности.


nslookup: не заслуживающий доверия ответ

Это один из самых часто задаваемых вопросов про nslookup. При запросе вы видите:

Non-authoritative answer:
Name:   google.com
Address: 142.250.185.46

Это не ошибка. Это нормальная, штатная ситуация. Разберём, что это значит.

Authoritative vs Non-authoritative

У каждого домена есть авторитетные DNS-серверы (authoritative nameservers) — это серверы, которые хранят оригинальные записи домена. Для google.com это ns1.google.com, ns2.google.com и так далее.

Когда вы делаете запрос через обычный DNS (роутер, провайдер, Google 8.8.8.8) — эти серверы не являются авторитетными для большинства доменов. Они получили данные раньше, закешировали их и теперь отвечают из кеша.

Именно такой ответ из кеша nslookup и называет «Non-authoritative answer» — дословно «не авторитетный ответ», что в русском переводе инструмента отображается как «не заслуживающий доверия ответ».

Перевод не самый удачный — он создаёт ощущение проблемы там, где её нет.

Когда это действительно важно

Non-authoritative ответ важен при диагностике DNS propagation — когда вы только что изменили DNS-записи и хотите знать, обновились ли они везде. Если вы получаете старый IP в non-authoritative ответе — значит кеш ещё не обновился.

Чтобы получить авторитетный ответ, нужно спрашивать напрямую у NS-серверов домена:

# Сначала узнаём NS-серверы
nslookup -type=NS google.com

# Затем спрашиваем авторитетный сервер напрямую
nslookup google.com ns1.google.com

Если ответы совпадают — всё нормально. Если от авторитетного сервера приходит новый IP, а от обычного DNS — старый, значит кеш ещё не обновился и нужно подождать (TTL может быть от нескольких минут до 48 часов).

Итог по «доверию»

  • «Non-authoritative answer» = ответ из кеша промежуточного DNS-сервера
  • Это не ошибка и не признак взлома
  • Данные корректны, просто получены не из первоисточника
  • Важно при проверке свежих изменений DNS

Проверка IP и обратных зон

Обратный резолвинг (reverse DNS lookup) — определение доменного имени по IP-адресу. Используется в почтовых системах, логах, системах безопасности.

nslookup 8.8.8.8
nslookup 1.1.1.1
nslookup 77.88.8.8

Вывод для 1.1.1.1:

1.1.1.1.in-addr.arpa    name = one.one.one.one.

Обратные зоны важны при настройке почтового сервера — большинство почтовых фильтров проверяют, есть ли PTR-запись у отправляющего сервера, и совпадает ли она с A-записью домена. Если PTR нет — письма с большой вероятностью уйдут в спам.

Проверка PTR для вашего почтового сервера:

nslookup 

Практические кейсы

Кейс 1: Сайт не открывается — проверка DNS

Пользователь жалуется, что сайт не открывается. Пинг до IP проходит, но домен не резолвится.

# Шаг 1: проверяем резолвинг домена
nslookup example.com

# Шаг 2: если ошибка — проверяем через внешний DNS
nslookup example.com 8.8.8.8

# Шаг 3: если через 8.8.8.8 работает — проблема в локальном DNS
# Проверяем какой DNS использует система
cat /etc/resolv.conf  # Linux
ipconfig /all  # Windows

Если через 8.8.8.8 домен резолвится, а через системный DNS нет — меняем DNS в настройках сети или перезапускаем локальный DNS-сервер.

Кейс 2: Проверка MX перед настройкой почты

Нужно убедиться, что MX-записи домена указывают на правильные почтовые серверы перед тем как запустить почту в продакшн.

nslookup -type=MX yourdomain.com
nslookup -type=MX yourdomain.com 8.8.8.8

Сравниваем вывод с тем, что прописано в панели управления DNS. Если записи совпадают и приоритеты правильные — можно продолжать настройку.

Также проверяем SPF:

nslookup -type=TXT yourdomain.com

Ищем строку вида v=spf1 include:... ~all.

Кейс 3: Проверка делегирования домена

Только что сменили хостинг и перенесли домен на новые NS-серверы. Нужно убедиться, что делегирование прошло корректно.

# Проверяем NS-записи
nslookup -type=NS yourdomain.com

# Проверяем у регистратора (у корневых серверов)
nslookup -type=NS yourdomain.com a.root-servers.net

Если NS уже обновились у корневых серверов — делегирование прошло, дальше дело за propagation.

Кейс 4: Проверка DNS propagation

Изменили A-запись домена. Нужно понять, обновился ли кеш в разных частях мира.

# Спрашиваем разные DNS
nslookup yourdomain.com 8.8.8.8      # Google (США)
nslookup yourdomain.com 1.1.1.1      # Cloudflare
nslookup yourdomain.com 77.88.8.8    # Яндекс

# Спрашиваем авторитетный сервер напрямую
nslookup -type=NS yourdomain.com
nslookup yourdomain.com <NS-сервер домена>

Если авторитетный сервер отдаёт новый IP, а публичные DNS — старый, нужно ждать истечения TTL. Проверить TTL:

nslookup -debug yourdomain.com

В выводе будет строка ttl = XXXX — это количество секунд до обновления кеша.

Кейс 5: Сравнение ответов от разных DNS

Подозрение, что провайдер подменяет DNS-ответы (DNS hijacking). Проверяем:

# Запрашиваем у провайдерского DNS
nslookup google.com

# Запрашиваем у независимого DNS
nslookup google.com 8.8.8.8
nslookup google.com 1.1.1.1

Если IP-адреса совпадают — подмены нет. Если провайдерский DNS возвращает другие адреса для популярных сайтов — это DNS hijacking. Решение: сменить DNS-серверы в настройках сети или использовать DNS over HTTPS.


nslookup vs dig

dig (Domain Information Groper) — более современная альтернатива nslookup. Входит в тот же пакет dnsutils.

Критерий nslookup dig
Простота использования Проще, интуитивнее Чуть сложнее синтаксис
Детализация вывода Базовая Полная, включая флаги и секции
Управление выводом Ограниченное Гибкое (+short, +noall, +answer)
Скриптуемость Неудобная Отличная
Поддержка DNSSEC Нет Есть
Наличие в Windows Встроен Нужно устанавливать
Статус Устаревший Актуальный, рекомендуется

Эквивалентные команды

# nslookup
nslookup google.com
nslookup -type=MX google.com
nslookup google.com 8.8.8.8

# dig — аналоги
dig google.com
dig MX google.com
dig google.com @8.8.8.8

Преимущества dig

Краткий вывод — только IP, без лишнего текста:

dig +short google.com

Полный ответ с флагами запроса и ответа:

dig +all google.com

Трассировка резолвинга от корневых серверов:

dig +trace google.com

Проверка DNSSEC:

dig +dnssec google.com

В скриптах dig намного удобнее. Например, получить только IP домена:

IP=$(dig +short google.com | head -1)
echo "IP: $IP"

Почему nslookup всё ещё используют

Несмотря на то что nslookup официально считается устаревшим (deprecated в некоторых Unix-системах), он продолжает жить по нескольким причинам:

  • Встроен в Windows по умолчанию, dig — нет
  • Более простой синтаксис для быстрых проверок
  • Многие администраторы привыкли к нему годами
  • Интерактивный режим удобен для серии запросов

Аналоги nslookup

dig

Основная альтернатива. Установка в Debian/Ubuntu/Astra:

sudo apt install dnsutils

host

Упрощённый инструмент для быстрых запросов. Входит в тот же пакет:

host google.com
host -t MX gmail.com
host 8.8.8.8

Вывод минималистичный, без лишних деталей — удобно для скриптов.

drill

Ещё одна альтернатива, с акцентом на DNSSEC:

sudo apt install ldnsutils
drill google.com

Онлайн-сервисы

Когда нужно проверить DNS из разных точек мира без настройки инструментов:

  • dnschecker.org — проверка propagation из множества локаций
  • mxtoolbox.com — диагностика MX, SPF, DKIM, DMARC
  • whatsmydns.net — сравнение DNS-ответов из разных стран
  • intodns.com — полный аудит DNS-конфигурации домена

Частые ошибки и их расшифровка

NXDOMAIN — домен не существует

** server can't find notexistingdomain123.com: NXDOMAIN

Домен не зарегистрирован или не делегирован. Если домен точно существует — проверьте NS-серверы, возможно проблема в делегировании.

SERVFAIL — сервер не может ответить

** server can't find example.com: SERVFAIL

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

REFUSED — сервер отказал в ответе

** server can't find example.com: REFUSED

Сервер намеренно отказывает. Обычно означает, что вы пытаетесь запросить у DNS-сервера информацию, которую он не обслуживает (например, рекурсивный запрос к серверу, который не поддерживает рекурсию для внешних клиентов).

Timeout — нет ответа

connection timed out; no servers could be reached

DNS-сервер не отвечает. Проверьте: доступен ли сервер по сети, не заблокирован ли порт 53 файрволом, правильно ли указан адрес DNS-сервера.

Неправильный DNS

Если в /etc/resolv.conf прописан несуществующий или недоступный DNS — все запросы будут падать. Быстрая диагностика:

cat /etc/resolv.conf
nslookup google.com 8.8.8.8  # напрямую к Google, минуя системный DNS

Если через 8.8.8.8 работает, а через системный нет — проблема в настройке DNS.


Полезные флаги nslookup

Флаг Описание Пример
-type= Тип DNS-записи nslookup -type=MX gmail.com
-debug Подробный вывод с TTL nslookup -debug google.com
-timeout= Таймаут запроса в секундах nslookup -timeout=10 google.com
-retry= Количество повторных попыток nslookup -retry=3 google.com
-port= Нестандартный порт DNS nslookup -port=5353 google.com

Заключение

nslookup — инструмент, который должен знать каждый системный администратор. Он прост, всегда под рукой и решает 80% задач по диагностике DNS за 30 секунд.

Но если вы работаете с DNS серьёзно — переходите на dig. Он точнее, мощнее, лучше подходит для скриптов и показывает полную картину DNS-ответа включая флаги, секции и DNSSEC. Установка одной командой через dnsutils на Debian, Ubuntu и Astra Linux.

Базовое правило диагностики DNS:

  1. Сначала проверяем через системный DNS (nslookup domain.com)
  2. Затем через внешний (nslookup domain.com 8.8.8.8)
  3. Затем через авторитетный сервер домена напрямую
  4. Сравниваем результаты — разница укажет на проблему

DNS — не магия. Это просто иерархическая база данных с кешированием. nslookup и dig дают прямой доступ к этой базе данных, и большинство проблем решаются за несколько запросов.

 

over_dude
Author: over_dude

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →
Поделитесь:

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

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

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