Общеизвестно, 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
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. Простой инструмент, который есть везде и работает одинаково.
Запомните три команды:
nslookup example.com— узнать IPnslookup -type=MX example.com— проверить почтуnslookup example.com 8.8.8.8— проверить на конкретном DNS
Остальное — вариации этих трёх.
Если DNS не работает — 90% проблем найдутся за минуту с nslookup. Остальные 10% — это когда DNS работает, а проблема в чём-то другом (и тут поможет ping, traceroute, curl).
Сохраните статью в закладки — в следующий раз не будете гуглить «как проверить MX-запись» в третий раз за неделю.
Следующая шпаргалка: dig — продвинутая диагностика DNS для Linux.



