我希望将所有区域文件放在几个目录中(我们只是坚持这样的想法,即我不知道会有多少个目录,也不知道它们的名称是什么)并让 BIND 将它们全部包含进去。(不是递归,只是第一个文件夹中的区域文件)
换句话说,这样的事情可能吗?
options {
directory "/var/bindconf/*";
}
文件夹结构如下:
/var/bindconf/folderA/my_zone_file.conf
/var/bindconf/folderB/my_zone_file_1.conf
/var/bindconf/folderB/my_zone_file_2.conf
/var/bindconf/folderC/my_zone_file_1.conf
/var/bindconf/folderC/my_zone_file_2.conf
/var/bindconf/folderC/my_zone_file_3.conf
问候
答案1
根据 Bind 文档,不:
include 语句语法
包括文件名;
include 语句定义和用法
include 语句在遇到 include 语句的位置插入指定文件。include 语句允许读取或写入某些内容,但不允许写入其他内容,从而简化配置文件的管理。例如,该语句可以包含仅由名称服务器读取的私钥。
同样的事情也适用于 options 指令:
目录
服务器的工作目录。配置文件中的任何非绝对路径名都将被视为相对于此目录。大多数服务器输出文件(例如,named.run)的默认位置是此目录。如果未指定目录,则工作目录默认为“.”,即服务器启动的目录。指定的目录应该是绝对路径。
答案2
如果您只是希望将域名放在单独的文件夹中,您可以通过创建一个包含所有其他文件内容的文件来解决这个问题:例如:
/var/bindconf/folderA/my_zone_file.conf
/var/bindconf/folderB/my_zone_file_1.conf
/var/bindconf/folderB/my_zone_file_2.conf
/var/bindconf/folderC/my_zone_file_1.conf
/var/bindconf/folderC/my_zone_file_2.conf
/var/bindconf/folderC/my_zone_file_3.conf
然后制作内容文件:
cat /var/bindconf/*/*.conf > content_file_name.zones
然后,您将此“content_file_name.zones”包含在您的named.conf中。 然后,每次添加或修改其中一个.conf文件时,您只需再次重新运行“cat”脚本,然后再重新加载/重新启动绑定服务。