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


Я хотел бы отправить запрос на определенный 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

122
2017-12-14 16:43


Источник




Ответы:


Для основных записей 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

158
2017-12-14 16:54



К сожалению, в руководстве используются термины «хост» и «сервер», а не что-то более четкое, как «домен-имя» и «DNS-сервер». - ClearCrescendo
Это не совсем неправильно. «Domain-name» - это только часть имени хоста. Вы действительно можете выполнять поиск только по части «полного хоста» полного доменного имени, опустив суффикс домена. NSLOOKUP будет автоматически пытаться использовать любые суффиксы поиска, настроенные в вашей системе, чтобы получить соответствие. - TheCompWiz
Вам не нужно полностью NSLOOKUP для использования параметров - синтаксис просто немного странный. пример: nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com - Coruscate5


Просто перейдя в опции 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

9
2017-12-14 16:50



Я улыбнулся, когда увидел, что этот ответ начинается с «Просто копать... ». - Hossein


Да,   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-адреса.


7
2017-09-22 13:20





Чтобы изменить DNS-сервер по умолчанию в nslookup, вы можете просто изменить сервер, набрав сервер NAMEorIPofDNS В этом примере ниже я изменил свой DNS-сервер по умолчанию (192.168.50.21) на новый (4.2.2.3)

C: \ Windows \ system32> Nslookup

Сервер по умолчанию: UnKnown

Адрес: 192.168.50.21

сервер 4.2.2.3

Сервер по умолчанию: c.resolvers.level3.net

Адрес: 4.2.2.3

>

Теперь я готов делать запросы против 4.2.2.3 по сравнению с 192.168.50.21


1
2018-03-30 20:02



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


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


0
2017-12-14 16:50



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


Получить определенные типы записей с указанного 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
2017-09-24 20:07