NSLOOKUP: шпаргалка IT-инженера с примерами для Windows и Linux

шпаргалка IT-инженера с примерами для Windows и Linux

Общеизвестно, nslookup — это инструмент для проверки DNS. Домен не резолвится? Почта не доходит? DNS-сервер глючит? Запускаешь nslookup и за 30 секунд находишь проблему.

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

Когда это использовать

Реальные кейсы:

  • Сайт не открывается — проверяем, резолвится ли домен в IP
  • Почта не доходит — смотрим MX-записи
  • Мигрировали на новый сервер — проверяем, обновился ли DNS
  • Настроили DNS-сервер — тестируем, отвечает ли он правильно
  • Проблемы с CDN — смотрим CNAME-записи
  • Подозрение на DNS-отравление — сравниваем ответы разных DNS-серверов

Типовые ситуации:

  • Нужно узнать IP-адрес домена
  • Проверить почтовые серверы (MX)
  • Найти авторитетные DNS-серверы (NS)
  • Посмотреть все DNS-записи сразу (ANY)
  • Проверить обратное разрешение (PTR)
  • Выполнить запрос к конкретному DNS-серверу

Ошибки новичков:

  • Запускают nslookup, видят «Non-authoritative answer» и паникуют — это нормально
  • Не указывают тип записи — получают только A-запись вместо MX
  • Проверяют DNS через ISP-сервер вместо авторитетного
  • Забывают про TTL — изменения в DNS ещё не распространились
  • Путают nslookup с ping — это разные инструменты

Быстрый старт

Узнать IP по домену (самый частый случай):


# Windows / Linux / macOS
nslookup google.com

Проверить MX-записи (почтовые серверы):


nslookup -type=MX gmail.com

Узнать домен по IP (обратный запрос):


nslookup 8.8.8.8

Запросить конкретный DNS-сервер:


nslookup google.com 8.8.8.8

Интерактивный режим (для серии запросов):


nslookup
> set type=MX
> google.com
> exit

Основной синтаксис

Базовый формат команды


nslookup [опции] [домен] [DNS-сервер]

Примеры:


# Простейший запрос
nslookup example.com

# Запрос с указанием типа
nslookup -type=MX example.com

# Запрос к конкретному DNS
nslookup example.com 8.8.8.8

# Запрос типа с указанием DNS
nslookup -type=NS example.com 1.1.1.1

Разница синтаксиса Windows vs Linux

Windows:


nslookup -type=MX example.com

Linux:


nslookup -type=MX example.com
# ИЛИ
nslookup -query=MX example.com

В большинстве случаев синтаксис одинаковый, но на Linux иногда используется -query вместо -type.

Типы DNS-записей (type)

A — IPv4 адрес (по умолчанию)

Преобразует доменное имя в IPv4-адрес.


nslookup google.com

# Или явно указываем тип
nslookup -type=A google.com

Вывод:


Server:  192.168.1.1
Address: 192.168.1.1#53

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

AAAA — IPv6 адрес

Преобразует домен в IPv6-адрес.


nslookup -type=AAAA google.com

Вывод:


Non-authoritative answer:
Name:    google.com
Address: 2a00:1450:4010:c0e::71

MX — Почтовые серверы

Показывает почтовые серверы для домена. Критично для диагностики проблем с email.


nslookup -type=MX gmail.com

Вывод:


Non-authoritative answer:
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.

Число перед именем сервера — это приоритет (чем меньше, тем выше приоритет).

NS — Авторитетные DNS-серверы

Показывает, какие DNS-серверы отвечают за домен.


nslookup -type=NS google.com

Вывод:


Non-authoritative answer:
google.com      nameserver = ns1.google.com.
google.com      nameserver = ns2.google.com.
google.com      nameserver = ns3.google.com.
google.com      nameserver = ns4.google.com.

CNAME — Каноническое имя (алиас)

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


nslookup -type=CNAME www.github.com

Вывод:


Non-authoritative answer:
www.github.com  canonical name = github.com.

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

Используется для SPF, DKIM, верификации домена и других целей.


nslookup -type=TXT google.com

Вывод:


Non-authoritative answer:
google.com      text = "v=spf1 include:_spf.google.com ~all"
google.com      text = "google-site-verification=..."

PTR — Обратная DNS-запись

Преобразует 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.

SOA — Start of Authority

Информация о зоне DNS: основной сервер, email администратора, серийный номер, TTL.


nslookup -type=SOA google.com

Вывод:


Non-authoritative answer:
google.com
        origin = ns1.google.com
        mail addr = dns-admin.google.com
        serial = 609977242
        refresh = 900
        retry = 900
        expire = 1800
        minimum = 60

