Утилита NSLOOKUP присутствует в операционных системах Windows, начиная с Windows NT , и предназначена для формирования запросов к серверам DNS из командной строки. Фактически, утилита является аналогом службы DNS-клиент и позволяет диагностировать проблемы с разрешением имен в системе DNS. По умолчанию, все запросы отправляются на DNS-сервер, адрес которого задан настройками сетевого подключения. В терминах утилиты такой сервер является сервером по умолчанию (default server). Команда ipconfig /all позволяет получить информацию о настройках протокола IP и, в том числе, о серверах DNS, используемых в системе.

При запуске nslookup без параметров, утилита переходит в интерактивный режим, ожидая ввод команд пользователя. Ввод знака вопроса или help позволяет отобразить справку о внутренних командах и опциях nslookup:

1. Описание программы nslookup.

1.1. Параметры:

  • NAME — печать сведений об узле или домене NAME с помощью сервера по умолчанию
  • NAME1 NAME2 — та же операция, но в качестве сервера используется NAME2
  • help или ? — печать сведений о стандартных командах
  • set OPTION — установить параметр
  • all — печать параметров, текущего сервера и узла
  • [no]debug — печать отладочных сведений
  • [no]d2 — печать полных отладочных сведений
  • [no]defname — добавить имя домена ко всем запросам
  • [no]recurse — запрос рекурсивного ответа на запрос
  • [no]search — использовать список поиска доменов
  • [no]vc — всегда использовать виртуальную схему
  • domain=NAME — установить имя домена по умолчанию NAME
  • srchlist=N1[/N2/…/N6] — установить домен N1 и список поиска N1,N2 и т.д.
  • root=NAME — установить корневой сервер NAME
  • retry=X — установить число повторов X
  • timeout=X — установить интервал времени ожидания в X секунд
  • type=X — установить тип запроса (пр. A,AAAA,A+AAAA,ANY,CNAME,MX ,NS,PTR,SOA,SRV)
  • querytype=X — то же, что и type
  • class=X — установить класс запроса ( IN (Internet), ANY)
  • [no]msxfr — использовать быструю зону MS для передачи
  • ixfrver=X — текущая версия, использующаяся в передаче запросов IXFR
  • server NAME — установить сервер по умолчанию NAME, используя текущий сервер по умолчанию
  • lserver NAME — установить сервер по умолчанию NAME, используя первоначальный сервер
  • root — сделать текущий сервер по умолчанию корневым сервером
  • ls [opt] DOMAIN [> FILE] — перечисление адресов в домене DOMAIN (необязательно: вывод в файл FILE)
  • -a — перечисление канонических имен и псевдонимов
  • -d — перечисление всех записей
  • -t TYPE — перечисление записей указанного типа RFC (пр. A,CNAME,MX,NS,PTR etc.)
  • view FILE — сортировка файла «ls» и его просмотр с помощью pg
  • exit — выход из программы

2. Примеры использования команды NSLOOKUP.

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

2.1. Выполнить запрос к DNS-серверу, заданному по умолчанию, на разрешение доменного имени yandex.ru:

C:\ nslookup yandex.ru.

Для уменьшения количества ненужных запросов к серверам имен, имя домена нужно вводить в виде полностью определенного имени (fully qualified domain name) , т.е. с точкой в конце. Если этого не делать, то nslookup будет сначала выполнять запрос на разрешение имени относительно домена того компьютера, на котором она выполняется, т.е. yandex.ru.mydomain.ru если имя локального домена — mydomain.ru.

2.2. То же, что и в предыдущем примере, но с указанием типа запрашиваемой записи -type=mx:

C:\ nslookup -type=mx yandex.ru

Сервер DNS ответит на запрос утилиты nslookup перечислением почтовых серверов, обслуживающих домен yandex.ru

2.3. Определить IP-адрес узла odnokassniki.ru с использованием DNS-сервера 8.8.8.8 (публичный DNS-сервер Google), вместо DNS-сервера, заданного в настройках сетевого подключения:

C:\ nslookup odnoklassniki.ru 8.8.8.8

2.4. Отобразить запись MX для домена vk.com из базы данных сервера с IP-адресом 208.67.220.220 (сервер OpenDNS):

C:\ nslookup -type=mx -timeout=8 vk.com 208.67.220.220

При выполнении команды, максимальное время ожидания ответа сервера — 8 секунд.

2.5. То же, что и в предыдущем примере, но выполняется запрос на отображение любых типов записей:

C:\ nslookup -type=any -timeout=8 vk.com 208.67.220.220

Пример отображаемых данных:

