Что такое «дополнительный раздел» в DNS и как он работает? - PullRequest
0 голосов
/ 02 сентября 2018

Когда я использую dig

$ dig www.google.com

; <<>> DiG 9.10.6 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59489
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.com.            IN  A

;; ANSWER SECTION:
www.google.com.     23  IN  A   69.171.247.71

;; AUTHORITY SECTION:
google.com.     124333  IN  NS  ns4.GOoGLE.cOM.
google.com.     124333  IN  NS  ns1.GOoGLE.cOM.
google.com.     124333  IN  NS  ns3.GOoGLE.cOM.
google.com.     124333  IN  NS  ns2.GOoGLE.cOM.

;; ADDITIONAL SECTION:
ns1.google.com.     300146  IN  A   216.239.32.10
ns1.google.com.     308505  IN  AAAA    2001:4860:4802:32::a
ns2.google.com.     303470  IN  A   216.239.34.10
ns2.google.com.     124333  IN  AAAA    2001:4860:4802:34::a
ns3.google.com.     303470  IN  A   216.239.36.10
ns3.google.com.     124333  IN  AAAA    2001:4860:4802:36::a
ns4.google.com.     302836  IN  A   216.239.38.10
ns4.google.com.     302716  IN  AAAA    2001:4860:4802:38::a

Есть ADDITIONAL SECTION.

Я знаю структуру DNS-пакета:

+---------------------+
| Header              |
+---------------------+
| Question            | the question for the name server
+---------------------+
| Answer              | Answers to the question
+---------------------+
| Authority           | Not used in this project
+---------------------+
| Additional          | Not used in this project
+---------------------+

Но я не знаю деталей ADDITIONAL SECTION.

Я имею в виду, откуда взялся ADDITIONAL SECTION (сервер авторизации?) И для чего он используется?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

См. RFC 1035 , который касается DNS и, в частности, раздел 4.1 «Формат сообщения».

Вы прочтете там:

раздел дополнительных записей содержит RR которые относятся к запросу, но не являются строго ответами на вопрос.

А также различные форматы в разделе 3.3, в которых объясняется, какая запись вызовет определенную «дополнительную» обработку.

Вы также можете найти в RFC 1034 разделы 6.2 и 6.3 некоторые примеры запросов и ответов, где вы увидите, как заполняется дополнительный раздел.

Теперь, чтобы вернуться к вашему примеру, проблема в том, что вы не указываете явно, какой сервер имен вы запрашиваете, что означает, что вы получаете ответ от рекурсивного по умолчанию.

В этом случае вы видите:

  • в поле «Ответить» - точная запись для вашего запроса (по умолчанию dig делает A, если вы ничего не указали)
  • в «Власти» вы видите, что рекурсив узнал о том, какие серверы имен являются авторитетными для вашей записи
  • в поле «Дополнительно» вы получаете IP-адреса серверов имен в предыдущем разделе, особенно здесь, поскольку вы находитесь в случае «in-bailiwick» (часто называемом «клеем»), так что вы (как рекурсивный сервер имен) могли бы иметь нет способа подключить авторитетные сервера имен.

Давайте повторим запрос напрямую, используя авторитетный сервер имен, а затем сравним его с другим случаем:

$ dig google.com NS @ a.gtld-servers.net

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> google.com NS @a.gtld-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12149
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.            IN  NS

;; AUTHORITY SECTION:
google.com.     172800  IN  NS  ns2.google.com.
google.com.     172800  IN  NS  ns1.google.com.
google.com.     172800  IN  NS  ns3.google.com.
google.com.     172800  IN  NS  ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com.     172800  IN  AAAA    2001:4860:4802:34::a
ns2.google.com.     172800  IN  A   216.239.34.10
ns1.google.com.     172800  IN  AAAA    2001:4860:4802:32::a
ns1.google.com.     172800  IN  A   216.239.32.10
ns3.google.com.     172800  IN  AAAA    2001:4860:4802:36::a
ns3.google.com.     172800  IN  A   216.239.36.10
ns4.google.com.     172800  IN  AAAA    2001:4860:4802:38::a
ns4.google.com.     172800  IN  A   216.239.38.10

;; Query time: 68 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Mon Sep 03 19:23:20 EST 2018
;; MSG SIZE  rcvd: 287

