我已经很久没有设置绑定服务器了。我最近创建了很多 Windows DNS 服务器,所以我想在 CentOS 6 上尝试一下。不幸的是,我在设置区域文件时遇到了很多麻烦。
主机名:shield.domain.com
当我尝试启动该服务时收到以下错误消息:
domain.com.zone:3: SOA record not at top of zone (domain.com.domain.com)
zone domain.com/IN: loading from master file domain.com.zone failed: not at top of zone
zone domain.com/IN: not loaded due to errors.
_default/domain.com/IN: not at top of zone
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
我修改了 /etc/named.conf 文件以包含我的新区域,该文件设置如下:
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
forwarders { <IP_ADDR_1>;<IP_ADDR_2>;<IP_ADDR_3>;};
};
zone "domain.com" IN {
type master;
file "domain.com.zone";
allow-update { none; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
然后我创建了一个新的区域文件 /var/named/domain.com.zone,并按此配置。我不知道我在顶部的 SOA 记录上做错了什么,或者我的区域文件是否存在其他问题:
$ORIGIN domain.com
$TTL 86400
@ IN SOA shield.domain.com. hostmaster.domain.com. (
2013008413 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
IN NS shield.domain.com.
IN A 10.10.0.175
shield IN A 10.10.0.175
我使用了以下资源,但我发现自己越来越迷失,茫然地盯着区域文件。这是环境中唯一一台同时托管不同服务的服务器:
绑定配置文件:http://centos.org/docs/2/rhl-rg-en-7.2/s1-bind-configuration.html
答案1
日志条目SOA record not at top of zone (domain.com.domain.com)
暗示有些事情不对劲;SOA
文件顶部的记录不被视为应该由此区域文件处理的域的条目。
这可能是由于行与文件中$ORIGIN domain.com
的行不匹配造成的,可能是由于实际不匹配,也可能是 UTF-8 字符串处理问题之类的问题。zone "domain.com" IN {
named.conf
在这种情况下,一个简单的解决方法就是$ORIGIN
从区域文件中删除该行;然后它将根据中的区域定义自动构建named.conf
,确保这些字符串匹配。
答案2
似乎没人注意到,你只是忘记了原始域名末尾的点……就像我似乎没有注意到,这个帖子已经有 9 年的历史了