Пинг есть, сайта нет. Классика. Именно в такие моменты системный администратор открывает терминал и начинает копать 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 |
|---|---|---|
| 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:
- Сначала проверяем через системный DNS (
nslookup domain.com) - Затем через внешний (
nslookup domain.com 8.8.8.8) - Затем через авторитетный сервер домена напрямую
- Сравниваем результаты — разница укажет на проблему
DNS — не магия. Это просто иерархическая база данных с кешированием. nslookup и dig дают прямой доступ к этой базе данных, и большинство проблем решаются за несколько запросов.
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →



