我一直在使用 debian,因此 CentOS 7 中的情况有所不同。我尝试设置绑定,但是它无法启动。并且没有显示确切的错误。
错误 :
systemctl status -l named.service
named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2016-08-08 20:20:25 UTC; 8s ago
Process: 8822 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=1/FAILURE)
Aug 08 20:20:25 asdfs bash[8822]: zone IP.in-addr.arpa/IN: loaded serial 2016082802
Aug 08 20:20:25 asdfs bash[8822]: zone localhost.localdomain/IN: loaded serial 0
Aug 08 20:20:25 asdfs bash[8822]: zone localhost/IN: loaded serial 0
Aug 08 20:20:25 asdfs bash[8822]: 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
Aug 08 20:20:25 asdfs bash[8822]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Aug 08 20:20:25 asdfs bash[8822]: zone 0.in-addr.arpa/IN: loaded serial 0
Aug 08 20:20:25 asdfs systemd[1]: named.service: control process exited, code=exited status=1
Aug 08 20:20:25 asdfs systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).
Aug 08 20:20:25 asdfs systemd[1]: Unit named.service entered failed state.
Aug 08 20:20:25 asdfs systemd[1]: named.service failed.
我的反向文件:
$TTL 1d ;
$ORIGIN IP.IN-ADDR.ARPA.
@ IN SOA ns1.domain1.org. info.domain1.org. (
2016082802
7200
120
2419200
604800
)
IN NS ns1.domain1.org.
IN NS ns2.domain1.org.
1 IN PTR ns1.domain1.org.
2 IN PTR ns2.domain1.org.
@ IN SOA ns1.domain2.org. info.domain2.org. (
2016080931
7200
120
2419200
604800
)
IN NS ns1.domain2.org.
IN NS ns2.domain2.org.
1 IN PTR ns1.domain2.org.
2 IN PTR ns2.domain2.org.
我的named.conf:
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
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;MY.SERVER.IP.ADDRESS; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
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";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "domain2.org" IN {
type master;
file "/etc/named/domains/domain2.db";
allow-update { none; };
};
zone "domain1.org" IN {
type master;
file "/etc/named/domains/domain1.org.db";
allow-update { none; };
};
zone "IP.in-addr.arpa" IN {
type master;
file "/etc/named/domains/reversefile.rev";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
有什么帮助吗?
答案1
我猜是DISABLE_ZONE_CHECKING
环境变量。我猜你肯定在某个地方设置了它,这/etc/sysconfig/named
只是猜测。
答案2
最后我终于搞明白了。实际上在我的named.conf
文件中我使用了allow-query { localhost; my.ip; };
,但我没有使用,allow-transfer
所以我只是交换了。简而言之,我在我的文件中添加了以下内容named.conf
allow-query { any; };
allow-transfer { localhost; server.ip; };
现在它开始工作了。感谢@yoonix 给我的建议/var/log/messages