如何验证 BIND 从属名称服务器是否确实与主服务器正确同步(并在之后修复它)?

如何验证 BIND 从属名称服务器是否确实与主服务器正确同步(并在之后修复它)?

我已经设置了两个名称服务器,一个主服务器和一个从服务器,如下所示:链接。主服务器上的网站按预期提供服务,这证明设置正常运行。

不过最近我开始怀疑从服务器与主服务器没有正确同步。在错误检查期间,我尝试重新加载一个随机区域文件:

rndc reload domain.tld

(“domain.tld” 为占位符)

迎接我们的只有这些:

zone refresh queued

以上是返回的消息,无论测试的域是什么。

我尝试搜索整个从服务器任何区域文件(find / -name *.zone),没有结果(但由于我不完全了解 BIND 设置的工作原理,我甚至不确定从属服务器是否应该包含像主服务器一样的区域文件,这使得搜索可能变得多余)。

然后我检查了 named.run 日志,它充满了以下条目:

dumping master file: tmp-CWKpRfrNi0: open: permission denied

在我看来这似乎是权限问题,但老实说我不太确定。顺便说一句,我也尝试过重新加载区域文件增加序列,但没有运气。

  1. 有没有办法验证从属服务器是否按预期运行?
  2. 假设以上信息足以得出结论,错误实际上是罪魁祸首,并且服务器有故障,我该如何解决它?

答案1

来自 CentOS 6 的 bind-9.8.2-0.37 在从属重新启动后显示(对于每个区域,即使它们已经被缓存):

08-Apr-2016 12:15:07.571 zone example.com/IN: loaded serial 2016040103

named.conf 包含以下内容:

logging {
  channel general_file      { file "/var/log/named/general.log" versions 3 size 5m; severity dynamic; print-time yes; };
  category general      { general_file; };
};

无需搜索区域文件,您应该在 named.conf 中手动定义它们,因此它们的位置应该很容易确定。也许您的 chroot 配置错误,即 named 运行时认为文件系统的根目录位于 /var/named/chroot 之类的地方,并且没有在那里设置适当的权限。

答案2

更新主服务器上区域的序列号,rndc 重新加载,然后在从服务器上的 /var/named/data/named.run 中 grep 序列号

相关内容