У меня, казалось бы, простой вопрос, но я не смог найти ответ именно на него после некоторого поиска:
Я знаю, что если я хочу найти IP-адрес какого-либо доменного имени, я набираю, например:
nslookup google.de
и получить
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: google.de
Address: 172.217.18.3
Однако я не знаю, откуда я получил этот ответ. Насколько мне известно, сначала мой преобразователь пытается запросить мой локальный DNS-сервер (который находится на Ubuntu dnsmasq), и если у него нет ответа, он запрашивает следующий сервер и так далее. Но я хочу знать, какой именно сервер в итоге получил ответ. Это возможно?
Я тоже пробовал
dig +trace www.google.com
который предоставляет всю информацию о выданных серверах, но выполняет полностью итеративный поиск. В принципе, я бы хотел получить такой ответ, но с обычным поиском.
Посмотри это https://stackoverflow.com/questions/38021/how-do-i-find-the-authoritative-name-server-for-a-domain-name
короче говоря, nslookup устанавливает тип запроса на SOA
одна линия:
nslookup -querytype=soa google.de
nslookup -d2 -type=ANY google.de
nslookup -d2 -type=ANY google.de 8.8.8.8
искать: первичный сервер имен
command line> nslookup
> set querytype=soa
> google.de
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
google.de
primary name server = ns2.google.com
responsible mail addr = dns-admin.google.com
serial = 160093636
refresh = 900 (15 mins)
retry = 900 (15 mins)
expire = 1800 (30 mins)
default TTL = 60 (1 min)
>
РЕДАКТИРОВАТЬ:
Мне сказали, что запись SOA может быть не лучшим методом. Что это может быть даже неправильно установлено. Итак, запись NS была бы лучшим выбором:
Где nameserver
сервер для домена ...
nslookup -type=NS google.de
Или с большим количеством отладочной информации, чтобы найти nameserver
nslookup -d2 -type=NS google.de
Я хочу знать, какой именно сервер в итоге получил ответ. Это возможно?
Это недостижимо. Вы не найдете конкретный полномочный сервер, к которому проводились консультации, названный в любом месте полезной нагрузки ответа DNS. Существуют запросы CHAOS, которые существуют с целью определения конкретных рекурсивный сервер, который ответил вам, но нет такого эквивалента для извлечения имени точного официального сервера, с которого рекурсор получил данные.
Ответы на вопросы о StackOverflow, на которые ссылается Филипп, содержат инструкции по определению списка NS
записи, которые присутствовали в разделе полномочий рекурсивного ответа DNS. Это полный список серверов, а не конкретный сервер. Даже если этого достаточно для ваших целей, эта информация считается необязательной в соответствии со стандартами DNS, и все чаще ее можно увидеть в рекурсивных ответах, чтобы уменьшить размер полезной нагрузки атак отражения из внутренних источников.
Если вы знаете название зоны, вы можете запросить полный список NS
записи через явный запрос на них. Для этого необходимо знать, что вы находитесь на вершине зоны; запрос на example.com
Записи NS вернут желаемый ответ, но www.example.com
не будет, если только www
был делегирован другому набору серверов. В этом случае у вас нет выбора, кроме как итеративно работать в обратном направлении, пока не обнаружите вершину зоны.
Короче говоря, не существует надежного короткого пути (например, одного запроса) для получения информации о все вышестоящие полномочия от рекурсивного сервера, и есть нет способ узнать конкретный авторитетный сервер, который ответил на запрос, без контроля авторитетного сервера и создания уникальных данных на каждом сервере. (если вы это сделаете, создайте для этой цели уникальную зону, чтобы она не мешала вашим более чувствительным переносам производственных зон)
Когда вы используете dig
в ответе по умолчанию у вас будет IP-адрес отвечающего сервера имен, который должен быть рекурсивным сервером имен, настроенным в вашей системе (/etc/resolv.conf
обычно).