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

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

Программа nslookup позволяет выполнять запросы в диалоговом режиме либо при помощи параметров командной строки. В следующем примере nslookup применяется для создания запроса IP-адреса определенного узла:

% nslookup crab.wrotethebook.com
Server: rodent.wrotethebook.com
Address: 172.16.12.2

Name: crab.wrotethebook.com
Address: 172.16.12.1

Пользователь просит программу nslookup отобразить адрес узла crab.wrotethebook.com. nslookup отображает имя и адрес сервера, который использовался для получения ответа, а затем и собственно ответ. Удобная возможность, однако nslookup чаще используется в диалоговом режиме.

В диалоговом режиме работы заключена истинная сила nslookup. Чтобы приступить к работе в диалоговом режиме, выполните команду nslookup без аргументов. Завершается диалоговый сеанс сочетанием клавиш <Ctrl>+<D> ID) или набором команды exit в приглашении nslookup. В качестве диалогового сеанса предшествующий запрос выглядит следующим образом:

% nslookup
Default Server: rodent.wrotethebook.cor
Address: 172.16.12.2
> crab.wrotethebook.com
Server: rodent.wrotethebook.com
Address: 172.16.12.2
Name: crab.wrotethebook.com
Address: 172.16.12.1
> ^D

По умолчанию nslookup выполняет запрос А-записей, но при помощи команды set type можно запросить любой тип RR-записей либо выполнить специальный запрос с типом ANY. ANY позволяет получить все доступные RR-записи для конкретного узла.

В следующем примере выполняется поиск МХ-записей для узлов crab и rodent. Обратите внимание, что указание типа запроса действует на все последующие запросы - автоматического возврата к типу А не происходит. Чтобы выполнить сброс типа запроса, необходима еще одна команда set type.

% nslookup
Default Server: rodent.wrotethebook.com
Address: 172.16.12.2
>    set type=MX
>    crab.wrotethebook.com
Server: rodent.wrotethebook.com
Address: 172.16.12.2
crab.wrotethebook.com preference = 5, mail exchanger = crab.wrotethebook.com
crab.wrotethebook.com inet address = 172.16.12.1
>    rodent.wrotethebook.com
Server: rodent.wrotethebook.com
Address: 172.16.12.2
rodent.wrotethebook.com preference = 5, mail exchanger = rodent.wrotethebook.com
rodent.wrotethebook.com inet address = 172.16.12.2
>    exit

Сервер, к которому обращены запросы, можно изменить при помощи команды server. Данная возможность особенно полезна в случае необходимости обратиться за информацией напрямую к компетентному серверу. В следующем примере выполняется именно такая операция. Фактически он содержит ряд интересных команд:

  • Во-первых, мы выполняем команду set type=NS и получаем NS-записи домена zoo.edu.
  • Исходя из полученной информации, мы выбираем сервер и при помощи команды serveг предписываем nslookup обращаться к этому серверу.
  • Затем при помощи команды set domain определяем домен по умолчанию - zoo.edu. nslookup использует доменные имена по умолчанию для дополнения имен узлов в запросах точно так же, как это делает клиент DNS для доменного имени по умолчанию, определенного в файле resolv.conf.
  • Мы переустанавливаем тип запроса в ANY. Если этого не сделать, nslookup будет по-прежнему искать NS-записи.
  • Наконец, мы запрашиваем информацию об узле tiger.zoo.edu. Поскольку значение домена по умолчанию - zoo.edu, мы набираем в приглашении nslookup только имя узла - tiger.

А вот и сам пример:

% nslookup
Default Server: rodent.wrotethebook.com
Address: 172.16.12.2
>    set type=NS
>    zoo.edu
Server: rodent.wrotethebook.com
Address: 172.16.12.2
Non-authoritative answer:
zoo.edu nameserver = NOC.ZOO.EDU
zoo.edu nameserver = NI.Z00.EDU
zoo.edu nameserver = NAMESERVER.AGENCY.GOV
Authoritative answers can be found from:
N0C.Z00.EDU inet address = 172.28.2.200
NI.Z00.EDU inet address = 172.28.2.240
NAMESERVER.AGENCY.GOV inet address = 172.21.18.31
>    server N0C.Z00.EDU
Default Server: NOC.ZOO.EDU
Address: 172.28.2.200
>    set domain=zoo.edu
>    set type=any
>    tiger
Server: NOC.ZOO.EDU
Address: 172.28.2.200
tiger.zoo.edu inet address = 172.28.172.8
tiger.zoo.edu preference = 10, mail exchanger = tiger.ZOO.EOU
tiger.zoo.edu CPU=ALPHA OS=Unix
tiger.zoo.edu inet address = 172.28.172.8, protocol = 6
7 21 23 25 79
tiger.ZOO.EDU inet address = 172.28.172.8
> exit

Последний пример демонстрирует, как загрузить целый домен с компетентного сервера и изучить его в локальной системе. Команда Is запрашивает передачу зоны и отображает содержимое полученной зоны. Если в файле зоны много строк, перенаправьте вывод в файл и воспользуйтесь командой view, чтобы изучить его содержимое, (view сортирует файл и отображает его строки посредством Unix-команды more.) Сочетание Is и view полезно при поиске определенного удаленного узла. В данном примере команда Is инициирует передачу зоны big.com и сохраняет информацию в файле temp.file. Для просмотра temp.file применяется view.

rodent% nslookup
Default Server: rodent wrotethebook.com
Address: 172.16.12.2
>    server minerals.blg.com
Default Server: minerals.big.com
Address: 192.168.20.1
>    Is big.com > temp.file
[minerals.big.com]
mtttttttttt
Received 406 records.
>    view temp.file
acmite    192.168.20.28
adamite    192.168.20.29
adelite    192.168.20.11
agate    192.168.20.30
alabaster    192.168.20.31
albite    192.168.20.32
allanite    192.168.20.20
altaite    192.168.20.33
alum    192.168.20.35
aluminum    192.168.20.8
amaranth    192.168.20.85
amethyst    192.168.20.36
andorite    192.168.20.37
apatite    192.168.20.38
beryl    192.168.20.23
--More-q    
> exit

Приведенные примеры показывают, что nslookup позволяет:

  • Запрашивать RR-записи любого из стандартных типов
  • Напрямую обращаться к компетентным серверам доменов
  • Записывать полное содержимое домена в файл для последующего про- смотра

Чтобы узнать о других возможностях nslookup, воспользуйтесь командой help. Включите отладку (команда set debug) и изучите дополнительную информацию. По мере изучения инструмента nslookup вы обнаружите много полезных возможностей.