Осваиваем команду nslookup: пошаговое руководство и советы для продвинутых пользователей

2024-12-06 · Обновлено 2026-07-06

nslookup (сокращение от «Name Server Lookup») — это встроенный инструмент командной строки для запросов к серверам DNS (система доменных имён), позволяющий найти IP-адрес домена или доменное имя, стоящее за IP-адресом. Чтобы воспользоваться им, введите nslookup, а затем домен, который вы хотите разрешить. Чаще всего применяется базовый запрос:

nslookup example.com

Команда возвращает IP-адрес (или адреса), на который указывает example.com, а также DNS-сервер, ответивший на запрос. nslookup предустановлен в Windows, macOS и Linux, поэтому он работает «из коробки» в любом терминале или командной строке без какой-либо настройки.

Ту же команду можно расширить для решения наиболее распространённых задач по устранению неполадок DNS:

Задача Команда
Базовый запрос (домен → IP) nslookup example.com
Обратный запрос (IP → домен) nslookup 8.8.8.8
Использовать конкретный DNS-сервер nslookup example.com 8.8.8.8
Найти почтовые серверы (MX) nslookup -type=MX example.com
Найти серверы имён (NS) nslookup -type=NS example.com
Найти TXT-записи (SPF, DKIM, верификация) nslookup -type=TXT example.com

В остальной части руководства каждый из этих случаев разбирается подробно: синтаксис, реальный вывод, интерактивный режим, использование в скриптах и альтернативы, такие как dig и host.

Введение

В обширном и взаимосвязанном мире интернета система доменных имён (DNS) играет ключевую роль в преобразовании понятных человеку доменных имён (например, www.example.com) в понятные машине IP-адреса (такие как 192.0.2.1). Это преобразование необходимо для маршрутизации трафика по сетям и для того, чтобы пользователи могли беспрепятственно получать доступ к сайтам, сервисам и ресурсам.

Когда возникают проблемы с разрешением DNS, сетевым администраторам и ИТ-специалистам нужны надёжные инструменты для диагностики и устранения неполадок. Одним из таких незаменимых инструментов является команда nslookup. Эта утилита позволяет запрашивать DNS-серверы для получения информации о доменных именах, IP-адресах и различных DNS-записях.

Что такое nslookup?

Что означает nslookup

nslookup расшифровывается как Name Server Lookup. Это инструмент командной строки, используемый для запроса DNS-серверов (системы доменных имён) с целью получить информацию о доменных именах, IP-адресах и других DNS-записях. Выполняя DNS-запросы, nslookup помогает пользователям и администраторам диагностировать и решать проблемы, связанные с DNS.

Роль nslookup в диагностике сети

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

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

Предоставляя подробные сведения о DNS-запросах и ответах, nslookup даёт пользователям возможность эффективно выявлять и устранять проблемы с DNS.

Чем nslookup отличается от других инструментов DNS

Хотя nslookup — мощный инструмент, он не единственная доступная утилита DNS. Среди других заметных инструментов:

  • dig (Domain Information Groper): предлагает более детальные и гибкие параметры запроса по сравнению с nslookup. Многие сетевые администраторы предпочитают его за исчерпывающий вывод.
  • host: более простая утилита для выполнения DNS-запросов, идеальная для быстрых запросов без объёмного вывода.

По сравнению с этими инструментами nslookup часто считают более удобным для базовых DNS-запросов, особенно для тех, кто только начинает работать с сетевой диагностикой. Однако для продвинутых запросов и скриптов лучше подойдут такие инструменты, как dig.

История и предыстория

Происхождение nslookup

Команда nslookup появилась на заре интернета как часть набора инструментов BIND (Berkeley Internet Name Domain). Созданная для упрощения DNS-запросов и устранения неполадок, nslookup стала стандартной утилитой в различных операционных системах, включая UNIX, Linux и Windows.

Как инструмент развивался со временем

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

  • интерактивный режим для выполнения нескольких запросов в рамках одной сессии;
  • поддержка запросов различных типов DNS-записей;
  • улучшенная обработка ошибок и более информативные сообщения.

