命名版本:BIND 9.10.3-P4(最新版本)、操作系统版本:CentOS 6.3,CentOS 6.7
我需要在不同的视图中使用共享区域,因为 9.10 ISC Bind 不支持在不同视图中对同一区域使用同一文件。尝试这样做会导致错误:
/etc/named.conf:21: writeable file 'slaves/example.db': already in use: /etc/named.conf:8
文档建议使用视野内陈述。Brandon Xavier 在 serverfault 中建议相同。但是,我失败了。这是我尝试加载的简化配置文件:
view "internal" {
zone example.com {
type slave;
file "slaves/example.db";
masters { 192.168.1.1; };
};
};
view "external" {
zone example.com {
in-view "internal";
};
};
从外部视图中删除区域 example.com 允许 named 启动。将其配置到单独的文件也有效:
zone example.com {
type slave;
file "slaves/example2.db";
masters { 192.168.1.1; };
};
但指向不同的文件不是一个选项- 在此我仅提供实际配置的示例。此外,当 Bind 尝试启动时,没有输出任何错误消息,日志中也没有任何内容:
# /etc/init.d/named restart
Stopping named: [ OK ]
Starting named:
Error in named configuration:
[FAILED]
是不是很棒?Named-checkconf 没有显示任何错误(我故意删除了逗号或括号 - checkconf 可以正常工作)。我还从 9.10.3-P4 sources.tar.gz(bin/test/system/..)中获取了配置文件,结果是一样的。我应该报告错误吗?
答案1
让我们看看/usr/sbin/named-checkconf
执行了什么并返回了什么。该人说:“如果检测到错误,named-checkconf 将返回退出状态 1,否则返回 0”。
好吧,让我们编写一个脚本来检查有效的命名配置:
#!/bin/bash
/usr/sbin/named-checkconf -z /etc/named.conf >/dev/null 2>&1
echo $?
/usr/sbin/named-checkconf /etc/named.conf >/dev/null 2>&1
echo $?
输出将是1和0。如果我们输入错误named.conf
(例如缺少分号),结果将是1和1。这是什么意思?这意味着即使配置中没有错误,但使用 -z 键,返回代码也是 1 -任何输出都被视为错误。删除2>&1
仅保留 stderr 没有任何效果,因此此问题最简单的临时修复方法是-z
通过将以下指令放入/etc/sysconfig/named
DISABLE_ZONE_CHECKING="yes"
BIND 9.10.1-RedHat-9.10.1-0.el6
PS 在结果上运行上述脚本0和0在有效命名配置上。结论是:这是named-checkconf
返回值中的一个错误,当正常输出结果为 1 时返回代码。将向 ISC 提交带有解释、测试和配置的错误。
注意!此解决方案是临时的,直到修复实施为止。禁用区域检查将不会发现区域中的错误、缺少声明文件等。仅在使用in-view
指令时才禁用它。
答案2
在 CentOS 6 上运行没有任何问题
# ./named -v
BIND 9.10.3-P4 <id:ebd72b3>
# ./named -V
BIND 9.10.3-P4 <id:ebd72b3>
built by make with '--prefix=/opt/bind-9.10.3-P4' '--with-libtool' '--with-dlz-stub' '--with-dlz-filesystem' '--with-dlopen' '--without-idn'
compiled by GCC 4.4.7 20120313 (Red Hat 4.4.7-16)
compiled with OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
linked to OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
compiled with libxml2 version: 2.7.6
linked to libxml2 version: 20706
# ./rndc status
version: BIND 9.10.3-P4 <id:ebd72b3>
boot time: Mon, 21 Mar 2016 11:44:26 GMT
last configured: Mon, 21 Mar 2016 11:44:26 GMT
CPUs found: 4
worker threads: 4
UDP listeners per interface: 2
number of zones: 3
debug level: 3
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
附言
# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.7 (Final)
Release: 6.7
Codename: Final