ANY — Все доступные записи

ВАЖНО: Многие современные DNS-серверы больше не отвечают на запросы ANY из соображений безопасности.


nslookup -type=ANY google.com

SRV — Service records

Используется для поиска служб (например, SIP, XMPP, LDAP).


nslookup -type=SRV _ldap._tcp.example.com

Основные команды и примеры

Узнать IP-адрес домена


# Простой запрос
nslookup example.com

# Только IPv4
nslookup -type=A example.com

# Только IPv6
nslookup -type=AAAA example.com

# И IPv4, и IPv6
nslookup -type=A example.com && nslookup -type=AAAA example.com

Узнать домен по IP (reverse DNS)


nslookup 142.250.185.46

# Явно указываем PTR
nslookup -type=PTR 142.250.185.46

Проверить почтовые серверы


# MX-записи для домена
nslookup -type=MX example.com

# С указанием конкретного DNS
nslookup -type=MX example.com 8.8.8.8

Найти авторитетные DNS-серверы


nslookup -type=NS example.com

Проверить CNAME (алиасы)


nslookup -type=CNAME www.example.com

Проверить TXT-записи (SPF, DKIM, верификация)


# Все TXT-записи
nslookup -type=TXT example.com

# SPF запись (защита от спама)
nslookup -type=TXT example.com | grep spf

# DKIM запись (подпись email)
nslookup -type=TXT default._domainkey.example.com

# DMARC запись (политика email)
nslookup -type=TXT _dmarc.example.com

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


# Google DNS
nslookup example.com 8.8.8.8

# Cloudflare DNS
nslookup example.com 1.1.1.1

# Quad9 DNS
nslookup example.com 9.9.9.9

# Локальный DNS-сервер
nslookup example.com 192.168.1.1

# Авторитетный DNS для домена
nslookup example.com ns1.example.com

Проверить SOA-запись


nslookup -type=SOA example.com

Полезно для проверки:

  • Serial number (изменился ли после обновления зоны)
  • TTL (время кеширования)
  • Refresh/Retry интервалы

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

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

Вход в интерактивный режим


nslookup

Появится приглашение:


>

Основные команды интерактивного режима


# Установить DNS-сервер
> server 8.8.8.8

# Установить тип записи
> set type=MX

# Выполнить запрос
> google.com

# Изменить тип записи
> set type=A
> google.com

# Включить отладку (подробный вывод)
> set debug

# Выключить отладку
> set nodebug

# Показать текущие настройки
> set all

# Выход
> exit

Практический пример интерактивного режима


nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53

> set type=MX
> gmail.com
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
gmail.com       mail exchanger = 5 gmail-smtp-in.l.google.com.

> set type=A
> gmail.com
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   gmail.com
Address: 142.250.185.37

> exit

Полезные опции и параметры

Опции командной строки

Опция Описание Пример
-type=TYPE Тип DNS-записи (A, MX, NS, TXT и т.д.) nslookup -type=MX gmail.com
-timeout=N Таймаут запроса (секунды) nslookup -timeout=5 example.com
-debug Подробный вывод nslookup -debug example.com
-port=N Порт DNS-сервера (по умолчанию 53) nslookup -port=5353 example.com
-retry=N Количество повторных попыток nslookup -retry=3 example.com

Команды интерактивного режима

Команда Описание
server [адрес] Изменить DNS-сервер
set type=TYPE Установить тип записи
set debug Включить отладку
set nodebug Выключить отладку
set timeout=N Установить таймаут
set retry=N Количество повторов
set recurse Включить рекурсивные запросы
set norecurse Выключить рекурсивные запросы
set all Показать все настройки
exit Выход из интерактивного режима

Диагностика проблем с DNS

Проблема: Домен не резолвится

Симптомы: «can’t find domain», «NXDOMAIN», «Non-existent domain»

Диагностика:


# Проверяем на разных DNS
nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1
nslookup example.com

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

# Проверяем SOA (существует ли зона)
nslookup -type=SOA example.com

Возможные причины:

  • Домен не зарегистрирован
  • DNS-серверы не настроены у регистратора
  • Зона не загружена на DNS-сервер
  • Опечатка в имени домена

Проблема: Старый IP-адрес в кеше

Симптомы: Изменили A-запись, но nslookup показывает старый IP

Диагностика:


# Запрашиваем авторитетный DNS напрямую
nslookup -type=NS example.com
# Получаем список NS-серверов, например ns1.example.com

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

# Сравниваем с кешированным ответом
nslookup example.com 8.8.8.8

Решение:

  • Подождать TTL (время жизни записи)
  • Очистить DNS-кеш на клиенте