Несмотря на появление альтернативных инструментов, таких как dig, nslookup по-прежнему широко используется благодаря своей простоте и доступности на разных платформах.

Текущее состояние и поддержка в разных операционных системах

Сегодня nslookup — повсеместно распространённый инструмент, доступный в большинстве операционных систем, включая:

  • Windows: предустановлен как часть операционной системы.
  • macOS: входит в состав сетевых утилит системы.
  • Linux/UNIX: доступен по умолчанию или через менеджеры пакетов в составе утилит DNS.

Постоянное присутствие на всех платформах делает nslookup основным инструментом для диагностики DNS в самых разных вычислительных средах.

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

Понимание базового синтаксиса команды nslookup крайне важно для эффективного использования её возможностей. Общая структура выглядит так:

nslookup [options] [hostname] [DNS server]

Разбор компонентов команды

  • nslookup: сама команда.
  • [options]: необязательные флаги, изменяющие поведение команды.
  • [hostname]: доменное имя или IP-адрес, который вы хотите запросить.
  • [DNS server]: (необязательно) указывает DNS-сервер, который следует использовать для запроса. Если он не указан, используется системный DNS-сервер по умолчанию.

Примеры простых команд nslookup

  1. Базовый запрос по имени хоста:

    nslookup www.example.com
    

    Получает IP-адрес, связанный с www.example.com, используя DNS-сервер по умолчанию.

  2. Обратный запрос по IP:

    nslookup 93.184.216.34
    

    Находит имя хоста, связанное с IP-адресом 93.184.216.34.

  3. Указание DNS-сервера:

    nslookup www.example.com 8.8.8.8
    

    Запрашивает у публичного DNS-сервера Google (8.8.8.8) IP-адрес www.example.com.

Распространённые примеры использования

Команда nslookup универсальна и предлагает различные возможности для получения разных типов информации о DNS. Ниже приведены некоторые распространённые сценарии с примерами команд и пояснениями.

Запрос DNS-записей

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

  • A (Address): сопоставляет домену IPv4-адрес.
  • AAAA (IPv6 Address): сопоставляет домену IPv6-адрес.
  • MX (Mail Exchange): указывает почтовый сервер, отвечающий за приём электронной почты для домена.
  • CNAME (Canonical Name): псевдоним, указывающий с одного домена на другой.

Примеры команд:

  1. Получить A-запись:

    nslookup -type=A www.example.com
    

    Извлекает IPv4-адрес для www.example.com.

  2. Получить MX-запись:

    nslookup -type=MX example.com
    

    Получает почтовые серверы для example.com.

  3. Получить CNAME-запись:

    nslookup -type=CNAME blog.example.com
    

    Находит каноническое имя (псевдоним) для blog.example.com.

Ожидаемый вывод:

Для запроса MX-записи:

example.com     MX preference = 10, mail exchanger = mail.example.com

Это означает, что mail.example.com является почтовым сервером для example.com со значением приоритета 10.

Обратные DNS-запросы

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

Пример команды:

nslookup 93.184.216.34

Ожидаемый вывод:

34.216.184.93.in-addr.arpa    name = www.example.com

Этот вывод показывает, что IP-адрес 93.184.216.34 разрешается в имя хоста www.example.com.

Указание DNS-серверов

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

Пример команды:

nslookup www.example.com 8.8.8.8

Пояснение:

Эта команда запрашивает у публичного DNS-сервера Google (8.8.8.8) IP-адрес www.example.com вместо того, чтобы использовать системный DNS-сервер по умолчанию.

Пример вывода:

Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    www.example.com
Address: 93.184.216.34

Расширенные возможности

Помимо базовых запросов, nslookup предлагает расширенные возможности, которые делают его полезнее для комплексного анализа DNS и использования в скриптах.

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

Интерактивный режим позволяет вводить несколько команд в рамках одной сессии nslookup, что упрощает более эффективное исследование DNS.

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

Просто введите nslookup без аргументов:

nslookup

Пример взаимодействия:

Default Server:  resolver1.example.com
Address:  192.0.2.53

> set type=MX
> example.com
Server:  resolver1.example.com
Address:  192.0.2.53

example.com     MX preference = 10, mail exchanger = mail.example.com
> exit

Распространённые команды интерактивного режима:

  • set type=[record type]: задаёт тип DNS-записи для запроса (например, A, MX, CNAME).
  • server [DNS server]: меняет DNS-сервер, используемый для запросов в рамках сессии.
  • exit: выход из интерактивного режима.

Задание типов запросов

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

Синтаксис:

nslookup -type=[record type] [hostname]

Примеры команд:

  1. Запрос AAAA-записи:

    nslookup -type=AAAA www.example.com
    

    Извлекает IPv6-адрес для www.example.com.

  2. Запрос TXT-записи:

    nslookup -type=TXT example.com
    

    Получает TXT-записи, связанные с example.com, — они часто используются для SPF, DKIM и подтверждения владения доменом.

  3. Запрос NS-записи:

    nslookup -type=NS example.com
    

    Выводит авторитетные серверы имён, отвечающие за example.com, что полезно для проверки делегирования и диагностики проблем распространения после изменения DNS.

    Пример вывода:

    example.com     nameserver = a.iana-servers.net
    example.com     nameserver = b.iana-servers.net
    

Использование nslookup в скриптах

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

Пример: скрипт пакетного DNS-запроса (Bash)

#!/bin/bash

# Список доменов для запроса
domains=("example.com" "google.com" "nonexistentdomain.xyz")

# DNS-сервер для использования
dns_server="8.8.8.8"

# Цикл по каждому домену и выполнение запроса A-записи
for domain in "${domains[@]}"; do
    echo "Querying A record for $domain using DNS server $dns_server"
    nslookup -type=A "$domain" "$dns_server"
    echo "----------------------------------------"
done

Пояснение:

Этот скрипт перебирает список доменов, выполняя для каждого запрос A-записи через указанный DNS-сервер (8.8.8.8). Вывод содержит IP-адреса, связанные с каждым доменом, что упрощает массовый анализ DNS.

Альтернативы nslookup

Хотя nslookup — широко используемая утилита DNS, существует несколько альтернативных инструментов с иными возможностями и преимуществами. Знание этих альтернатив даёт больше вариантов для запросов и диагностики DNS.

dig

Обзор команды dig

dig (Domain Information Groper) — это гибкий и мощный инструмент для DNS-запросов, часто используемый в средах UNIX и Linux. Он предоставляет подробную информацию о DNS-ответах, за что его любят сетевые администраторы, которым нужен глубокий анализ DNS.

Сравнение dig и nslookup

  • Детальность вывода: dig даёт более подробный и структурированный вывод по сравнению с nslookup, что полезно при сложном устранении неполадок.
  • Гибкость: dig позволяет тоньше управлять параметрами запроса и поддерживает дополнительные опции для его настройки.
  • Скрипты: dig часто предпочитают для скриптов из-за единообразного и легко разбираемого формата вывода.

Пример команды dig:

dig www.example.com MX

Пример вывода:

; <<>> DiG 9.20.4-Ubuntu <<>> www.example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.example.com.        IN      MX

;; ANSWER SECTION:
www.example.com.  3600    IN      MX      10 mail.example.com.
www.example.com.  3600    IN      MX      20 mail2.example.com.

host

Знакомство с командой host

Команда host — это простая утилита для выполнения DNS-запросов. Она рассчитана на выдачу понятных и лаконичных результатов, что делает её идеальной для быстрых проверок и получения базовой информации о DNS.

Когда host предпочтительнее

  • Быстрые DNS-запросы: когда нужно выполнить быстрый запрос без подробной информации.
  • Простота: для тех, кто предпочитает минималистичный вывод без дополнительных деталей, которые дают такие инструменты, как dig.
  • Скрипты: подходит для скриптов, где нужна только основная информация.

Пример команды host:

host -t TXT example.com

Пример вывода:

example.com descriptive text "v=spf1 include:_spf.example.com ~all"

Другие инструменты

