綁定區域檔案快取和 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

ServerA的區域檔案中dns2.sub的A記錄是錯誤的(我故意這樣做的),它應該是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。作為一個普通的 dns 客戶端,我會得到哪一個? 「DNS 快取」中的 DNS 資源記錄優先於「區域檔案快取」中的記錄?
2.「權限部分」是什麼意思?在我看來,2.2.2.2不是權威答案,為什麼dig會將2.2.2.2視為「權威」?
3.DNS客戶端會快取它得到的所有答案還是只快取「權威」答案?
4.DNS解析器什麼時候會查詢NS記錄? Step2之後為什麼ServerA的快取中沒有NS記錄?

相關內容