Короче говоря, оба запроса, которые вы упомянули в вопросе, являются неавторизованными.
Записи DNS для домена могут быть запрошены с кэширующего DNS-сервера или с официального DNS-сервера. Таким образом, если вы хотите запросить DNS-сервер с кэшированием, вы можете указать IP-адрес DNS или, если он не указан, будет выбран DNS-сервер по умолчанию, настроенный в /etc/resolv.conf
.
Неавторизованный запрос
$ dig stackexchange.com
или же
$ dig stackexchange.com @8.8.8.8
В обоих случаях запрос возвращает неавторизованный ответ, поскольку DNS вашего интернет-провайдера или открытый DNS Google (8.8.8.8) не являются полномочными для домена stackexchange.com
. Когда вы запросили неавторизованный сервер имен, значение TTL, которое он предоставляет, будет уменьшаться при каждом запросе. Как только значение TTL истечет, кэширующий сервер имен будет запрашивать полномочный DNS-сервер.
Авторитетный запрос
Таким образом, чтобы получить авторитетный ответ, вам нужно запросить запись с авторитетного DNS-сервера, который можно найти с помощью метода ниже.
$ dig ns stackexchange.com
...
;; ANSWER SECTION:
stackexchange.com. 84894 IN NS cf-dns02.stackexchange.com.
stackexchange.com. 84894 IN NS cf-dns01.stackexchange.com.
...
РАЗДЕЛ ОТВЕТА предоставляет официальные серверы имен для домена stackexchange.com
поэтому, если нам нужно получить достоверный ответ,
$ dig stackexchange.com @cf-dns01.stackexchange.com.
Хотя мы запрашиваем авторитетный DNS-сервер, значения TTL не изменятся, поскольку эти серверы имен являются основным источником информации, и срок их действия не истекает до тех пор, пока администратор не изменит их.
Как работает ЛЮБАЯ запись
ЛЮБАЯ запись похожа на шаблон, вы можете использовать ее для получения всех записей, которые кэшируются / хранятся на DNS-сервере. Например, я запросил stackexchange.com
для ЛЮБОЙ записи, и мой DNS-сервер по умолчанию отвечает, как показано ниже.
$ dig any stackexchange.com
....
;; ANSWER SECTION:
stackexchange.com. 86350 IN SOA cf-dns01.stackexchange.com. dns.cloudflare.com. 2017456480 10000 2400 604800 3600
stackexchange.com. 176 IN A 198.252.206.140
stackexchange.com. 84338 IN NS cf-dns01.stackexchange.com.
stackexchange.com. 84338 IN NS cf-dns02.stackexchange.com.
....
Здесь вы можете видеть, что ответ содержит только информацию о записи SOA
, A
и NS
. Но на самом деле существует больше записей для stackexchange.com
которые не кэшируются на моем DNS-сервере по умолчанию, поскольку я не запрашивал их.
Теперь я запрашиваю запись MX
на DNS-сервере по умолчанию, и ответ
$ dig MX stackexchange.com
....
;; ANSWER SECTION:
stackexchange.com. 300 IN MX 10 aspmx3.googlemail.com.
stackexchange.com. 300 IN MX 5 alt2.aspmx.l.google.com.
stackexchange.com. 300 IN MX 5 alt1.aspmx.l.google.com.
stackexchange.com. 300 IN MX 10 aspmx2.googlemail.com.
stackexchange.com. 300 IN MX 1 aspmx.l.google.com.
....
Теперь я снова запрашиваю ANY
запись, и теперь вы можете видеть, что запрос ANY
также возвращает записи MX
. И поэтому ANY
запись будет содержать записи, которые кэшируются только на вашем сервере имен по умолчанию.
$ dig any stackexchange.com
....
;; ANSWER SECTION:
stackexchange.com. 298 IN MX 5 alt1.aspmx.l.google.com.
stackexchange.com. 298 IN MX 10 aspmx2.googlemail.com.
stackexchange.com. 86084 IN NS cf-dns01.stackexchange.com.
stackexchange.com. 298 IN MX 10 aspmx3.googlemail.com.
stackexchange.com. 298 IN MX 1 aspmx.l.google.com.
stackexchange.com. 298 IN MX 5 alt2.aspmx.l.google.com.
stackexchange.com. 86084 IN NS cf-dns02.stackexchange.com.
stackexchange.com. 243 IN A 198.252.206.140
stackexchange.com. 86343 IN SOA cf-dns01.stackexchange.com. dns.cloudflare.com. 2017456480 10000 2400 604800 3600
....
И, как вы можете видеть, значения TTL меняются для неавторизованных ответов.