
nslookup — это консольная команда, которая отправляет запрос DNS-серверу и показывает, в какие IP-адреса и записи превращается доменное имя. Она встроена в Windows и macOS, в Linux ставится пакетом с DNS-утилитами. Команда nslookup example.com выводит адрес опрошенного сервера и найденные адреса домена, а с ключом -type= — MX, TXT, NS и другие записи.
Что делает команда nslookup
Название расшифровывается как name server lookup — «запрос к серверу имён». Утилита работает как клиент DNS: формирует запрос, отправляет его на порт 53 выбранного сервера и печатает ответ почти без обработки. Это делает её удобной для диагностики: вы видите не то, что «думает» браузер, а то, что реально отдаёт DNS.
Типичные задачи, которые закрывает nslookup:
- узнать IP-адрес домена и убедиться, что после смены хостинга он уже указывает на новый сервер;
- проверить MX-записи, когда не доходит почта, и TXT-записи с SPF, DKIM, DMARC или кодом подтверждения;
- выяснить, какие NS-серверы обслуживают зону и что отвечает каждый из них;
- сравнить ответ провайдерского DNS с ответом публичного резолвера, например 8.8.8.8 или 77.88.8.8;
- найти имя по IP-адресу — обратный запрос PTR.
Важная деталь для Windows: nslookup обращается к DNS-серверу напрямую и не смотрит в файл hosts и в кэш DNS-клиента системы. Поэтому ping и браузер могут открывать один адрес, а nslookup показывать другой. Это не ошибка утилиты, а подсказка: где-то вмешивается hosts, кэш или прокси. Как устроено разрешение имён целиком, разобрано в статье «Что такое DNS».
Как пользоваться nslookup в Windows
Откройте командную строку: Win+R → cmd → Enter. Подойдёт и PowerShell или Windows Terminal — команда та же. Базовый синтаксис:
nslookup [-параметр...] имя [DNS-сервер]
Проверим домен через DNS-сервер, который выдан системе (обычно это роутер или сервер провайдера):
C:\> nslookup example.com
Сервер: UnKnown
Address: 192.168.1.1
Не заслуживающий доверия ответ:
Имя: example.com
Addresses: 2001:db8::10
203.0.113.10
В англоязычной Windows те же строки выглядят как Server, Non-authoritative answer и Name. Адреса в примере условные — у вашего домена будут свои.
Как читать ответ nslookup
- Сервер / Address — какой DNS-сервер вы спросили.
UnKnownвместо имени значит лишь то, что у IP этого сервера нет PTR-записи. Дома это норма и на результат не влияет. - Имя — полное имя, для которого найден ответ. Если домен задан через CNAME, здесь будет конечное имя, а исходное появится в строке
Aliases. - Address / Addresses — найденные IPv4 (A) и IPv6 (AAAA) адреса. Несколько адресов — обычная балансировка или CDN.
«Не заслуживающий доверия ответ» — это ошибка?
Нет. Так в русской локализации переведено Non-authoritative answer — «неавторитетный ответ». Он означает, что ответил не сервер, который хранит зону домена, а кэширующий резолвер: он сам сходил к авторитетным серверам и вернул сохранённую копию. Данные при этом корректны, просто могут отставать от свежих изменений на время TTL. Чтобы увидеть ответ без кэша, спросите авторитетный сервер домена — как это сделать, показано ниже.
nslookup в Linux и macOS
В macOS команда есть из коробки: откройте «Терминал» и выполните nslookup example.com. В Linux она входит в пакет DNS-утилит BIND и на минимальных установках отсутствует — система ответит nslookup: command not found. Установка:
# Debian, Ubuntu
sudo apt install dnsutils
# RHEL, AlmaLinux, Rocky, Fedora
sudo dnf install bind-utils
# Alpine
apk add bind-tools
Вывод в Linux чуть отличается от Windows:
$ nslookup example.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: example.com
Address: 203.0.113.10
Адрес 127.0.0.53 в Ubuntu — это локальная заглушка systemd-resolved, а не внешний сервер. Чтобы понять, куда она пересылает запросы, выполните resolvectl status или сразу укажите внешний DNS вторым аргументом nslookup. После # печатается порт — 53 для обычного DNS.
Запрос к конкретному DNS-серверу
Второй аргумент команды — сервер, которому уходит вопрос. Это главный приём диагностики: один и тот же домен проверяется через разные резолверы, и расхождение сразу показывает, где проблема.
nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1
nslookup example.com 77.88.8.8
Если через 8.8.8.8 домен находится, а через DNS провайдера — нет, дело в резолвере провайдера или в его кэше. Если не находится нигде, проблема в самой зоне: ошибка в записях, не делегированный домен, истёкшая регистрация. Какие публичные резолверы стоит использовать для сравнения, собрано в обзоре лучших публичных DNS-серверов.
Так же работают инструкции вида «выполните nslookup такого-то хоста через 9.9.9.9»: это обычная проверка того, во что резолвится имя через публичный DNS Quad9.
Как получить авторитетный ответ
Сначала узнайте NS-серверы зоны, затем спросите один из них напрямую:
nslookup -type=ns example.com
nslookup example.com ns1.example-dns.net
В ответе авторитетного сервера строки «Не заслуживающий доверия ответ» не будет. Если здесь уже стоит новый IP, а публичные резолверы отдают старый, остаётся дождаться истечения TTL — с записью всё в порядке, она ещё не обновилась в кэшах.
Типы записей: nslookup -type=mx, txt, ns, soa
По умолчанию nslookup запрашивает адреса A и AAAA. Нужный тип задаётся параметром -type= (синонимы — -query= и -q=):
| Запись | Команда | Когда нужна |
|---|---|---|
| A / AAAA | nslookup example.com | IP-адрес сайта, проверка после переноса |
| MX | nslookup -type=mx example.com | Куда доставляется почта домена |
| TXT | nslookup -type=txt example.com | SPF, коды подтверждения Яндекса, Google и других сервисов |
| DMARC | nslookup -type=txt _dmarc.example.com | Политика DMARC |
| DKIM | nslookup -type=txt selector._domainkey.example.com | Публичный ключ подписи; селектор даёт почтовый сервис |
| NS | nslookup -type=ns example.com | Какие серверы обслуживают зону |
| SOA | nslookup -type=soa example.com | Главный сервер зоны, serial, таймеры |
| CNAME | nslookup -type=cname www.example.com | Псевдоним: куда указывает поддомен |
| PTR | nslookup 203.0.113.10 | Имя по IP, обратная зона почтового сервера |
Пример ответа на запрос MX в Windows:
example.com MX preference = 10, mail exchanger = mx1.example.com
example.com MX preference = 20, mail exchanger = mx2.example.com
Меньшее значение preference — более приоритетный сервер. В Linux та же информация выглядит как mail exchanger = 10 mx1.example.com. Подробный разбор проверки почтовых записей — в статье «Как проверить MX-запись домена».
Запрос -type=any лучше не использовать для проверки: многие серверы по RFC 8482 отвечают на него сокращённо, и отсутствие записи в выдаче ничего не доказывает. Спрашивайте каждый тип отдельно.
Как узнать домен по IP-адресу
Если передать nslookup IP-адрес вместо имени, утилита сама выполнит обратный запрос PTR:
C:\> nslookup 8.8.8.8
Сервер: UnKnown
Address: 192.168.1.1
Имя: dns.google
Address: 8.8.8.8
Ответ показывает имя, которое владелец IP прописал в обратной зоне. Это не список сайтов на сервере: на одном адресе могут жить сотни доменов, а PTR у него один. Для почтового сервера PTR обязателен — без него письма часто уходят в спам или отклоняются. Если записи нет, nslookup сообщит Non-existent domain.
Интерактивный режим nslookup
Если запустить nslookup без аргументов, откроется приглашение >, где можно менять настройки и задавать вопросы подряд, не повторяя параметры:
C:\> nslookup
> server 8.8.8.8
> set type=mx
> example.com
> set type=txt
> _dmarc.example.com
> set debug
> example.com
> exit
Полезные команды интерактивного режима:
server адрес— сменить DNS-сервер для следующих запросов;set type=тип— тип записи (mx, txt, ns, soa, a, aaaa, cname, ptr);set debug— подробный вывод: полный пакет ответа, флаги и TTL каждой записи;set timeout=10иset retry=3— ожидание ответа в секундах и число повторов;set vc— отправлять запросы по TCP вместо UDP;exit— выход.
Команда ls в Windows пытается выгрузить всю зону через передачу AXFR. Нормально настроенные серверы отвечают отказом, и это правильно: открытая передача зоны раскрывает все поддомены.
Режим debug удобен для проверки TTL: в выводе видно, сколько секунд запись ещё будет жить в кэше резолвера. Те же параметры работают и в одну строку: nslookup -debug -type=mx example.com 8.8.8.8.
Ошибки nslookup и что они значат
Non-existent domain / NXDOMAIN
В Windows: *** UnKnown не удалось найти example.invalid: Non-existent domain, в Linux: ** server can't find example.invalid: NXDOMAIN. Сервер уверенно сообщает, что такого имени нет. Причины: опечатка, домен не зарегистрирован или снят с делегирования, поддомен не создан. Проверьте имя, затем повторите запрос через 8.8.8.8 и авторитетный сервер — если NXDOMAIN везде, ищите причину в зоне и у регистратора.
DNS request timed out
DNS request timed out. timeout was 2 seconds. — сервер не ответил за отведённые 2 секунды. В Linux аналог: ;; connection timed out; no servers could be reached. Проверьте, доступен ли сервер вообще (ping 8.8.8.8), не блокирует ли файрвол или антивирус исходящий UDP на порт 53, и повторите запрос с другим сервером. Если таймаут только у одного резолвера, проблема в нём. Разбор этой ситуации — в статье «Сайт не открывается из-за DNS».
SERVFAIL
server can't find example.com: SERVFAIL означает, что резолвер не смог получить ответ от авторитетных серверов. Частые причины — недоступные или неправильно указанные NS-серверы и сломанная подпись DNSSEC. Запросите SOA и NS домена у разных резолверов: если SERVFAIL стабильно воспроизводится, проблема на стороне DNS-хостинга домена.
Нет записей нужного типа
Сообщение No internal type for both IPv4 and IPv6 Addresses (A+AAAA) records available или ответ без адресов значит, что имя существует, но записей запрошенного типа у него нет. Например, у домена настроена только почта, а A-записи для сайта нет.
Странные запросы с лишним суффиксом
В корпоративной сети Windows дописывает к короткому имени DNS-суффикс домена, и в режиме debug видны запросы вроде example.com.corp.local. Поставьте точку в конце имени — nslookup example.com. — и суффикс добавляться не будет.
nslookup, dig и Resolve-DnsName: что выбрать
nslookup есть везде, но это не единственный инструмент. Сравнение с альтернативами:
| Задача | nslookup | dig (Linux, macOS) | Resolve-DnsName (PowerShell) |
|---|---|---|---|
| Адрес домена | nslookup example.com | dig example.com +short | Resolve-DnsName example.com |
| MX через 8.8.8.8 | nslookup -type=mx example.com 8.8.8.8 | dig @8.8.8.8 example.com MX | Resolve-DnsName example.com -Type MX -Server 8.8.8.8 |
| Обратный запрос | nslookup 8.8.8.8 | dig -x 8.8.8.8 | Resolve-DnsName 8.8.8.8 |
| TTL в выводе | только с -debug | всегда | всегда (колонка TTL) |
| Путь от корня | нет | dig +trace example.com | нет |
| Учитывает hosts и кэш | нет | нет | да; -DnsOnly отключает |
Практическое правило: nslookup — для быстрой проверки на любой машине, dig — когда нужны флаги ответа, TTL и трассировка делегирования, Resolve-DnsName — в скриптах PowerShell, где результат удобно обрабатывать как объекты. Полная справка по параметрам — в документации Microsoft по nslookup, формат сообщений DNS описан в RFC 1035.
ping, tracert и nslookup: что чем проверять
Эти три команды часто просят выполнить вместе, и у каждой своя зона ответственности. nslookup отвечает на вопрос «во что превращается имя». ping — «отвечает ли узел и с какой задержкой». tracert (в Linux и macOS — traceroute) — «через какие маршрутизаторы идут пакеты и где они теряются». Порядок диагностики обычно такой: сначала nslookup, чтобы убедиться, что имя разрешается в правильный адрес, потом ping по этому адресу, потом tracert, если узел не отвечает. Как разбирать вывод трассировки, описано в статье «Traceroute: как читать вывод».
Если nslookup показывает новый адрес, а браузер упорно открывает старый сайт, очистите локальный кэш: ipconfig /flushdns в Windows, sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder в macOS.
Как проверить DNS онлайн без командной строки
Командная строка показывает ответ только той сети, где вы сидите. Чтобы посмотреть записи со стороны или проверить домен с телефона, используйте онлайн-проверку:
- DNS Lookup — nslookup online: A, AAAA, MX, NS, TXT, CNAME и SOA домена одним запросом;
- Проверка распространения DNS — сравнивает ответы публичных резолверов в разных странах и показывает, где ещё виден старый адрес;
- Ping — доступность узла, когда адрес уже найден.
Частые вопросы
Чем nslookup отличается от ping?
nslookup только спрашивает DNS и показывает ответ, к самому сайту он не подключается. ping разрешает имя через системный резолвер с учётом hosts и кэша, а затем проверяет, отвечает ли узел на ICMP.
Почему nslookup показывает один IP, а сайт открывается с другого?
В Windows nslookup не читает файл hosts и кэш DNS-клиента. Проверьте hosts, выполните ipconfig /flushdns и убедитесь, что браузер не использует собственный DNS over HTTPS.
Как проверить DNS-сервер через nslookup?
Укажите его вторым аргументом: nslookup example.com 192.168.1.1. Если ответ приходит быстро и совпадает с ответом 8.8.8.8, сервер работает; таймаут или пустой ответ указывают на проблему с ним.
Что значит Server: UnKnown?
Что у IP-адреса DNS-сервера нет PTR-записи, поэтому nslookup не может показать его имя. На работу DNS это не влияет.
Как узнать TTL записи через nslookup?
Добавьте параметр -debug: nslookup -debug example.com. В блоке ANSWERS у каждой записи будет строка с TTL в секундах.
Есть ли nslookup для телефона?
Встроенной команды на Android и iOS нет. Проще проверить домен через онлайн-сервис DNS Lookup — результат будет тем же, что у nslookup через публичный резолвер.