Сервер: 208.67.220.220
Не заслуживающий доверия ответ:
vk.com internet address = 87.240.131.119
vk.com internet address = 87.240.131.99
vk.com nameserver = ns2.vkontakte.ru
vk.com nameserver = ns4.vkontakte.ru
vk.com nameserver = ns1.vkontakte.ru
vk.com nameserver = ns4.vkontakte.ru
vk.com nameserver = ns2.vkontakte.ru
vk.com nameserver = ns1.vkontakte.ru
ns1.vkontakte.ru internet address = 93.186.237.2
ns2.vkontakte.ru internet address = 93.186.224.100

2.6. Для разных версий nslookup и разных DNS-серверов, обслуживающих запрос, отображаемая информация может незначительно отличаться. Тот же запрос, сформированный англоязычной версией утилиты nslookup.exe и направленный на обработку DNS-серверу компании Google приведет к отображению следующих данных:

Address: 8.8.8.8

Non-authoritative answer:
vk.com internet address = 87.240.131.120
vk.com internet address = 87.240.143.244
vk.com

primary name server = ns1.vkontakte.ru
responsible mail addr = ncc.vkontakte.ru
serial = 2013100501
refresh = 3600 (1 hour)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 900 (15 mins)
vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901
vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902
vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903
vk.com nameserver = ns1.vkontakte.ru
vk.com nameserver = ns2.vkontakte.ru
vk.com nameserver = ns4.vkontakte.ru
vk.com MX preference = 10, mail exchanger = mail.vk.com
vk.com text ="v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlemail.com ~all"

2.7. Сообщение «Не заслуживающий доверия ответ:» (Non-authoritative answer: ) говорит о том, что выполняющий запрос DNS-сервер, не является владельцем зоны vk.com т.е. записи для узла vk.com в его базе отсутствуют, и для разрешения имени использовался рекурсивный запрос к другому DNS-серверу. Если отправить запрос DNS-серверу ns1.vkontakte.ru, то будет получен авторитетный ответ (authoritative answer) :

Server: ns1.vkontakte.ru
Address: 93.186.237.2

vk.com

primary name server = ns1.vkontakte.ru
responsible mail addr = ncc.vkontakte.ru
serial = 2013100501
refresh = 3600 (1 hour)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 900 (15 mins)
vk.com internet address = 87.240.131.118
vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:904
vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:905
vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:906
vk.com nameserver = ns4.vkontakte.ru
vk.com nameserver = ns1.vkontakte.ru
vk.com nameserver = ns2.vkontakte.ru
vk.com MX preference = 10, mail exchanger = mail.vk.com
vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlemail.com ~all"
ns4.vkontakte.ru internet address = 93.186.239.253
ns4.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:4::2
ns1.vkontakte.ru internet address = 93.186.237.2
ns1.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:1::2
ns2.vkontakte.ru internet address = 93.186.224.100
ns2.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:2::2
mail.vk.com internet address = 93.186.236.94

2.8. Использование опции отладки (debug) позволяет получить дополнительную информацию, содержащуюся в заголовках запросов клиента и ответов сервера (время жизни, флажки, типы записей и т.п.):

> server ns1.vkontakte.ru
------------

Got answer:
HEADER:

opcode = QUERY, id = 5, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0

QUESTIONS:

ns1.vkontakte.ru, type = A, class = IN

AUTHORITY RECORDS:

-> (root)
ttl = 440 (7 mins 20 secs)
primary name server = a.root-servers.net
responsible mail addr = nstld.verisign-grs.com
serial = 2013101600
refresh = 1800 (30 mins)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 86400 (1 day)

------------
------------
Got answer:

HEADER:

opcode = QUERY, id = 6, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 0, additional = 0

QUESTIONS:

ns1.vkontakte.ru, type = A, class = IN

ANSWERS:

-> ns1.vkontakte.ru
internet address = 93.186.237.2
ttl = 6350 (1 hour 45 mins 50 secs)

------------
Default Server: ns1.vkontakte.ru
Address: 93.186.237.2

> vk.com
Server: ns1.vkontakte.ru
Address: 93.186.237.2

------------
Got answer:
HEADER:

opcode = QUERY, id = 7, rcode = REFUSED
header flags: response, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0

QUESTIONS:

vk.com, type = ANY, class = IN
------------
------------
Got answer:
HEADER:

opcode = QUERY, id = 8, rcode = NOERROR
header flags: response, auth. answer, want recursion
questions = 1, answers = 11, authority records = 0, additional = 7

QUESTIONS:

vk.com, type = ANY, class = IN

ANSWERS:

