137

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

8 ответов8

178

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

Просто копаясь в опциях 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
7

Да, 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

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

C:\Windows\system32> Nslookup

Сервер по умолчанию: неизвестно

Адрес: 192.168.50.21

сервер 4.2.2.3

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

Адрес: 4.2.2.3

>

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

0

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

0

Я работаю над 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

Получить конкретные типы записей с указанного 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

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

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