目录中的 BIND 通配符

目录中的 BIND 通配符

我希望将所有区域文件放在几个目录中(我们只是坚持这样的想法,即我不知道会有多少个目录,也不知道它们的名称是什么)并让 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”脚本,然后再重新加载/重新启动绑定服务。

相关内容