# Windows
ipconfig /flushdns

# Linux (systemd-resolved)
sudo systemd-resolve --flush-caches

# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Проблема: Почта не доходит

Диагностика MX-записей:


# Проверяем MX
nslookup -type=MX example.com

# Проверяем, резолвятся ли почтовые серверы
nslookup mail.example.com

# Проверяем SPF (защита от спуфинга)
nslookup -type=TXT example.com | grep spf

# Проверяем DMARC
nslookup -type=TXT _dmarc.example.com

Что должно быть:

  • MX-записи существуют
  • Почтовые серверы резолвятся в IP
  • SPF-запись настроена
  • DMARC-политика установлена (опционально)

Проблема: Разные ответы от разных DNS

Симптомы: Google DNS показывает один IP, локальный DNS — другой

Диагностика:


# Сравниваем ответы
nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1
nslookup example.com 192.168.1.1

# Проверяем TTL на авторитетном сервере
nslookup -debug -type=A example.com ns1.example.com 2>&1 | grep -i ttl

Возможные причины:

  • DNS-записи недавно изменились (разное время кеширования)
  • GeoDNS (разные IP для разных регионов)
  • Проблемы с синхронизацией между DNS-серверами
  • DNS-отравление (редко)

Проблема: Медленное разрешение DNS

Диагностика:


# Linux - замеряем время
time nslookup example.com

# Windows - несколько запросов подряд
nslookup example.com
nslookup example.com
nslookup example.com

# Проверяем с разными DNS
time nslookup example.com 8.8.8.8
time nslookup example.com 1.1.1.1

Решение:

  • Сменить DNS-сервер на более быстрый
  • Проверить сетевое подключение
  • Увеличить timeout если сеть медленная

NSLOOKUP vs другие инструменты

NSLOOKUP vs PING

Разница:

  • ping — проверяет доступность хоста по сети (ICMP)
  • nslookup — проверяет только DNS-разрешение

Пример:


# PING - проверка доступности + резолвинг
ping google.com

# NSLOOKUP - только резолвинг DNS
nslookup google.com

Когда использовать:

  • ping — когда нужно проверить, доступен ли сервер
  • nslookup — когда нужно проверить именно DNS-записи

NSLOOKUP vs DIG

dig (Domain Information Groper) — более мощный инструмент для DNS-запросов, но не установлен по умолчанию на Windows.

Функция nslookup dig
Доступность Везде (Windows, Linux, macOS) Linux/macOS (на Windows нужна установка)
Простота Проще для новичков Больше опций, сложнее
Вывод Читаемый Более детальный, подходит для скриптов
Интерактивный режим Да Нет
Короткий вывод Нет Да (dig +short)

Примеры сравнения:


# nslookup
nslookup google.com

# dig (аналог)
dig google.com

# dig (короткий вывод)
dig +short google.com
# Вывод: 142.250.185.46

Когда использовать nslookup:

  • На Windows-системах
  • Нужна простота и читаемость
  • Интерактивный режим для серии запросов

Когда использовать dig:

  • На Linux-системах
  • Нужен детальный вывод (TTL, флаги)
  • Для автоматизации (скрипты)

NSLOOKUP vs HOST

host — ещё один инструмент для DNS-запросов (Linux/macOS).


# nslookup
nslookup google.com

# host (аналог)
host google.com

# host (краткий вывод)
host -t A google.com

host проще и быстрее для одиночных запросов, но менее функционален.

Практические сценарии

Сценарий 1: Проверка после смены DNS

Вы перенесли сайт на новый хостинг и изменили A-запись. Нужно проверить распространение.


# 1. Проверяем на авторитетном DNS (должно быть новое значение)
nslookup -type=NS example.com
# Получили: ns1.newhosting.com

nslookup example.com ns1.newhosting.com
# Должен быть новый IP

# 2. Проверяем на публичных DNS (может быть старое из-за кеша)
nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1

# 3. Проверяем на локальном DNS
nslookup example.com

# 4. Если везде новый IP - успех. Если нет - ждём TTL.

Сценарий 2: Диагностика проблем с почтой

Почта не доходит до получателей на домене example.com.


# 1. Проверяем MX-записи
nslookup -type=MX example.com

# 2. Проверяем, существуют ли почтовые серверы
nslookup mail.example.com

# 3. Проверяем SPF
nslookup -type=TXT example.com | grep spf

# 4. Проверяем DKIM (если знаем селектор, например "default")
nslookup -type=TXT default._domainkey.example.com

# 5. Проверяем DMARC
nslookup -type=TXT _dmarc.example.com

