Как я могу направить запрос на определенный DNS-сервер?

445023
Anton Daneyko

Я хотел бы отправить запрос на определенный DNS-сервер, чей IP-адрес мне известен. Неважно, если это на Windows или * nix.

В Windows я могу сделать что-то вроде:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com Server: DNSs2.Uni-Marburg.DE Address: 137.248.21.22  Non-authoritative answer: Name: superuser.com Address: 64.34.119.12 

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

Так должно быть что-то вроде:

nslookup --dns-ip=8.8.8.8 superuser.com 
130

8 ответов на вопрос

172
TheCompWiz

Для основных записей A и CNAME вы можете просто

nslookup somewhere.com some.dns.server 

Usage:  nslookup [-opt ...] # interactive mode using default server nslookup [-opt ...] - server # interactive mode using 'server' nslookup [-opt ...] host # just look up 'host' using default server nslookup [-opt ...] host server # just look up 'host' using 'server' 

или если вы просто наберете nslookup без каких-либо параметров, вы можете сделать намного больше опций ...

Commands: (identifiers are shown in uppercase, [] means optional) NAME - print info about the host/domain NAME using default server NAME1 NAME2 - as above, but use NAME2 as server help or ? - print info on common commands set OPTION - set an option all - print options, current server and host [no]debug - print debugging information [no]d2 - print exhaustive debugging information [no]defname - append domain name to each query [no]recurse - ask for recursive answer to query [no]search - use domain search list [no]vc - always use a virtual circuit domain=NAME - set default domain name to NAME srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc. root=NAME - set root server to NAME retry=X - set number of retries to X timeout=X - set initial time-out interval to X seconds type=X - set query type (ex. A,AAAA,A+AAAA,ANY,CNAME,MX,NS,PTR,SOA,SRV) querytype=X - same as type class=X - set query class (ex. IN (Internet), ANY) [no]msxfr - use MS fast zone transfer ixfrver=X - current version to use in IXFR transfer request server NAME - set default server to NAME, using current default server lserver NAME - set default server to NAME, using initial server root - set current default server to the root ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE) -a - list canonical names and aliases -d - list all records -t TYPE - list records of the given RFC record type (ex. A,CNAME,MX,NS,PTR etc.) view FILE - sort an 'ls' output file and view it with pg exit - exit the program 
К сожалению, в руководстве используются термины «хост» и «сервер», а не что-то более понятное, например «доменное имя» и «DNS-сервер». ClearCrescendo 9 лет назад 7
Это не совсем неверно. «Доменное имя» является только частью имени хоста. Вы действительно можете выполнять поиск только в части «host» полного доменного имени, не используя суффикс домена. NSLOOKUP автоматически попытается использовать любые поисковые суффиксы, настроенные в вашей системе, для получения соответствия. TheCompWiz 9 лет назад 1
Вам не нужно полностью обращаться к NSLOOKUP, чтобы использовать опции - синтаксис немного странный. ** Пример **: `nslookup -all -debug -type = ANY -class = ANY servertolookup.com someDNSserver.com` Coruscate5 5 лет назад 1
9
Anton Daneyko

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

C:\Documents and Settings\Anton Daneyko>nslookup help Server: DNSs2.Uni-Marburg.DE Address: 137.248.21.22  *** DNSs2.Uni-Marburg.DE can't find help: Non-existent domain  C:\Documents and Settings\Anton Daneyko>nslookup Default Server: DNSs2.Uni-Marburg.DE Address: 137.248.21.22  > stackoverflow.com 8.8.8.8 Server: [8.8.8.8] Address: 8.8.8.8  Non-authoritative answer: Name: stackoverflow.com Address: 64.34.119.12 
Я улыбнулся, когда увидел, что этот ответ начинается с "Просто [копать] (https://en.wikipedia.org/wiki/Dig_%28command%29) ing ...". Hossein 7 лет назад 11
7
Bede Amarasekara

Да, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com будет искать ваш собственный DNS-сервер, чтобы узнать IP-адрес superuser.com. Если вы добавите IP-адрес или имя другого DNS-сервера в командную строку, он будет искать на данном DNS-сервере IP-адрес superuser.com. Пример:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 8.8.4.4 Server: google-public-dns-b.google.com Address: 8.8.4.4  Non-authoritative answer: Name: superuser.com Addresses: 190.93.245.58 190.93.246.58 141.101.114.59 190.93.247.58 190.93.244.58 

Кстати, 8.8.4.4 - это IP-адрес DNS-серверов Google.

Но оба из вышеперечисленных дают «неавторизованные ответы», так как ни один из них не является SOA, который является авторитетным для домена superuser.com. Оба имеют кэшированную копию, которая была распространена из SOA. Если вы хотите спросить уполномоченный сервер, сначала выясните имя IP-адреса уполномоченного сервера, используя команду:

C:\Documents and Settings\Anton Daneyko>nslookup -type=ns superuser.com Server: DNSs2.Uni-Marburg.DE Address: 137.248.21.22  Non-authoritative answer: superuser.com nameserver = cf-dns02.superuser.com superuser.com nameserver = cf-dns01.superuser.com  cf-dns02.superuser.com internet address = 173.245.59.4 cf-dns02.superuser.com AAAA IPv6 address = 2400:cb00:2049:1::adf5:3b04 cf-dns01.superuser.com AAAA IPv6 address = 2400:cb00:2049:1::adf5:3a35 cf-dns01.superuser.com internet address = 173.245.58.53 