Помимо dig и host, есть несколько других инструментов DNS, которые в зависимости от задачи могут дополнить или заменить nslookup.

whois

whois — это протокол и утилита командной строки для запроса баз данных, в которых хранятся сведения о зарегистрированных владельцах интернет-ресурсов, таких как доменные имена и IP-адреса. Она предоставляет информацию о владельце домена, регистрационных данных и контактах.

Сценарий использования:

  • Информация о регистрации домена: чтобы узнать, кому принадлежит тот или иной домен, и его контактные данные.

Пример команды:

whois example.com

tcpdump

tcpdump — это мощный анализатор сетевых пакетов, который захватывает и отображает сетевой трафик. Хотя это не сугубо DNS-инструмент, его можно использовать для мониторинга DNS-запросов и ответов в реальном времени, что помогает при устранении сетевых неполадок и анализе безопасности.

Сценарий использования:

  • Мониторинг DNS-трафика: для наблюдения за характером DNS-запросов и обнаружения аномалий или вредоносной активности.

Пример команды:

tcpdump -i eth0 port 53

Wireshark

Wireshark — это графический анализатор сетевых протоколов, дающий подробное представление о сетевом трафике, включая обмен DNS. Он предлагает удобный интерфейс для захвата, фильтрации и анализа DNS-пакетов.

Сценарий использования:

  • Подробный анализ DNS: для углублённого изучения обмена DNS и поведения протокола.

Часто задаваемые вопросы (FAQ)

Для чего используется команда nslookup?

nslookup — это инструмент сетевого администрирования, используемый для запросов к системе доменных имён (DNS) с целью получить информацию о сопоставлении доменных имён и IP-адресов, а также о других DNS-записях. Он помогает пользователям и администраторам устранять проблемы, связанные с DNS, показывая, как разрешаются доменные имена.

В каких операционных системах доступен nslookup?

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

  • Windows: предустановлен как часть операционной системы.
  • macOS: входит в состав сетевых утилит системы.
  • Linux/UNIX: доступен по умолчанию или через менеджеры пакетов в составе утилит DNS.

Широкая доступность делает его универсальным инструментом для самых разных сред.

Как выполнить обратный DNS-запрос с помощью nslookup?

Обратный DNS-запрос позволяет найти имя хоста, связанное с заданным IP-адресом. Чтобы выполнить его с помощью nslookup, просто введите IP-адрес в качестве запроса. Например:

nslookup 93.184.216.34

Пример вывода:

34.216.184.93.in-addr.arpa    name = www.example.com

Этот вывод показывает, что IP-адрес 93.184.216.34 разрешается в имя хоста www.example.com.

Как указать другой DNS-сервер при использовании nslookup?

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

nslookup www.example.com 8.8.8.8

Эта команда запрашивает у публичного DNS-сервера Google (8.8.8.8) IP-адрес www.example.com.

Какие типы DNS-записей можно запрашивать с помощью nslookup?

nslookup поддерживает запрос различных типов DNS-записей, в том числе:

  • A (Address): сопоставляет домену IPv4-адрес.
  • AAAA (IPv6 Address): сопоставляет домену IPv6-адрес.
  • MX (Mail Exchange): указывает почтовый сервер, отвечающий за приём электронной почты для домена.
  • CNAME (Canonical Name): псевдоним, указывающий с одного домена на другой.
  • TXT (Text): содержит произвольные текстовые данные, часто используемые для подтверждения владения и в целях безопасности.
  • NS (Name Server): указывает авторитетные DNS-серверы для домена.

Чтобы запросить конкретный тип записи, используйте опцию -type, за которой следует тип записи. Например:

nslookup -type=MX example.com

Как изменить тип запроса в nslookup?

Изменение типа запроса позволяет извлекать конкретные DNS-записи. Используйте опцию -type (или -query), за которой следует нужный тип записи. Например, чтобы запросить MX-записи для example.com:

nslookup -type=MX example.com

Пример вывода:

example.com     MX preference = 10, mail exchanger = mail.example.com
example.com     MX preference = 20, mail exchanger = mail2.example.com

