Як я можу направити запит на певний DNS-сервер?


154

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

Відповіді:


200

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

7
Прикро, що в посібнику використовуються терміни "хост" і "сервер", а не щось чіткіше, наприклад "доменне ім'я" та "dns-сервер".
ClearCrescendo

1
Це не зовсім неправильно. "Ім'я домену" є лише частиною імені хоста. Ви дійсно можете шукати лише на "хост" частині FQDN, опускаючи суфікс домену. NSLOOKUPавтоматично спробує використовувати будь-які суфікси пошуку, налаштовані у вашій системі для отримання відповідності.
TheCompWiz

1
Вам не потрібно повністю отримувати доступ, NSLOOKUPщоб використовувати параметри - синтаксис просто трохи дивний. Приклад :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

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

16
Я посміхнувся, побачивши, що ця відповідь починається з "Просто копати ...".
Хоссен

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, з Марбурзької 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


Це дублює іншу відповідь і не додає нового вмісту. Будь ласка, не публікуйте відповіді, якщо у вас насправді є щось нове.
DavidPostill

Немає нового вмісту, але цінні. Я віддаю перевагу цій відповіді на довгий час :)
Pawel Cioch

0

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


3
Я не думаю, що це "прямий" спосіб запиту DNS-сервера.
lepe

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

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

Перший тест, який потрібно зробити при запиті певної адреси, це насправді спробувати недійсну адресу, щоб переконатися, що ви отримаєте належну нульову відповідь при використанні параметрів сервера, порту та хоста. Є багато посібників та версій, і це легко думати. ви робите тест на порт, коли він насправді відповідає з кешованих результатів або серверів за замовчуванням. Після отримання нульової відповіді потім працюйте з активною адресою сервера та портом. Активні порти можуть бути показані на openwrt за допомогою netstat -plnt, але зауважте, що деякі команди маршрутизатора, можливо, потрібно буде спочатку встановити. Служба tor, яку я встановив на порт 9053, не відображається тут, але все ще працює після додавання DNSPort 127.0.0.1:9053 до файлу torrc. Формат nslookup на цій платформі приймає параметри [хост] та [сервер], і я можу протестувати tor dns за допомогою 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

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


1
Ласкаво просимо до Супер Користувача! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
bertieb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.