Это вернет неавторизованный ответ с вашего локального DNS-сервера из Marburg Uni, в котором будут указаны все авторитетные серверы для superuser.com. Затем вы можете использовать команду, которую мы использовали ранее, чтобы задать любой из 4 авторитетных серверов, следующим образом:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 173.245.59.4 Server: cf-173-245-59-4.cloudflare.com Address: 173.245.59.4  Name: superuser.com Addresses: 141.101.114.59 190.93.246.58 190.93.245.58 190.93.247.58 190.93.244.58 

Как вы видите, на этот раз авторитетный SOA-сервер возвратил IP-адреса, поэтому вы больше не видите комментарий «Неавторизованный ответ». Это особенно полезно, когда вы создали новое доменное имя или сменили хостинг-провайдеров или перенесли его на другой регистратор доменов и не можете получить доступ к своему веб-сайту, поскольку новые IP-адреса не распространяются даже через 24 часа. Затем вы можете начать с SOA и убедиться, что ваш правильный IP-адрес задан DNS-сервером, а затем проследить его дальше по дереву. Полезно проверить, получили ли изменения DNS-серверы Google, и, наконец, может ли ваш локальный DNS-сервер преобразовать ваше доменное имя в правильный IP-адрес.

1
atlantaitservice.com

To change your default DNS server in nslookup you can simply change the server by typing the server NAMEorIPofDNS In this example below I have changed my default DNS server (192.168.50.21) to a new one (4.2.2.3)

C:\Windows\system32>nslookup

Default Server: UnKnown

Address: 192.168.50.21

server 4.2.2.3

Default Server: c.resolvers.level3.net

Address: 4.2.2.3

>

Now I am ready to make queries against 4.2.2.3 versus 192.168.50.21

Это дублирует другой ответ и не добавляет новый контент. Пожалуйста, не публикуйте ответ, если у вас нет чего-то нового. DavidPostill 8 лет назад 0
Возможно, нет нового контента, но ценность. Я предпочитаю этот ответ по длинным разрядам :) Pawel Cioch 7 лет назад 0
0
PatrickCUDO

Вы можете настроить основной DNS для использования с вашим соединением.
Перейдите в свойства вашего соединения => Internet Procol (TCP / IP). (место, где вы можете установить статический IP)
Здесь вы можете вручную определить, какой DNS вы хотите использовать для каждого соединения.
После тестирования вы всегда можете изменить его обратно на прежнее значение.

Я не думаю, что это «прямой» способ запроса DNS-сервера. lepe 8 лет назад 3
0
Twisty Impersonator

Получить конкретные типы записей с указанного DNS-сервера с помощью одной команды

Чтобы найти типы записей, отличные от записей A и AAAA (и CNAME) по умолчанию, возвращаемых nslookup, с помощью указанного вами DNS-сервера:

nslookup -q=<record type> <host> <DNS server> 

Например, чтобы вернуть записи MX для домена, stackexchange.comиспользующего DNS-сервер, 8.8.4.4команда будет выглядеть так:

nslookup -q=MX stackexchange.com 8.8.4.4 
0
Prada

Я работаю над Openwrt 18.06.1 ARMv6 Raspberry pi и настраиваю tor dns, а также dnscrypt-proxy, поэтому у меня была очень похожая проблема. Основной причиной является то, что локальный провайдер перехватывает небезопасные ответы от root-servers.net, ответы, в которых говорится, что сайт не был найден, а затем перенаправляет на свой собственный сайт. Хотя это не большой недостаток безопасности, я не нахожу это особенно полезным.

Первый тест, который нужно выполнить при запросе определенного адреса, - это на самом деле попытаться использовать недопустимый адрес, чтобы убедиться, что вы получаете правильный нулевой ответ при использовании параметров сервера, порта и хоста. Существует множество руководств и версий, и их легко понять. Вы делаете тест порта, когда он фактически отвечает из кэшированных результатов или серверов по умолчанию. После получения нулевого ответа, работайте с адресом и портом активного сервера. Активные порты могут быть показаны на openwrt с помощью netstat -plnt, но обратите внимание, что некоторые команды маршрутизатора, возможно, должны быть установлены в первую очередь. Служба tor, которую я установил на порту 9053, здесь не отображается, но все еще работает после добавления DNSPort 127.0.0.1:9053 в файл torrc. Формат nslookup на этой платформе принимает параметры [host] и [server], и я могу протестировать tor с помощью nslookup cnn.com 127.0.0.1 # 9053 Я могу протестировать dnscrypt с помощью команды nslookup cnn. com 127.0.0.1 # 5353 При переходе на неверные номера портов или доменов получен ответ; ; время соединения истекло; серверы недоступны. Dig также работает на openwrt, но должен быть установлен из пакета bind-dig. dig -q 127.0.0.1 -p 9053 www.bbc.com И снова происходит сбой для недопустимых портов. В моем случае проблема была решена, когда я изменил записи в / etc / config / network и установил опцию dns '127.0.0.1' для сетей, где я ранее использовал небезопасные записи dns.

0
Zaspam Akaunt

Для окон то, что вы можете искать, представлено в следующей статье: https://technet.microsoft.com/en-us/library/ff394369.aspx

Добро пожаловать в Супер пользователя! Хотя это может теоретически ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259) включить здесь основные части ответа и предоставить ссылку для справки. bertieb 5 лет назад 1

Похожие вопросы