Итак, мы просим одного авторитетного сервера имен зоны .COM дать нам серверы имен google.com. Результат аналогичен ранее.

Давайте запросим тот же сервер имен, но для другого домена:

$ dig ultradns.com NS @a.gtld-servers.net

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> ultradns.com NS @a.gtld-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54105
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 10, ADDITIONAL: 5
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ultradns.com.          IN  NS

;; AUTHORITY SECTION:
ultradns.com.       172800  IN  NS  pdns196.ultradns.com.
ultradns.com.       172800  IN  NS  pdns196.ultradns.net.
ultradns.com.       172800  IN  NS  pdns196.ultradns.org.
ultradns.com.       172800  IN  NS  pdns196.ultradns.info.
ultradns.com.       172800  IN  NS  pdns196.ultradns.biz.
ultradns.com.       172800  IN  NS  pdns196.ultradns.co.uk.
ultradns.com.       172800  IN  NS  ari.alpha.aridns.net.au.
ultradns.com.       172800  IN  NS  ari.beta.aridns.net.au.
ultradns.com.       172800  IN  NS  ari.gamma.aridns.net.au.
ultradns.com.       172800  IN  NS  ari.delta.aridns.net.au.

;; ADDITIONAL SECTION:
pdns196.ultradns.com.   172800  IN  A   156.154.64.196
pdns196.ultradns.com.   172800  IN  AAAA    2001:502:f3ff::e8
pdns196.ultradns.net.   172800  IN  A   156.154.65.196
pdns196.ultradns.net.   172800  IN  AAAA    2610:a1:1014::e8

;; Query time: 72 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Mon Sep 03 19:25:24 EST 2018
;; MSG SIZE  rcvd: 432

Обратите особое внимание на список namservers в разделе «Authority» и список с A / AAAA в разделе «Additional». Вы поймете, что только те, которые заканчиваются на .com или .net (потому что это особый случай, когда оба этих TLD обрабатываются одним и тем же реестром) имеют здесь IP-адреса, потому что авторитетные серверы имен для .COM / .NET ничего не знают об именах и IP-адресах в других доменах верхнего уровня.

Это может показаться еще более на следующем примере:

$ dig aridns.com NS @a.gtld-servers.net

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> aridns.com NS @a.gtld-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2552
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;aridns.com.            IN  NS

;; AUTHORITY SECTION:
aridns.com.     172800  IN  NS  dns1.ausregistry.net.au.
aridns.com.     172800  IN  NS  dns1-1.ausregistry.net.au.
aridns.com.     172800  IN  NS  dns1-2.ausregistry.net.au.
aridns.com.     172800  IN  NS  dns2-1.ausregistry.net.au.

;; Query time: 68 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Mon Sep 03 19:28:07 EST 2018
;; MSG SIZE  rcvd: 139

Нет "Дополнительного" раздела вообще, потому что все серверы имен находятся вне зоны!

0 голосов
/ 03 сентября 2018

ADDITIONAL SECTION содержит данные, которые вы явно не запрашивали, но сервер все равно предоставил их вам.

Это может использоваться серверами для предоставления ответов на типичные дополнительные вопросы, поскольку шаблоны поиска могут быть довольно предсказуемыми. То есть если вы запрашиваете запись MX, вы, вероятно, собираетесь выполнить поиск A для найденных записей MX, и если у авторитетного сервера они тоже будут, они могут быть возвращены вам напрямую, без необходимости выполнять один или несколько дополнительных DNS круглые поездки.

В вашем конкретном примере, так как вы запросили все типы ресурсов и получили записи NS, тот же самый авторитетный сервер также знал записи A и AAAA для этих серверов имен и подумал, что было бы полезно передать их вам.

Как интернет-проект «Возвращение дополнительных ответов в ответах DNS» (https://tools.ietf.org/id/draft-fujiwara-dnsop-additional-answers-00.html) резюмирует это во введении:

Предоставляя несколько ответов в одном ответе, авторитетные серверы имен могут помочь распознавателям с полным набором услуг в предварительном заполнении своего кэша до того, как распознаватели-заглушки или другие клиенты будут запрашивать последующие запросы. Помимо уменьшения задержки для конечных пользователей, это также уменьшает общее количество запросов, которые должны отправлять обработчики полного обслуживания, и уполномоченные серверы должны отвечать.

...