Этот вывод показывает почтовые серверы, связанные с example.com, вместе с их значениями приоритета.

Можно ли использовать nslookup в скриптах для автоматизации DNS-запросов?

Да, nslookup можно встроить в скрипты для автоматизации DNS-запросов. Это полезно для пакетной обработки, мониторинга DNS-записей или регулярных проверок. Ниже приведён пример простого Bash-скрипта, который использует nslookup для получения A-записей по списку доменов:

#!/bin/bash

# Список доменов для запроса
domains=("example.com" "google.com" "nonexistentdomain.xyz")

# DNS-сервер для использования
dns_server="8.8.8.8"

# Цикл по каждому домену и выполнение запроса A-записи
for domain in "${domains[@]}"; do
    echo "Querying A record for $domain using DNS server $dns_server"
    nslookup -type=A "$domain" "$dns_server"
    echo "----------------------------------------"
done

Пояснение:

Этот скрипт перебирает список доменов, выполняя для каждого запрос A-записи через указанный DNS-сервер (8.8.8.8). Вывод содержит IP-адреса, связанные с каждым доменом, что упрощает массовый анализ DNS.

В чём разница между nslookup и dig?

И nslookup, и dig — инструменты для DNS-запросов, но между ними есть отличия:

  • Детальность вывода: dig даёт более подробный и структурированный вывод, что удобно для детального анализа DNS. nslookup предлагает более лаконичный вывод, подходящий для базовых запросов.
  • Гибкость: dig позволяет тоньше управлять параметрами запроса и поддерживает дополнительные опции для его настройки.
  • Скрипты: dig часто предпочитают для скриптов из-за единообразного и легко разбираемого формата вывода.
  • Доступность: nslookup чаще доступен по умолчанию в различных операционных системах, тогда как dig на некоторых платформах может потребовать отдельной установки.

Пример команды dig:

dig www.example.com MX

Пример вывода dig:

; <<>> DiG 9.20.4-Ubuntu <<>> www.example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.example.com.        IN      MX

;; ANSWER SECTION:
www.example.com.  3600    IN      MX      10 mail.example.com.
www.example.com.  3600    IN      MX      20 mail2.example.com.

Как войти в интерактивный режим в nslookup?

Интерактивный режим позволяет выполнять несколько DNS-запросов в рамках одной сессии nslookup. Чтобы войти в него, просто введите nslookup без аргументов и нажмите Enter:

nslookup

Пример взаимодействия:

Default Server:  resolver1.example.com
Address:  192.0.2.53

> set type=MX
> example.com
Server:  resolver1.example.com
Address:  192.0.2.53

example.com     MX preference = 10, mail exchanger = mail.example.com
> exit

Распространённые команды интерактивного режима:

  • set type=[record type]: задаёт тип DNS-записи для запроса (например, A, MX, CNAME).
  • server [DNS server]: меняет DNS-сервер, используемый для запросов в рамках сессии.
  • exit: выход из интерактивного режима.

Что делать, если nslookup возвращает ошибку или не отвечает?

Если nslookup возвращает ошибку или не получает ответа, попробуйте следующие шаги по устранению неполадок:

  • Проверьте подключение к интернету: убедитесь, что ваше устройство подключено к интернету.
  • Проверьте доступность DNS-сервера: запрашиваемый DNS-сервер может быть отключён или недоступен. Попробуйте указать другой DNS-сервер.
  • Проверьте правильность доменного имени: убедитесь, что введённое доменное имя написано верно и существует.
  • Проверьте настройки брандмауэра: брандмауэры или защитное ПО могут блокировать DNS-запросы.
  • Изучите сообщения об ошибках: обратите внимание на конкретные сообщения об ошибках, которые возвращает nslookup (например, «Server failed», «NXDOMAIN»), чтобы определить проблему.
  • Используйте альтернативные инструменты: попробуйте другие инструменты DNS, такие как dig или host, — возможно, они дадут иной результат.

Пример ошибки и её решения:

nslookup nonexistentdomain.xyz

Возможный вывод:

** server can't find nonexistentdomain.xyz: NXDOMAIN

Решение:

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