nslookup: проверка DNS-записей в Windows и Linux

10 минут чтения
Средний рейтинг статьи — 4.8

nslookup — базовая утилита для проверки DNS-записей из командной строки. Она есть в Windows по умолчанию, доступна в Linux и помогает быстро понять, во что резолвится домен, какие у него A, AAAA, MX, TXT, NS, CNAME-записи и какой DNS-сервер отдаёт ответ.

Для разработчика и владельца сайта nslookup полезен в типичных ситуациях: сайт не открывается после смены DNS, почта не проходит проверку SPF, поддомен ведёт не туда, CDN отдаёт старый адрес, а у части пользователей возникает ERR_NAME_NOT_RESOLVED или DNS_PROBE_FINISHED_NXDOMAIN.

nslookup часто сравнивают с dig: dig удобнее для глубокой DNS-диагностики в Linux, но nslookup проще, привычнее для Windows-аудитории и достаточно информативен для большинства прикладных проверок.

Что такое nslookup и когда он нужен

nslookup расшифровывается как name server lookup — запрос к DNS-серверу. Утилита отправляет DNS-запрос и показывает, какой ответ вернул сервер: IP-адрес домена, почтовые серверы, TXT-записи, авторитетные NS-серверы и другие данные.

DNS сам по себе — распределённая система: браузер не знает IP-адрес сайта заранее, поэтому сначала обращается к резолверу, а тот ищет нужную запись. Если хочется разобрать цепочку подробнее, полезно начать со статьи «Как работает DNS». nslookup же нужен для практической проверки конкретного домена прямо сейчас.

Типичные задачи:

1) Проверить, куда указывает домен — например, убедиться, что example.com резолвится в новый IP после миграции сервера.

2) Найти ошибку в DNS-записях — неверный CNAME, отсутствующий A, сломанный MX, неправильный TXT для SPF или DKIM.

3) Сравнить ответы разных DNS-серверов — например, локального провайдера, 8.8.8.8, 1.1.1.1 и авторитетного сервера домена.

4) Проверить распространение изменений — после смены DNS-записей разные резолверы могут некоторое время отдавать разные ответы из-за кэша и TTL.

5) Диагностировать недоступность сайта — если мониторинг доступности сообщает о сбое, nslookup помогает отделить DNS-проблему от ошибок веб-сервера, TLS, CDN или приложения.

Как запустить nslookup в Windows и Linux

В Windows nslookup уже установлен. Откройте cmd, PowerShell или Windows Terminal и выполните:

nslookup example.com

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

В Linux утилита обычно входит в пакеты BIND. На Debian и Ubuntu её можно установить так:

sudo apt update
sudo apt install dnsutils

В новых версиях Debian/Ubuntu пакет может называться bind9-dnsutils, но dnsutils часто остаётся переходным именем.

На RHEL, CentOS, Fedora и совместимых системах:

sudo dnf install bind-utils

или для старых систем:

sudo yum install bind-utils

Проверить, что команда установлена, можно так:

which nslookup

Если путь к исполняемому файлу найден, утилита готова к работе — можно сразу выполнять nslookup example.com.

На практике nslookup в Windows особенно удобен для быстрой диагностики у пользователя: не нужно ставить дополнительные инструменты, достаточно попросить открыть PowerShell и выполнить одну команду. Это полезно, когда сайт открывается у администратора, но не открывается у клиента или сотрудника из другой сети.

Есть нюанс: nslookup проверяет именно DNS-ответ. Он не обязан учитывать файл hosts, браузерный DNS-over-HTTPS, внутренний кэш приложения или особенности корпоративного прокси. Поэтому результат nslookup — важный, но не единственный слой диагностики.

Базовый синтаксис и режимы работы

У nslookup есть два основных режима: разовый запрос и интерактивная сессия.

Разовый запрос выглядит так:

nslookup example.com

По умолчанию утилита обычно запрашивает адресные записи: A для IPv4 и/или AAAA для IPv6, в зависимости от системы и DNS-ответа.

Можно сразу указать тип записи:

nslookup -type=A example.com
nslookup -type=AAAA example.com
nslookup -type=MX example.com
nslookup -type=TXT example.com

Можно указать DNS-сервер, к которому нужно обратиться:

nslookup example.com 8.8.8.8

В интерактивном режиме сначала запускают nslookup, а затем вводят команды:

nslookup
> set type=MX
> example.com
> server 1.1.1.1
> set type=TXT
> example.com
> exit

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

Полезные команды интерактивного режима:

1) set type=... — задаёт тип DNS-записи: A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, PTR, ANY.

2) server ... — меняет DNS-сервер для следующих запросов, например server 8.8.8.8.

3) set debug — включает подробный вывод DNS-ответа. Для обычной проверки он избыточен, но помогает увидеть детали секций ответа.

4) set timeout=... — задаёт таймаут ожидания ответа.

5) set retry=... — задаёт количество повторных попыток.

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

Проверка основных DNS-записей

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

1) A — IPv4-адрес домена

nslookup -type=A example.com

Эта запись показывает, на какой IPv4-адрес указывает домен. Если сайт перенесли на новый сервер, здесь должен появиться новый IP. Если IP старый, причина может быть в кэше резолвера, неправильной зоне DNS или незавершённой смене NS-серверов.

2) AAAA — IPv6-адрес

nslookup -type=AAAA example.com

Если у домена есть IPv6, браузеры и клиенты могут использовать его. Ошибка в AAAA иногда приводит к странной ситуации: IPv4 работает, но часть пользователей получает таймауты или нестабильную загрузку.

3) CNAME — алиас на другой домен

nslookup -type=CNAME www.example.com

CNAME часто используют для www, CDN, внешних сервисов, конструкторов сайтов и SaaS-платформ. Если www.example.com должен вести на example.com или CDN-домен, это видно в ответе.

Нельзя ставить CNAME на корневой домен вместе с другими записями в классическом DNS. Для корня обычно используют A, AAAA, ALIAS или ANAME, если провайдер DNS поддерживает такие псевдозаписи.

4) MX — почтовые серверы

nslookup -type=MX example.com

Ответ показывает серверы, принимающие почту для домена, и их приоритет. Чем меньше число приоритета, тем предпочтительнее сервер. Если MX отсутствует или указывает не туда, входящая почта может не доходить.

5) TXT — текстовые записи

nslookup -type=TXT example.com

В TXT часто лежат SPF, DKIM, DMARC, проверки владения доменом для Google, Яндекса, GitHub, CDN и других сервисов. Для почтовой безопасности полезно отдельно разобраться в SPF, DKIM и DMARC.

6) NS — DNS-серверы домена

nslookup -type=NS example.com

NS показывает, какие серверы являются авторитетными для зоны. Если вы сменили DNS-хостинг, именно эти записи должны обновиться у регистратора.

7) SOA — служебная информация зоны

nslookup -type=SOA example.com

SOA содержит главный сервер зоны, email администратора в DNS-формате, serial зоны и таймеры. При диагностике полезен serial: если на разных авторитетных серверах он отличается, зона могла синхронизироваться не полностью.

8) CAA — кто может выпускать TLS-сертификаты

nslookup -type=CAA example.com

CAA ограничивает центры сертификации, которым разрешено выпускать сертификаты для домена. Если запись настроена неправильно, автоматический выпуск или продление сертификата может сломаться. Для смежной темы пригодится разбор HTTPS, TLS и сертификатов.

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

Одна из самых полезных возможностей nslookup — запросить не «DNS по умолчанию», а конкретный сервер.

Например, проверить домен через Google DNS:

nslookup example.com 8.8.8.8

Через Cloudflare DNS:

nslookup example.com 1.1.1.1

Через Quad9:

nslookup example.com 9.9.9.9

Через локальный роутер или корпоративный DNS:

nslookup example.com 192.168.1.1

Так можно понять, проблема глобальная или локальная: если публичные резолверы уже показывают новый IP, а локальный DNS — старый, дело обычно в кэше; если старый IP отдают все резолверы, нужно проверять зону у DNS-провайдера и NS у регистратора.

Для проверки авторитетного сервера сначала найдите NS:

nslookup -type=NS example.com

Допустим, ответ содержит ns1.provider.net. Тогда можно спросить его напрямую:

nslookup -type=A example.com ns1.provider.net

Это помогает отделить проблему авторитетной зоны от проблемы кэширующего резолвера. Если авторитетный сервер отдаёт верную запись, а публичный резолвер — старую, нужно ждать истечения TTL или проверять особенности кэша. Подробнее о таких задержках — в статье «Как работает DNS caching».

Есть ещё один важный сценарий: внутренние зоны. В корпоративной сети домен может резолвиться во внутренний IP, а снаружи — в публичный. Поэтому при диагностике всегда фиксируйте, откуда выполняется запрос и какой DNS-сервер использовался.

Как читать вывод nslookup

