![Bind 无法加载区域,checkzone 说 OK,checkconf 不同意,从已知工作区域复制](https://linux22.com/image/707086/Bind%20%E6%97%A0%E6%B3%95%E5%8A%A0%E8%BD%BD%E5%8C%BA%E5%9F%9F%EF%BC%8Ccheckzone%20%E8%AF%B4%20OK%EF%BC%8Ccheckconf%20%E4%B8%8D%E5%90%8C%E6%84%8F%EF%BC%8C%E4%BB%8E%E5%B7%B2%E7%9F%A5%E5%B7%A5%E4%BD%9C%E5%8C%BA%E5%9F%9F%E5%A4%8D%E5%88%B6.png)
我有一台在 Windows Server 2012 R2 上运行的 BIND9 (9.9.10-P2) 服务器。我有 2 个视图 - 内部和外部 - 为我拥有的域提供两个区域。
由于某种原因,尽管服务器启动时没有任何问题,但其中一个区域拒绝提供答案。在创建区域 2(问题区域)时,由于它的设置与区域 1 完全相同,我只需从区域 1 复制文件并用新名称替换相关位即可。Checkzone 说一切正常,没有显示任何错误。运行 checkconf -z 会为区域 2 抛出错误,但不会为区域 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
据我所知,区域 1/域 1 运行良好。我多次删除、重新创建和复制这些文件,但均未成功。
答案1
它忽略了域 2 区域文件中的记录,认为它们是“区域外”,这似乎表明zone "domain2.net" {
conf 的行与domain2.net.
区域文件中的名称不匹配,这可能在域混淆中丢失了。
这两个字符串匹配吗确切地这两个文件之间(区域文件中的尾随点除外),是否存在特殊字符或编码差异?