Использование NSLOOKUP для диагностики DNS-сервера
Протокол DNS существует уже несколько десятилетий и является стабильным и надежным протоколом. Тем не менее, у DNS иногда возникают проблемы. Эти проблемы могут быть связаны с потерей подключения, недействительной записью DNS или рядом других проблем. Когда DNS-сервер ведет себя не так, как ожидается, многие люди обращаются за помощью к команде PING. PING — отличный инструмент для диагностики DNS-сервера, и я довольно часто использую его сам. Однако иногда PING просто не дает вам достаточно информации о проблеме. Если вам нужно больше информации о проблеме с DNS, чем та, которую предоставляет вам PING, вы всегда можете обратиться к команде NSLOOKUP. NSLOOKUP — это встроенная утилита диагностики DNS, доступная как администраторам Windows, так и UNIX. В этой статье я покажу вам, как использовать NSLOOKUP.
Основы
NSLOOKUP имеет довольно богатый синтаксис и может немного сбивать с толку тех, кто мало работал с DNS. Поэтому я хочу начать с того, что покажу вам некоторые основы. Хотя NSLOOKUP существует как в UNIX, так и в Windows, существуют некоторые различия в его поведении в этих двух операционных системах. Для целей этой статьи я буду использовать версию для Windows.
Первое, что вам нужно понять о NSLOOKUP, это то, что когда вы используете команду NSLOOKUP, предполагается, что вы запрашиваете локальный домен в вашей частной сети. Вы можете запросить внешний домен, но NSLOOKUP попытается сначала найти домен внутри. Например, домен brienposey.com является внешним по отношению к моей сети. Если я выполняю NSLOOKUP для brienposey.com, NSLOOKUP возвращает информацию, показанную на рисунке A.
Рисунок A. Вот что происходит, когда NSLOOKUP запрашивает внешний домен
Если вы посмотрите на рисунок, то увидите, что для IP-адресов 147.100.100.34 и 147.100.100.5 есть сообщения об ошибках несуществующего домена. Это адреса моих внутренних DNS-серверов. Однако ниже этой информации приведен неавторитетный ответ. Это означает, что мой DNS-сервер запросил внешний DNS-сервер, пытаясь разрешить IP-адрес, связанный с доменом brienposey.com.
Теперь давайте посмотрим, что происходит, когда вы запрашиваете внутренний домен. Один из локальных доменов в моей частной сети — production.com. Если я выполняю NSLOOKUP для production.com, я получаю результаты, показанные на рисунке B.
Рисунок B. Вот как это выглядит, когда я запрашиваю внутренний домен
Если вы посмотрите на верхнюю часть этого экрана, вы заметите, что я получаю точно такие же сообщения об ошибках несуществующего домена, как и при запросе внешнего домена. Поначалу это может показаться озадачивающим. Причина, по которой я получил это сообщение об ошибке, заключалась в том, что я выполнил NSLOOKUP вне оболочки NSLOOKUP. Подробнее об оболочке NSLOOKUP я расскажу в следующем разделе. Однако сейчас вам нужно знать, что вы можете ввести команду NSLOOKUP саму по себе. Когда вы это сделаете, вы увидите знакомые сообщения об ошибках несуществующего домена, но затем вы попадете в приглашение NSLOOKUP (знак >). Оттуда вы можете вводить различные команды NSLOOKUP. Когда вы закончите, вы можете использовать команду EXIT, чтобы вернуться в командную строку.
Еще одна вещь, которую вы должны заметить на рисунке B, — это нижняя часть вывода. Под ссылкой на production.com находится строка IP-адресов. Это IP-адреса всех контроллеров домена в домене. Я также должен отметить, что если одному серверу назначено несколько IP-адресов, то все IP-адреса сервера будут отображаться в NSLOOKUP.
Оболочка NSLOOKUP
Теперь, когда я показал вам, как использовать команду NSLOOKUP для просмотра IP-адреса или адресов, связанных с доменом, давайте сделаем что-нибудь более полезное. Одна из вещей, которую вы можете сделать с помощью NSLOOKUP, — это найти определенный тип записи DNS. Хорошим примером этого является запись MX.
Если вы еще не знакомы со всеми тонкостями DNS, запись MX указывает на почтовый сервер организации. Например, предположим, что кто-то хочет послать вам сообщение электронной почты. Первое, что должен сделать его почтовый сервер, — это разрешить IP-адрес вашего домена. Однако обычное разрешение адресов обычно не подходит для этой цели. На рисунке A вы видели, что когда я выполнил DNS-запрос к домену brienposey.com, домен разрешился в адрес 24.235.10.4. Имейте в виду, однако, что это IP-адрес сервера, на котором размещен мой веб-сайт, а не адрес моего почтового сервера. Если бы кто-то хотел отправить мне сообщение электронной почты, его клиент электронной почты должен был бы разрешить IP-адрес почтового сервера моего домена. Здесь в игру вступает запись MX. Запись MX — это запись на DNS-сервере домена, которая указывает IP-адрес почтового сервера домена.
Как видите, запись MX довольно важна. Предположим, однако, что у вашего домена возникли проблемы с получением электронной почты, и вы подозреваете, что виноват DNS-сервер. Вы можете использовать NSLOOKUP, чтобы убедиться, что домен действительно имеет запись MX и что запись MX указывает на правильный IP-адрес.
Ранее я кратко упомянул, что вы можете работать в оболочке NSLOOKUP. Чтобы устранить проблему с записью MX, вам в значительной степени придется работать в этой оболочке. Поэтому вы должны запустить процесс, введя команду NSLOOKUP в командной строке.
Когда оболочка NSLOOKUP открыта, вам нужно указать NSLOOKUP, какой DNS-сервер вы хотите запросить. Для этого введите команду SERVER, а затем IP-адрес DNS-сервера. Вы также можете ввести полное доменное имя сервера (при условии, что оно может быть разрешено) в качестве альтернативы IP-адресу сервера.
Теперь, когда вы указали DNS-сервер для использования NSLOOKUP, вы можете запрашивать домены, не получая сообщений об ошибках несуществующего домена, которые вы видели ранее (пока вы остаетесь в оболочке NSLOOKUP). Для этого вам просто нужно ввести доменное имя, которое вы хотите запросить. Например, если вы посмотрите на рисунок C, вы увидите, где я указал конкретный DNS-сервер, а затем запросил внешний и внутренний домены.
Рисунок C. Сообщения об ошибках исчезают, если вы укажете DNS-сервер
Теперь давайте вернемся к поиску MX-записи домена. Для этого вам нужно выполнить команду, которая сообщает NSLOOKUP запрашивать на основе записей MX. Команда, которую вам нужно будет использовать:
УСТАНОВИТЬ ЗАПРОС=MX
Однако выполнение этой команды само по себе не даст вам никакой информации о записи MX домена. Для этого вы должны фактически запросить домен, введя доменное имя. Если вы посмотрите на рисунок D, то увидите, что я указал MX-запрос, а затем ввел доменное имя production.com. NSLOOKUP теперь возвращает множество информации, относящейся к записи MX моего домена.
Рисунок D. Когда указан запрос MX, вы можете получить массу информации о записи MX вашего домена.
Вывод
Как видите, NSLOOKUP может предоставить вам массу диагностической информации о DNS-сервере. Однако NSLOOKUP не ограничивается предоставлением типов информации, которые я обсуждал. Оболочка NSLOOKUP на самом деле представляет собой довольно богатый интерфейс с довольно большим набором команд. Вы можете просмотреть список доступных команд и их синтаксис, введя вопросительный знак в приглашении NSLOOKUP (примечание: вы не можете использовать NSLOOKUP /? для просмотра набора команд).