Базовый вывод nslookup выглядит примерно так:

Server:  dns.google
Address: 8.8.8.8
 
Non-authoritative answer:
Name:    example.com
Addresses: 2606:2800:220:1:248:1893:25c8:1946
          93.184.216.34

Разберём поля.

1) Server — DNS-сервер, который обработал запрос. Это может быть DNS провайдера, роутер, корпоративный резолвер или публичный сервер вроде 8.8.8.8.

2) Address — IP-адрес этого DNS-сервера. В Windows иногда отображается IPv6-адрес локального DNS или адрес роутера.

3) Non-authoritative answer — неавторитетный ответ. Это нормально: значит, ответ пришёл от кэширующего резолвера, а не напрямую от авторитетного DNS-сервера зоны.

4) Name — доменное имя, по которому получен ответ. Если был CNAME, итоговое имя может отличаться от исходного запроса.

5) Aliases — цепочка алиасов, если домен указывает на другой домен через CNAME.

6) Addresses — найденные IP-адреса. Их может быть несколько: для балансировки, CDN, IPv4/IPv6 или геораспределения.

Не стоит автоматически считать несколько IP ошибкой. CDN, балансировщики и отказоустойчивые схемы часто возвращают разные адреса в зависимости от региона, DNS-сервера и политики маршрутизации. В таких случаях полезна проверка сайта из разных точек. На эту тему есть отдельный материал: «Проверка доступности сайта из разных стран».

Если вывод содержит только DNS-сервер, но не содержит нужных записей, проверьте тип запроса. Например, CNAME для корневого домена может отсутствовать, но A при этом есть. Или TXT лежит не на example.com, а на _dmarc.example.com или селекторе DKIM вроде selector1._domainkey.example.com.

Типовые ошибки nslookup и что они означают

Ошибки DNS не всегда говорят о проблеме сайта. Иногда домен не существует, иногда не отвечает конкретный резолвер, иногда авторитетные серверы настроены некорректно.

1) NXDOMAIN

Пример:

** server can't find example.invalid: NXDOMAIN

NXDOMAIN означает, что доменное имя не найдено. Возможные причины: опечатка, несуществующий поддомен, домен не делегирован, запись удалена, ошибка в зоне DNS.

В браузере такая ситуация часто проявляется как DNS_PROBE_FINISHED_NXDOMAIN. Подробный разбор есть в статье «DNS_PROBE_FINISHED_NXDOMAIN».

2) SERVFAIL

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

Если SERVFAIL виден только на одном публичном DNS, сравните ответы через другие серверы. Если он повторяется везде, проверяйте авторитетные NS, DNSSEC и зону у провайдера.

3) REFUSED

DNS-сервер отказался отвечать на запрос. Это может быть нормальной политикой: сервер обслуживает только свою сеть или запрещает рекурсивные запросы.

Для авторитетных серверов REFUSED на чужие рекурсивные запросы не всегда ошибка. Но если сервер должен обслуживать вашу зону и отказывается отдавать записи, нужно проверять конфигурацию.

4) connection timed out

Таймаут означает, что ответа не дождались. Причины: недоступен DNS-сервер, фильтрация UDP/TCP 53, проблемы сети, блокировка фаерволом, временный сбой провайдера.

Если таймаут возникает только с одним DNS-сервером, попробуйте другой. Если таймауты массовые, полезно проверить сеть: ping, tracert/traceroute, mtr, доступность порта 53.

5) No answer или пустой ответ

Иногда домен существует, но записи нужного типа нет. Например, у домена есть A, но нет AAAA; есть MX, но нет CAA; есть TXT на _dmarc.example.com, но нет на корне.

В браузере DNS-проблемы могут выглядеть по-разному. Если имя не резолвится, часто появляется ERR_NAME_NOT_RESOLVED; отдельный чеклист есть в статье «ERR_NAME_NOT_RESOLVED».

Практические сценарии диагностики сайта

nslookup особенно полезен не как абстрактная DNS-команда, а как часть понятной диагностики инцидента.

1) Сайт не открывается после переезда

Проверьте текущий A:

nslookup -type=A example.com

Затем сравните ответы публичных DNS:

nslookup -type=A example.com 8.8.8.8
nslookup -type=A example.com 1.1.1.1

Если один сервер отдаёт старый IP, а другой новый, изменения ещё распространяются или кэш не истёк. Если все отдают старый IP, проверьте DNS-зону и делегирование.

2) Не работает www

Проверьте отдельно корень и www:

nslookup example.com
nslookup www.example.com
nslookup -type=CNAME www.example.com

Частая ошибка: настроили A для example.com, но забыли www.example.com. Или наоборот: www ведёт на CDN, а корень — на старый сервер.

3) Почта уходит в спам или не доставляется

Проверьте MX и TXT:

nslookup -type=MX example.com
nslookup -type=TXT example.com
nslookup -type=TXT _dmarc.example.com

Для DKIM нужно знать селектор. Например:

nslookup -type=TXT selector1._domainkey.example.com

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

4) Пользователь видит ошибку, а у вас всё работает

Попросите пользователя выполнить:

nslookup example.com
nslookup example.com 8.8.8.8

Сравните IP-адреса с вашими. Если у пользователя локальный DNS отдаёт другой ответ, проблема может быть в провайдерском кэше, корпоративном DNS, VPN, фильтрации или локальных настройках.

5) Мониторинг показал падение сайта

Если Statuser или другой сервис мониторинга доступности прислал уведомление о сбое, сначала разделите проблему на уровни: DNS, TCP, TLS, HTTP, приложение. nslookup закрывает первый вопрос: резолвится ли домен и какой IP отдаёт DNS.

Дальше обычно идут ping, traceroute, curl, проверка TLS-сертификата и логов веб-сервера. Для общего алгоритма пригодится материал «Не открывается сайт: пошаговая диагностика».

6) Нужно проверить, что алерт не ложный

DNS иногда даёт кратковременные сбои: один резолвер отвечает SERVFAIL, другой работает, а браузер пользователя уже успел закэшировать ошибку. Поэтому одиночный ручной nslookup не заменяет мониторинг. Удобнее, когда сервис вроде Statuser проверяет сайт с заданным интервалом и присылает уведомление, если проблема повторяется или длится дольше допустимого порога.

nslookup, dig и другие инструменты

nslookup — хороший первый инструмент, особенно в Windows. Но у него есть ограничения.

dig обычно удобнее для глубокого анализа: показывает секции DNS-ответа, флаги, TTL, время запроса, авторитетность, трассировку через +trace. Если вы работаете в Linux или macOS и часто разбираете DNS, стоит освоить dig; подробная инструкция есть в статье «Утилита dig».

Когда выбирать nslookup:

1) Нужно быстро проверить DNS в Windows — команда уже есть в системе, её легко передать пользователю или сотруднику.

2) Нужен простой ответ — какой IP, какие MX, есть ли TXT, что отдаёт конкретный DNS-сервер.

3) Диагностика идёт по телефону или в чате — вывод nslookup короче и понятнее для базовой проверки.

Когда лучше взять dig:

1) Нужно видеть TTL и структуру ответа — в dig это отображается явно и удобнее.

2) Нужно пройти цепочку делегирования — команда dig +trace example.com показывает путь от корневых серверов к авторитетным.

3) Нужно анализировать DNSSEC — dig даёт больше информации о флагах и связанных записях.

Есть и другие инструменты. host хорош для коротких DNS-запросов в Linux. Resolve-DnsName в PowerShell современнее, чем nslookup, и лучше интегрирован в Windows. Онлайн-проверки удобны для взгляда из разных регионов, но для точной диагностики всё равно полезно иметь локальную команду.

Практический подход простой: начинайте с nslookup, если нужно быстро понять факт резолвинга. Переходите к dig, если ответ странный, отличается по серверам или нужно проверить делегирование, TTL, DNSSEC и авторитетные NS.

FAQ

Можно ли проверить DNS-записи через nslookup в Windows?

Да. nslookup встроен в Windows. Откройте PowerShell или cmd и выполните nslookup example.com или nslookup -type=MX example.com.

Почему nslookup показывает старый IP после смены DNS?

Чаще всего из-за DNS-кэша и TTL. Проверьте домен через разные резолверы: 8.8.8.8, 1.1.1.1 и авторитетный DNS-сервер зоны.

Чем nslookup отличается от dig?

nslookup проще и доступен в Windows по умолчанию. dig подробнее показывает DNS-ответ и удобнее для глубокой диагностики, особенно в Linux.

Почему сайт открывается в браузере, а nslookup даёт другой результат?

Браузер может использовать DNS-over-HTTPS, собственный кэш, прокси или VPN. Кроме того, nslookup не учитывает файл hosts так же, как обычные приложения.

Опубликовано 20 октября 202610 минут чтенияГригорий Чалый
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надёжные уведомления о даунтаймах. Без ложных срабатываний