Windows-Server-2008

兩台 DNS 伺服器之間的查詢

  • March 13, 2013

我一直在努力用 BIND9 理解 DNS。

我使用了兩台機器 A 和 B,它們通過 LAN 連接,不供全球使用。

A 正在執行一個管理“範例”域和名為“www”的 Web 伺服器的名稱伺服器。

B 正在執行一個名稱伺服器,將“sub.example”域作為子域進行管理,並具有來自 A 的委派和名為“www”的 Web 伺服器。

配置文件如下。

“named.conf”代表機器 A 上的“範例”。

options {
           directory "C:\dns\etc"; 
           recursion yes; 
           version "XXX DNS Server 1.0X";

};
logging {
       channel my_file {
       file "c:\dns\etc\named.run" versions 5 size 1m;
       severity debug 0;
       print-category yes;
       print-severity yes;
       print-time yes;
       };
       category default {my_file;};
       category queries {my_file;};
       category lame-servers {my_file;};
       category config {my_file;};
};


zone "." {
           type hint; 
           file "named.root";
};

zone "localhost" {
           type master;
           file "localhost/fwd";
           allow-update { none; };

};
zone "0.0.127.in-addr.arpa" {
           type master;
           file "localhost/rev";
           allow-update { none; };
};
zone "example" {
           type master;
           file "example/fwd";
           allow-update { none; };  

};
zone "72.11.16.172.in-addr.arpa" {
           type master;
           file "example/rev";
           allow-update { none; };
};

機器 A 上“範例”的“區域文件”。

$TTL 1H
@ 1H    IN SOA example. postmaster.example. (
   200508291  ; Serial
         15M  ; Refresh
          5M  ; Retry
          1D  ; Expire
         15M) ; TTL

       IN  NS  ns.example.
       IN  A   172.16.11.72
ns      IN  A   172.16.11.72
www     IN  A   172.16.11.72

sub     IN  NS  ns.sub.example.
ns.sub.example. IN  A   172.16.10.37

“named.conf”代表機器 B 上的“範例”。

options {
           directory "C:\dns\etc"; 
           recursion yes; 
           version "unknown";
           allow-transfer {172.16.11.72; };

};
logging {
       channel my_file {
       file "c:\dns\etc\named.run" versions 5 size 1m;
       severity debug 0;
       print-category yes;
       print-severity yes;
       print-time yes;
       };
       category default {my_file;};
       category queries {my_file;};
       category lame-servers {my_file;};
       category config {my_file;};
};



zone "." {
           type hint; 
           file "named.root";
};

zone "localhost" {
           type master;
           file "localhost/fwd";
           allow-update { none; };

};
zone "0.0.127.in-addr.arpa" {
           type master;
           file "localhost/rev";
           allow-update { none; };
};
zone "sub.example" {
           type master;
           file "example/fwd";
           allow-update { none; };
};
zone "37.10.16.172.in-addr.arpa" {
           type master;
           file "example/rev";
           allow-update { none; };
}; 
zone "example" {
   type forward;
   forward only;
   forwarders {
       172.16.11.72;
   };
};

機器 B 上“sub.example”的“區域文件”。

$TTL 1H
@ 1H    IN SOA sub.example. postmaster.sub.example. (
   200508291  ; Serial
         15M  ; Refresh
          5M  ; Retry
          1D  ; Expire
         15M) ; TTL

       IN  NS  ns.sub.example.
       IN  A   172.16.10.37
ns      IN  A   172.16.10.37
www     IN  A   172.16.10.37

現在我在兩台機器上有四台伺服器,如下所示。

"ns.example"  and "www.example"   in machine A.

"ns.sub.example" and  "www.sub.example" in machine B.

我可以從 A 解析“www.example”,從 B 解析“www.sub.example”。

但我無法解析 A 中的“www.sub.example”和 B 中的“www.example”。

消息 dig 命令顯示並寫入 BIND 的日誌是底部。

A 和 B 都響應“SERVFAIL”或“連接超時;無法訪問任何伺服器”,但 BIND 的日誌中沒有錯誤消息。

實際上它們是 Windows2008 伺服器,我已經更改了 Windows 防火牆過濾器以接受 UPD 53 埠。

奇怪的是,防火牆日誌 A 和 B 中都沒有 DROP 消息,甚至沒有 ALLOW 消息。

我的意思是如果我從 AI 中探勘“www.example”可以看到 ALLOW 消息,但如果我探勘“www.sub.exaple”我看不到 ALLOW 和 DROP 消息。

我想我必須將這個問題歸類為 BIND 引起的或 Windows 防火牆引起的。

我必須先做什麼?

例如,我猜 DNS 查詢無法發送到名稱伺服器的另一台機器。這就是為什麼 dig 顯示消息“無法訪問任何伺服器”的原因。

如何檢查 DNS 查詢是否已發送,如果未發送,為什麼?

探勘機器 A。

C:\dns\bin>dig www.sub.example

; <<>> DiG 9.9.2-P1 <<>> www.sub.example
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 1777
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

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

;; Query time: 0 msec
;; SERVER: 172.16.11.72#53(172.16.11.72)
;; WHEN: Wed Mar 13 08:42:04 2013
;; MSG SIZE  rcvd: 44