# 6. Проверяем reverse DNS для почтового сервера
nslookup 203.0.113.10
# Должно быть: mail.example.com

Сценарий 3: Проверка делегирования поддомена

Создали поддомен sub.example.com с отдельными NS-записями.


# 1. Проверяем NS для основного домена
nslookup -type=NS example.com

# 2. Проверяем NS для поддомена
nslookup -type=NS sub.example.com

# 3. Проверяем A-запись на авторитетном NS поддомена
nslookup www.sub.example.com ns1.subdomain-hosting.com

Сценарий 4: Проверка CDN / CNAME

Настроили CloudFlare/Cloudfront и нужно проверить CNAME.


# 1. Проверяем CNAME
nslookup -type=CNAME www.example.com

# Вывод должен показать что-то вроде:
# www.example.com  canonical name = example.cdn.cloudflare.net

# 2. Проверяем итоговый IP
nslookup www.example.com

Сценарий 5: Поиск всех поддоменов (ограниченно)

ВАЖНО: nslookup не может найти все поддомены (для этого нужны специализированные инструменты). Но можно проверить конкретные.


# Проверяем типичные поддомены
nslookup www.example.com
nslookup mail.example.com
nslookup ftp.example.com
nslookup vpn.example.com
nslookup api.example.com
nslookup admin.example.com

Автоматизация и скрипты

Bash-скрипт: массовая проверка доменов


#!/bin/bash
# Проверка списка доменов

DOMAINS="example.com test.com mysite.org"

for domain in $DOMAINS; do
    echo "=== Checking $domain ==="
    nslookup $domain 8.8.8.8 | grep -A 1 "Name:"
    echo ""
done

Bash-скрипт: проверка MX для списка доменов


#!/bin/bash
# Проверка MX-записей

while read domain; do
    echo "=== $domain ==="
    nslookup -type=MX $domain 2>/dev/null | grep "mail exchanger"
    echo ""
done < domains.txt

Файл domains.txt:


gmail.com
yahoo.com
outlook.com

PowerShell-скрипт: проверка DNS на Windows


# Список доменов
$domains = @("google.com", "microsoft.com", "github.com")

foreach ($domain in $domains) {
    Write-Host "=== Checking $domain ===" -ForegroundColor Green
    nslookup $domain 8.8.8.8
    Write-Host ""
}

Скрипт: сравнение DNS-серверов


#!/bin/bash
# Сравнение ответов от разных DNS

DOMAIN=$1
DNS_SERVERS="8.8.8.8 1.1.1.1 9.9.9.9"

if [ -z "$DOMAIN" ]; then
    echo "Usage: $0 domain.com"
    exit 1
fi

for dns in $DNS_SERVERS; do
    echo "=== DNS: $dns ==="
    nslookup $DOMAIN $dns 2>/dev/null | grep "Address:" | tail -1
done

Использование:


chmod +x compare-dns.sh
./compare-dns.sh google.com

Частые ошибки и их решения

Ошибка: «Non-authoritative answer»

Что это значит: Ответ получен не от авторитетного DNS-сервера, а из кеша.

Это нормально? ДА. Это стандартное поведение.

Когда беспокоиться: Только если нужен именно авторитетный ответ (например, сразу после изменения записей).

Решение:


# Запрашиваем авторитетный DNS напрямую
nslookup -type=NS example.com
# Получаем: ns1.example.com

nslookup example.com ns1.example.com
# Теперь ответ authoritative

Ошибка: «Server failed» или «SERVFAIL»

Причины:

  • DNS-сервер не может разрешить запрос
  • Проблемы с DNSSEC
  • Неправильная конфигурация зоны
  • Рекурсия отключена на сервере

Решение:


# Попробуйте другой DNS
nslookup example.com 8.8.8.8

# Проверьте SOA
nslookup -type=SOA example.com

# Проверьте NS-записи
nslookup -type=NS example.com

Ошибка: «Request timed out»

Причины:

  • DNS-сервер недоступен
  • Firewall блокирует порт 53
  • Медленная сеть

Решение:


# Увеличьте timeout
nslookup -timeout=10 example.com

# Попробуйте другой DNS
nslookup example.com 1.1.1.1

# Проверьте доступность DNS-сервера
ping 8.8.8.8

Ошибка: «NXDOMAIN» или «Non-existent domain»

Причины:

  • Домен не существует
  • Опечатка в имени
  • DNS-зона не настроена

Решение:


# Проверьте правильность написания
nslookup example.com

# Проверьте существование зоны
nslookup -type=SOA example.com

# Проверьте NS-записи
nslookup -type=NS example.com

Ошибка: «Unknown host» (Linux/macOS)

