Nic*_*Nic 7 domain-name-system bind master-slave
我有两台运行 BIND9 的 DNS 服务器,一台主机和一台从机。当主服务器上的区域文件更新时,我希望从服务器立即开始为更改的记录提供服务,但 BIND 给了我一些建议。
DNS 区域传输已经在 master 和 slave 之间正常工作。我可以登录从服务器并运行dig @dnsmaster myzone. AXFR
,它会打印出该区域的全部内容。为了使其工作,DNS 主机配置了notify yes
和also-notify { dnsslave }
。同样,从站配置为allow-transfer { dnsmaster }
.
当 dnsmaster 更新时,我运行rndc reload
并告诉我正在发送通知。通过检查/var/named/slavedata/
. 它们包含最新的数据,与主人知道的相匹配。
现在是奇怪的部分。
从服务器将继续提供旧的、陈旧的 DNS 记录,完全忽略在收到主服务器通知后磁盘上有新数据可用的事实。我使用dig
的检查与此命令的结果:dig @slaveserver record.zone.tld
。
我认为 BIND 可能会保留其权威区域的内存缓存,因此我将max-cache-size
和设置max-cache-ttl
为 0,但这没有任何效果。
我尝试了其他方法来刷新这个所谓的缓存,通过在从服务器上运行类似rndc flush
和 的命令rndc reload
,但它仍然返回旧的陈旧记录。
最后发现MINTTL
onzone被设置为86400(24小时),所以我暂时将其MINTTL
改为15秒,并重启了从服务器。无效 - 从站只会在服务重新启动后提供更新的 DNS 结果。
这里发生了什么?收到区域更新通知时 BIND9 的预期行为是什么?它总是尊重TTL
和MINTTL
吗?我会假设它总是使用最新的可用数据。
在我的智慧结束时,我正在考虑设置一个 crontab 以每小时重新启动 BIND 从设备,以避免提供过时的数据。有更好的吗?
根据您的描述,我无法准确告诉您问题是什么,但我可以帮助您排除一些问题。
缓存大小设置和缓存 ttl 设置适用于缓存的递归查询数据,(正如您已经怀疑的那样)不适用于权威数据。同样,rndc flash 在这里不适用。
建议的故障排除方法:
如果这不起作用,请考虑发布更多信息,包括来自主服务器和从服务器的named.conf部分以及来自两台服务器的日志,了解在主服务器上加载新编辑的区域后所发生的情况。