C:\dns\bin>dig @172.16.10.37 www.sub.example. a

; <<>> DiG 9.9.2-P1 <<>> @172.16.10.37 www.sub.example. a
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

挖機器 B。

C:\dns\bin>dig www.example

; <<>> DiG 9.9.2-P1 <<>> www.example
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 39790
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:
;www.example.                   IN      A

;; Query time: 4015 msec
;; SERVER: 172.16.10.37#53(172.16.10.37)
;; WHEN: Wed Mar 13 09:40:31 2013
;; MSG SIZE  rcvd: 40

C:\dns\bin>dig @172.16.11.72 www.example. a

; <<>> DiG 9.9.2-P1 <<>> @172.16.11.72 www.example
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

BIND 在 A 的日誌。

13-Mar-2013 14:43:22.624 general: info: managed-keys-zone: loaded serial 0
13-Mar-2013 14:43:22.624 general: info: zone 72.11.16.172.in-addr.arpa/IN: loaded serial 200508291
13-Mar-2013 14:43:22.624 general: info: zone 0.0.127.in-addr.arpa/IN: loaded serial 200508291
13-Mar-2013 14:43:22.624 general: info: zone example/IN: loaded serial 200508291
13-Mar-2013 14:43:22.624 general: info: zone localhost/IN: loaded serial 200508291
13-Mar-2013 14:43:22.624 general: notice: all zones loaded
13-Mar-2013 14:43:22.624 general: notice: running
13-Mar-2013 14:43:22.624 notify: info: zone example/IN: sending notifies (serial 200508291)
13-Mar-2013 14:43:22.624 notify: info: zone 72.11.16.172.in-addr.arpa/IN: sending notifies (serial 200508291)
13-Mar-2013 14:44:34.515 queries: info: client 172.16.11.72#58221 (www.sub.example): query: www.sub.example IN A +E (172.16.11.72)
13-Mar-2013 14:44:39.515 queries: info: client 172.16.11.72#58221 (www.sub.example): query: www.sub.example IN A +E (172.16.11.72)
13-Mar-2013 14:44:44.515 queries: info: client 172.16.11.72#58221 (www.sub.example): query: www.sub.example IN A +E (172.16.11.72)

BIND 在 B 的日誌

13-Mar-2013 14:38:27.281 general: info: managed-keys-zone: loaded serial 0
13-Mar-2013 14:38:27.281 general: info: zone 0.0.127.in-addr.arpa/IN: loaded serial 200508291
13-Mar-2013 14:38:27.281 general: info: zone 37.10.16.172.in-addr.arpa/IN: loaded serial 200508291
13-Mar-2013 14:38:27.281 general: info: zone sub.example/IN: loaded serial 200508291
13-Mar-2013 14:38:27.281 general: info: zone localhost/IN: loaded serial 200508291
13-Mar-2013 14:38:27.296 general: notice: all zones loaded
13-Mar-2013 14:38:27.296 general: notice: running
13-Mar-2013 14:38:27.296 notify: info: zone sub.example/IN: sending notifies (serial 200508291)
13-Mar-2013 14:38:27.296 notify: info: zone 37.10.16.172.in-addr.arpa/IN: sending notifies (serial 200508291)
13-Mar-2013 14:46:08.984 queries: info: client 172.16.10.37#58326 (www.sub.example): query: www.sub.example IN A +E (172.16.10.37)
13-Mar-2013 14:46:11.250 queries: info: client 172.16.10.37#58330 (www.example): query: www.example IN A +E (172.16.10.37)
13-Mar-2013 14:46:17.250 queries: info: client 172.16.10.37#58330 (www.example): query: www.example IN A +E (172.16.10.37)

有幾件事我可以提出建議。

首先是您在失敗探勘中獲得的返回程式碼是 SERVFAIL。這可能有幾個原因,但您首先要排除的一個原因是某些東西阻止了機器之間的名稱查詢。我知道你說你已經關閉了埠 53 UDP 的 Windows 防火牆規則,但我建議你證明(至少對你自己)機器 B 可以執行“dig @machine-a www.example.a”和得到你期望的答案。然後檢查機器 A 是否可以查詢機器 B 的伺服器。

除此之外,查看您的 named.conf 以及任何已命名的消息正在記錄會非常有幫助。向我們展示 named.conf 將允許我們檢查您的區域是否正確指定(您的區域文件中的大多數 RR 都與區域原點相關,因此查看區域的載入方式很重要,這樣我們才能看到原點的真正含義..) 並且將幫助我們確定是否其中一台機器或兩者都應該執行遞歸。

請提供更多資訊;這將使確定正在發生的事情變得更加容易。

編輯:

您提供的 dig 輸出肯定聽起來像是伺服器沒有收到來自其他機器的請求:

; <<>> DiG 9.9.2-P1 <<>> @172.16.10.37 www.sub.example. a
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

; <<>> DiG 9.9.2-P1 <<>> @172.16.11.72 www.example
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

這似乎很重要,你不同意嗎?

引用自:https://serverfault.com/questions/487264