Моя цель - проверить, что все серверы имен моего домена работают со следующей последовательностью команд в nslookup (ответы здесь опущены):

set type=soa
example.com
set type=a+aaaa
example.com ns1.name_server.com
example.com ns2.name_server.com
example.com ns3.name_server.com
example.com ns4.name_server.com

Где серверы имен ns1, ns2, ns3 и ns4 все взяты из списка, представленного в SOA.

Проблема в том, что только в Windows некоторые, но не все специфичные для сервера имен команды последовательно возвращают ** ns2.name_server.com can't find example.com: No response from server в случае компьютера с Windows 10 Pro, и для Server 2008R2 это дает:

DNS request timed out.
    timeout was 2 seconds.  [it times out 4 times like this]
** Request to ns2.name_server.com timed-out

При тестировании с помощью онлайн-инструментов, Mac и виртуальной машины Linux (с командой host ) все серверы имен (ns1, ns2, ns3, ns4) мгновенно предоставляют правильную запись A. Поэтому я считаю, что все записи DNS являются правильными, и это проблема Windows nslookup.

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

c:>nslookup example.com ns1.name_server.com
c:>nslookup example.com ns2.name_server.com
c:>nslookup example.com ns3.name_server.com
c:>nslookup example.com ns4.name_server.com

Очень странно то, что серверы имен, которые выходят из строя (в подсказке nslookup), являются специфичными и повторяемыми для каждой машины, например, мой Win10 успешно выполняется для ns1, но не работает для ns2, ns3 и ns4. На машине 2008R2 происходит сбой только ns2 и работают ns1, ns3 и ns4.

Проблема по-прежнему возникает в приглашении даже без первоначального переключения на тип SOA и обратно, т. Е. С использованием example.com ns1.name_server.com в качестве первой команды.

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

Единственный ключ я вижу некоторое несоответствие в том , как указано имя сервера сообщается с точки зрения его адреса IPv4 и IPv6 - адреса. Иногда это v4, иногда оба. Но я не смог различить закономерность.

Вопрос: правильно ли я использую nslookup? Это ошибка? Есть ли здесь проблема с IPv6?

Пример для попытки: Введите эти команды в приглашении nslookup на вашем компьютере с Windows:

set type=soa
superuser.com   [check the current name servers and revise below accordingly if needed] 
set type=a+aaaa
superuser.com ns-1699.awsdns-20.co.uk
superuser.com ns-245.awsdns-30.com
superuser.com ns-cloud-d1.googledomains.com
superuser.com ns-cloud-d2.googledomains.com

1 ответ1

1

Я нашел ответ здесь почти 3 года назад, который частично заявляет:

... nslookup не работает на Windows ..

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

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

Обратите внимание, что это влияет только на nslookup в Windows, современные версии Linux и OS X используют фиксированную версию nslookup.

Так что nslookup не работает, и это проблема IPv6.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .