Windows

Bind 無法載入區域,checkzone 說 OK,checkconf 不同意,從已知工作區域複製

  • July 6, 2017

我有一個在 Windows Server 2012 R2 上執行的 BIND9 (9.9.10-P2) 伺服器。我有 2 個視圖——一個內部視圖和一個外部視圖——為我擁有的域提供兩個區域。

出於某種原因,儘管伺服器啟動時沒有任何投訴,但其中一個區域拒絕提供答案。創建區域 2(問題區域)時,由於它的設置與區域 1 完全相同,我只是從區域 1 複製文件並將相關位替換為新名稱。Checkzone 說沒問題,沒有顯示錯誤。執行 checkconf -z 會針對 Zone 2 而不是 Zone 1 拋出錯誤:

C:\Program Files\ISC BIND 9\bin>named-checkconf.exe -z ..\etc\named.conf
C:\Program Files\ISC BIND 9\etc\zones\domain2.net.int:4: ignoring out-of-zone data
(domain2.net)
C:\Program Files\ISC BIND 9\etc\zones\domain2.net.int:16: ignoring out-of-zone dat
a (dns.domain2.net)
zone domain2.net/IN: has 0 SOA records
zone domain2.net/IN: has no NS records
zone domain2.net/IN: not loaded due to errors.
internal/domain2.net/IN: bad zone
zone domain1.net/IN: loaded serial 2
C:\Program Files\ISC BIND 9\etc\zones\domain2.net.ext:4: ignoring out-of-zone data
(domain2.net)
C:\Program Files\ISC BIND 9\etc\zones\domain2.net.ext:16: ignoring out-of-zone dat
a (dns.domain2.net)
zone domain2.net/IN: has 0 SOA records
zone domain2.net/IN: has no NS records
zone domain2.net/IN: not loaded due to errors.
external/domain2.net/IN: bad zone
zone domain1.net/IN: loaded serial 2

這是我的named.conf:

key "rndc-key" {
   algorithm hmac-md5;
   secret "nah";
};

controls {
   inet 127.0.0.1 port 953
   allow { 127.0.0.1; } keys { "rndc-key"; };
};

acl internals {
   127.0.0.0/8;
   10.16.0.0/22;
};

view "internal" {
   match-clients { internals; };
   recursion yes;
   zone "domain2.net" {
       type master;
       file "C:\Program Files\ISC BIND 9\etc\zones\domain2.net.int";
   };
   zone "domain1.net" {
       type master;
       file "C:\Program Files\ISC BIND 9\etc\zones\domain1.net.int";
   };
};
view "external" {
   match-clients { any; };
   recursion no;
   zone "domain2.net" {
       type master;
       file "C:\Program Files\ISC BIND 9\etc\zones\domain2.net.ext";
   };
   zone "domain1.net" {
       type master;
       file "C:\Program Files\ISC BIND 9\etc\zones\domain1.net.ext";
   };
};

這是 1 區/域 1,工作區:

; domain1.net
$TTL 86400
$ORIGIN domain1.net.
domain1.net.        IN  SOA dns.domain1.net. hostmaster (
               2           ; Serial number
               10800           ; Refresh
               3600            ; Retry
               604800          ; Expire
               86400)          ; Minimum TTL

           ; Nameservers
           IN  NS  dns.domain1.net.
           IN  NS  dns.domain2.net.

; Records
dns.domain1.net.    IN  A   127.0.0.2

這是 2 區/域 2,損壞的:

; domain2.net
$TTL 86400
$ORIGIN domain2.net.
domain2.net.        IN  SOA dns.domain2.net. hostmaster (
               2           ; Serial number
               10800           ; Refresh
               3600            ; Retry
               604800          ; Expire
               86400)          ; Minimum TTL

           ; Nameservers
           IN  NS  dns.domain2.net.
           IN  NS  dns.domain1.net.

; Records
dns.domain2.net.    IN  A   127.0.0.6

據我所知,Zone 1/Domain 1 執行良好。我已經多次刪除、重新創建和複製這些文件,但都沒有成功。

它忽略了域 2 區域文件中的記錄為“區域外”,這似乎表明zone "domain2.net" {conf 行與domain2.net.區域文件中的名稱不匹配,這可能在您的域混淆中失去。

這兩個字元串在這兩個文件之間是否完全匹配(除了區域文件中的尾隨點),是否有任何特殊字元或編碼差異?

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