Как определить сервер, предоставляющий ответ DNS?
TL;DR: где, в nslookup www.somedomain.com -debug
я найду имя /IP сервера (ов), которые отвечают на цепочку запросов?
Подробности:
У меня есть настройки (Windows 10 машина)
- который подключен к корпоративной локальной сети (
example.corp
) и имеет исходящее соединение OpenVPN на месте (дляexample.customer
) - где DNS-запросы делегируются на локальный (
127.0.0.1
) сервер (а именно Unbound)
Этот DNS-сервер настроен для пересылки DNS-запросов:
example.corp
на корпоративный DNSexample.customer
клиенту DNS за VPN- Интернет-хосты (
google.com
,...) DNS клиента за VPN (есть несколько причин для этого вместо использования корпоративного DNS или провайдеров, таких как1.1.1.1
)
Теперь я хотел бы убедиться, что правильный сервер разрешает правильные запросы. Это легко для корпоративных и связанных с клиентами (никто другой не может правильно их разрешить, поэтому, если они разрешены, это означает, что был найден правильный DNS), но у меня были сомнения по поводу интернет-адресов (которые в конечном итоге могли бы быть правильно решены любым из них).
Решение, которое я использовал, состояло в том, чтобы контролировать трафик VPN и видеть, будут ли проходить соответствующие пакеты DNS. Были, поэтому я знаю, что установка в порядке.
Этот подход не самый лучший, я бы предпочел использовать возможности nslookup
чтобы узнать это. Я пытался set debug
в инструменте и посмотрим, что получится по запросу интернет-машины (yahoo.fr
).
Разрешение сначала пошло, хотя yahoo.fr.somesubdomain.example.corp
, yahoo.fr.someothersubdomain.example.corp
- все, что есть в списке доменных суффиксов. Очевидно, ни один из запросов не был выполнен, а следующий был опробован. Пример:
------------
Got answer:
HEADER:
opcode = QUERY, id = 99, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
yahoo.fr.somesubdomain.example.corp, type = AAAA, class = IN
AUTHORITY RECORDS:
-> (root)
ttl = 3440 (57 mins 20 secs)
primary name server = thecorpnsserver.example.corp
responsible mail addr = root.thecorpnsserver.example.corp
serial = 2018113000
refresh = 1800 (30 mins)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 86400 (1 day)
Это неудачный запрос, но я нигде не вижу сервера, который ответил (это не thecorpnsserver.example.corp
которая является лишь частью SOA
из example.corp
). Другими словами, тот, который обеспечил SOA
(AUTHORITY RECORDS
)
Я наконец получил ответ с
------------
Got answer:
HEADER:
opcode = QUERY, id = 100, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 5, authority records = 0, additional = 0
QUESTIONS:
yahoo.fr, type = A, class = IN
ANSWERS:
-> yahoo.fr
internet address = 106.10.248.151
ttl = 17 (17 secs)
-> yahoo.fr
internet address = 98.136.103.24
ttl = 17 (17 secs)
-> yahoo.fr
internet address = 124.108.115.101
ttl = 17 (17 secs)
-> yahoo.fr
internet address = 74.6.136.151
ttl = 17 (17 secs)
-> yahoo.fr
internet address = 212.82.100.151
ttl = 17 (17 secs)
------------
Non-authoritative answer:
------------
Got answer:
HEADER:
opcode = QUERY, id = 101, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
yahoo.fr, type = AAAA, class = IN
AUTHORITY RECORDS:
-> yahoo.fr
ttl = 595 (9 mins 55 secs)
primary name server = hidden-master.yahoo.com
responsible mail addr = hostmaster.yahoo-inc.com
serial = 2018112700
refresh = 3600 (1 hour)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 600 (10 mins)
------------
Name: yahoo.fr
Addresses: 106.10.248.151
98.136.103.24
124.108.115.101
74.6.136.151
212.82.100.151
но он все еще не говорит, какой DNS-сервер обработал запрос.
1 ответ
При запуске nslookup в интерактивном режиме используемый сервер отображается как "Сервер по умолчанию". Это сервер, который используется nslookup.
Если вы ищете вышестоящие серверы, которые использует сервер по умолчанию, вы не увидите этого в nslookup.