Утилита 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.
как команда с ошибочной опцией.