Аналог NXDOMAIN на некоторых системах.

Решение: см. NXDOMAIN выше.

Полезные хаки

Быстрая проверка всех типов записей


# Bash one-liner
for type in A AAAA MX NS TXT SOA; do
    echo "=== $type ===";
    nslookup -type=$type example.com 2>/dev/null | grep -v "^$";
    echo "";
done

Alias для частых проверок

Добавьте в ~/.bashrc (Linux) или ~/.zshrc (macOS):


# Быстрая проверка IP
alias nsa='nslookup -type=A'

# Быстрая проверка MX
alias nsmx='nslookup -type=MX'

# Быстрая проверка NS
alias nsns='nslookup -type=NS'

# Проверка через Google DNS
alias nsg='nslookup -type=A'
nsg() { nslookup "$1" 8.8.8.8; }

# Проверка через Cloudflare DNS
alias nscf='nslookup -type=A'
nscf() { nslookup "$1" 1.1.1.1; }

Проверка DNS с человекочитаемым выводом (только IP)


# Linux/macOS
nslookup google.com 8.8.8.8 | grep "Address:" | tail -1 | awk '{print $2}'

# Результат: 142.250.185.46

Проверка нескольких DNS-серверов одной командой


# Bash
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
    echo "DNS: $dns";
    nslookup google.com $dns | grep "Address:" | tail -1;
done

Мониторинг изменений DNS


# Проверка каждые 60 секунд
watch -n 60 'nslookup example.com 8.8.8.8 | grep "Address:"'

Экспорт результатов в файл


# Простой экспорт
nslookup example.com > dns_result.txt

# Детальный отчёт
(
    echo "=== DNS Check Report ==="
    echo "Date: $(date)"
    echo ""
    echo "=== A Record ==="
    nslookup -type=A example.com
    echo ""
    echo "=== MX Records ==="
    nslookup -type=MX example.com
    echo ""
    echo "=== NS Records ==="
    nslookup -type=NS example.com
) > dns_full_report.txt

Установка nslookup (если отсутствует)

Linux

nslookup входит в пакет bind-utils (CentOS/RHEL) или dnsutils (Debian/Ubuntu).


# Debian/Ubuntu
sudo apt update
sudo apt install dnsutils

# CentOS/RHEL/Fedora
sudo yum install bind-utils
# ИЛИ
sudo dnf install bind-utils

# Arch Linux
sudo pacman -S bind-tools

macOS

Установлено по умолчанию. Если нет:


# Через Homebrew
brew install bind

Windows

Установлено по умолчанию во всех версиях Windows.

Краткий чек-лист

Базовая проверка домена:

  • ☐ Проверить A-запись: nslookup example.com
  • ☐ Проверить MX-записи: nslookup -type=MX example.com
  • ☐ Проверить NS-серверы: nslookup -type=NS example.com
  • ☐ Проверить AAAA (IPv6): nslookup -type=AAAA example.com

Проверка почты:

  • ☐ MX-записи существуют и корректны
  • ☐ Почтовые серверы резолвятся
  • ☐ SPF настроен: nslookup -type=TXT example.com | grep spf
  • ☐ DMARC настроен: nslookup -type=TXT _dmarc.example.com

После смены DNS:

  • ☐ Проверка на авторитетном DNS (новое значение)
  • ☐ Проверка на публичных DNS (8.8.8.8, 1.1.1.1)
  • ☐ Проверка на локальном DNS
  • ☐ Очистка DNS-кеша на клиенте
  • ☐ Ожидание TTL для полного распространения

Диагностика проблем:

  • ☐ Проверить на разных DNS-серверах
  • ☐ Проверить авторитетные NS
  • ☐ Проверить SOA-запись
  • ☐ Включить debug-режим для детального вывода
  • ☐ Сравнить с dig/host (если доступны)

Резюме

nslookup — это как стетоскоп для DNS. Простой инструмент, который есть везде и работает одинаково.

Запомните три команды:

  1. nslookup example.com — узнать IP
  2. nslookup -type=MX example.com — проверить почту
  3. nslookup example.com 8.8.8.8 — проверить на конкретном DNS

Остальное — вариации этих трёх.

Если DNS не работает — 90% проблем найдутся за минуту с nslookup. Остальные 10% — это когда DNS работает, а проблема в чём-то другом (и тут поможет ping, traceroute, curl).

Сохраните статью в закладки — в следующий раз не будете гуглить «как проверить MX-запись» в третий раз за неделю.

Следующая шпаргалка: dig — продвинутая диагностика DNS для Linux.

over_dude
Author: over_dude

Поделитесь:

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

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

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