我在 FreeBSD 10 上以监禁配置运行 BIND 9.10.2 端口,并且我遇到了一个问题,即rndc reload
即使 SOA 序列已正确递增,也无法获取任何(主主)区域文件更改。
命令本身似乎成功了:
#rndc reload
server reload successful
在我看到的日志中:
May 9 16:03:47 y named[81516]: all zones loaded
May 9 16:03:47 y named[81516]: running
然而,只有重新启动才能named
获取区域更新。
rndc zonestatus my_zone.com
打印旧序列号。所以 BIND 以某种方式无法重新读取区域文件。
我该如何调试呢?
如果这确实是动态更新的区域(
allow-update
/update-policy
指定),直接编辑区域文件是不安全的!在这样的设置中,维护区域文件的是 BIND;缓冲日志文件 (
.jnl
) 中的更改并定期重写区域文件本身。对区域数据的所有更改都应通过动态更新协议发生并由 BIND 管理,而不是通过对区域文件的直接更改。无论如何更改区域文件都会导致不一致的行为,因为区域文件内容将与日志内容和
named
.简而言之,通常您使用动态更新(使用例如
nsupdate
或任何其他客户端)对此类区域进行所有更改,但如果您出于某种原因绝对必须直接控制区域文件,您可以使用暂时暂停动态更新rndc freeze
,然后继续使用rndc thaw
) . 暂停更新是一项相当侵入性的操作(任何更新都将失败,并且更改历史可能会被擦除,具体取决于ixfr-from-differences
),因此在正常操作期间您可能不应该这样做。