-> vk.com
ttl = 900 (15 mins)
primary name server = ns1.vkontakte.ru
responsible mail addr = ncc.vkontakte.ru
serial = 2013100501
refresh = 3600 (1 hour)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 900 (15 mins)
-> vk.com
internet address = 87.240.131.99
ttl = 900 (15 mins)
-> vk.com
internet address = 87.240.131.119
ttl = 900 (15 mins)
-> vk.com
AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901
ttl = 900 (15 mins)
-> vk.com
AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902
ttl = 900 (15 mins)
-> vk.com
AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903
ttl = 900 (15 mins)
-> vk.com
nameserver = ns1.vkontakte.ru
ttl = 900 (15 mins)
-> vk.com
nameserver = ns2.vkontakte.ru
ttl = 900 (15 mins)
-> vk.com
nameserver = ns4.vkontakte.ru
ttl = 900 (15 mins)
-> vk.com
MX preference = 10, mail exchanger = mail.vk.com
ttl = 900 (15 mins)
-> vk.com
text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlemail.com ~all"
ttl = 900 (15 mins)
ADDITIONAL RECORDS:
-> ns1.vkontakte.ru
internet address = 93.186.237.2
ttl = 9000 (2 hours 30 mins)
-> ns1.vkontakte.ru
AAAA IPv6 address = 2a00:bdc0:ff:1::2
ttl = 9000 (2 hours 30 mins)
-> ns2.vkontakte.ru
internet address = 93.186.224.100
ttl = 9000 (2 hours 30 mins)
-> ns2.vkontakte.ru
AAAA IPv6 address = 2a00:bdc0:ff:2::2
ttl = 9000 (2 hours 30 mins)
-> ns4.vkontakte.ru
internet address = 93.186.239.253
ttl = 9000 (2 hours 30 mins)
-> ns4.vkontakte.ru
AAAA IPv6 address = 2a00:bdc0:ff:4::2
ttl = 9000 (2 hours 30 mins)
-> mail.vk.com
internet address = 93.186.236.94
ttl = 900 (15 mins)

------------
vk.com
ttl = 900 (15 mins)
primary name server = ns1.vkontakte.ru
responsible mail addr = ncc.vkontakte.ru
serial = 2013100501
refresh = 3600 (1 hour)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 900 (15 mins)
vk.com
internet address = 87.240.131.99
ttl = 900 (15 mins)
vk.com
internet address = 87.240.131.119
ttl = 900 (15 mins)
vk.com
AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901
ttl = 900 (15 mins)
vk.com
AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902
ttl = 900 (15 mins)
vk.com
AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903
ttl = 900 (15 mins)
vk.com
nameserver = ns1.vkontakte.ru
ttl = 900 (15 mins)
vk.com
nameserver = ns2.vkontakte.ru
ttl = 900 (15 mins)
vk.com
nameserver = ns4.vkontakte.ru
ttl = 900 (15 mins)
vk.com
MX preference = 10, mail exchanger = mail.vk.com
ttl = 900 (15 mins)
vk.com
text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlemail.com ~all"
ttl = 900 (15 mins)
ns1.vkontakte.ru
internet address = 93.186.237.2
ttl = 9000 (2 hours 30 mins)
ns1.vkontakte.ru
AAAA IPv6 address = 2a00:bdc0:ff:1::2
ttl = 9000 (2 hours 30 mins)
ns2.vkontakte.ru
internet address = 93.186.224.100
ttl = 9000 (2 hours 30 mins)
ns2.vkontakte.ru
AAAA IPv6 address = 2a00:bdc0:ff:2::2
ttl = 9000 (2 hours 30 mins)
ns4.vkontakte.ru
internet address = 93.186.239.253
ttl = 9000 (2 hours 30 mins)
ns4.vkontakte.ru
AAAA IPv6 address = 2a00:bdc0:ff:4::2
ttl = 9000 (2 hours 30 mins)
mail.vk.com
internet address = 93.186.236.94
ttl = 900 (15 mins)

2.9. Отобразить имя узла, соответствующее IP-адресу 8.8.4.4:

C:\ nslookup 8.8.4.4

2.10. Отобразить все записи для домена mydomain.ru, обслуживаемого текущим DNS-сервером:

C:\ nslookup -ls -d mydomain.ru. > listdns.txt

Вывод направляется в файл listdns.txt текущего каталога. Задавать абсолютный путь к файлу не следует, поскольку все существующие на данный момент версии nslookup.exe успешно перенаправляют стандартный вывод в файл, только если он располагается в текущем каталоге.

2.10. При работе в интерактивном режиме, после старта на экран выводится приглашение к вводу команд — символ «>» . При вводе команд необходимо учитывать регистр символов, например,

> LS -d mydomain.ru. 

будет воспринята как ошибочна команда, а команда:

> ls -D mydomain.ru.

как команда с ошибочной опцией.