绑定包括文件夹中的所有区域

我有一个作为DNSpipe理器的web应用程序,将所有区域写入“/ var / named”。 我想能够configurationnamed来加载该文件夹中的所有区域,而不必明确告诉它哪个区域转到哪个文件。

这是远程可能的吗?

原因是我将有很多区域添加/删除,并为他们每个人很多的logging。 我正在考虑使用一个数据库,但做500个logging插入的想法吓坏了我(它需要很快)。 写入文件比较容易。

有什么build议么?

正如问题所述,这是不可能bind9。 然而,问题的实质是如何在没有性能影响的情况下对服务的区域进行重大更改。

可能的build议是:

  • 用bind9dynamic加载区域

  • bind10(但是这还不成熟,你可能不希望依赖于关键的生产环境)

  • 另一个DNS服务器,如powerdns。 如果您将SQL后端的默认build议模式用于powerdns,则它将服务域表中的所有区域,因此如果您可以让“dnspipe理器”更新该表,那么您就可以开始工作了。 至less,一个立即解决方法是使powerdns的zone2sql工具获取您的dnspipe理器应用程序创build的区域文件并将其插入到数据库中。

正如其他人所说,这不是直接可能的。

但是,你仍然可以自动化!

设置一个脚本(makefile,bash,what-have-you), 生成一个包含所有区块的正确的bind9configuration文件:

AUTOZONEFILE=/var/lib/named/etc/named.conf.autozone cp -a $AUTOZONEFILE $AUTOZONEFILE.old > $AUTOZONEFILE.new for zonefile in /var/lib/named/master/autozones/*; do CURZONE="$(basename "$zonefile")" cat <<EOF >> $AUTOZONEFILE.new zone "$CURZONE" { type master; file "master/autozones/$CURZONE"; }; EOF done cat $AUTOZONEFILE.new > $AUTOZONEFILE rm $AUTOZONEFILE.new rndc reload 

尝试这样的事情。

我不相信这是可能的。 BIND喜欢让每个区域分别configuration自己的zone块,其中包含区域文件的名称和域名。