Кэш файла зоны привязки и кэш DNS

Кэш файла зоны привязки и кэш DNS

В моей лаборатории есть два сервера имен, на которых запущен bind9:
ServerA имеет файл зоны для "example.com";
ServerB имеет файл зоны для "sub.example.com", который является подзоной "example.com".
В файле зоны ServerA есть две записи NS о подзоне и две связующие записи, как показано ниже:

sub IN NS dns1.sub
    IN NS dns2.sub
dns1.sub IN A 1.1.1.1
dns2.sub IN A 2.2.2.2

В файле зоны ServerB записи NS выглядят следующим образом:

@ IN NS dns1
  IN NS dns2
dns1 IN A 1.1.1.1
dns2 IN A 3.3.3.3

Запись A dns2.sub в файле зоны ServerA неверна (я сделал это намеренно), должно быть 3.3.3.3.
После запуска двух серверов имен ServerA загружает свой файл зоны в кэш (я не знаю, как назвать этот кэш, здесь я называю его "кэш файла зоны"), то же самое делает и ServerB.

Шаг 1: Я выполняю «dig @ServerA +norecurse sub.example.com»:

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> @ServerA +norecurse sub.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64332
;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 4

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

;; AUTHORITY SECTION:
sub.exmample.com.     60      IN      NS      dns1.sub.exmample.com.
sub.exmample.com.     60      IN      NS      dns2.sub.exmample.com.

;; ADDITIONAL SECTION:
dns1.sub.exmample.com. 60     IN      A       1.1.1.1
dns2.sub.exmample.com. 60     IN      A       2.2.2.2

;; Query time: 1 msec
;; SERVER: 10.82.12.69#53(10.82.12.69)
;; WHEN: 二 5月 28 14:55:50 CST 2019
;; MSG SIZE  rcvd: 145

очевидно, RR возвращается в соответствии с кэшем файла зоны.

Шаг 2: Я выполняю «dig @ServerA +recurse sub.example.com»:

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> @ServerA +recurse sub.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43819
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

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

;; AUTHORITY SECTION:
sub.exmample.com.     30      IN      SOA     dns1.sub.exmample.com. mail.sub.exmample.com. 2019051501 60 60 60 60

;; Query time: 803 msec
;; SERVER: 10.82.12.69#53(10.82.12.69)
;; WHEN: 二 5月 28 15:00:05 CST 2019
;; MSG SIZE  rcvd: 100

после сброса кэша ServerA я получил следующее:

sub.exmample.com.     26      \-A     ;-$NXRRSET
; sub.exmample.com. SOA dns1.sub.exmample.com. mail.sub.exmample.com. 2019051501 60 60 60 60

Шаг 3: Я выполняю «dig @ServerA +recurse c1.sub.example.com»: c1.sub.example.com — один из хостов в sub.example.com с адресом 4.4.4.4

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> @ServerA +recurse c1.sub.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15260
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;c1.sub.example.com.         IN      A

;; ANSWER SECTION:
c1.sub.example.com.  30      IN      A       4.4.4.4

;; AUTHORITY SECTION:
sub.example.com.     30      IN      NS      dns1.sub.exmample.com.
sub.example.com.     30      IN      NS      dns2.sub.exmample.com.


;; ADDITIONAL SECTION:
dns1.sub.exmample.com. 30     IN      A       1.1.1.1
dns2.sub.exmample.com. 30     IN      A       3.3.3.3


;; Query time: 13 msec
;; SERVER: 10.82.12.69#53(10.82.12.69)
;; WHEN: 二 5月 28 15:05:59 CST 2019
;; MSG SIZE  rcvd: 171

Есть несколько моментов, которые меня действительно озадачили:
1. После выполнения всех трех шагов в кэше ServerA есть две записи ресурсов о сервере имен зоны sub.example.com dns2: первая - "dns2.sub.exmample.com. 3.3.3.3" в кэше файлов зоны, другая - "dns2.sub.exmample.com. 2.2.2.2" в кэше DNS, который он получил от ServerB. Какую из них я получу, как обычный клиент DNS? Записи ресурсов DNS в "кеше DNS" имеют приоритет над записями в "кеше файлов зоны"? Или случайным образом?
2. Что означает "РАЗДЕЛ AUTHORITY"? По моему мнению, 2.2.2.2 не является авторитетным ответом, почему dig рассматривает 2.2.2.2 как "AUTHORITY"?
3. Клиент DNS будет кэшировать все полученные им ответы или только "авторитетные" ответы?
4. Когда DNS-резолвер будет запрашивать записи NS? Почему после Шага 2 в кэше ServerA нет записей NS?

Связанный контент