现在我正在移动我的主要服务器,我花了一些时间来改进和简化它的一些设置,现在它已经进入 DNS 服务器(在新设置中绑定 9.9.5)。
我注意到在我的配置中,我有很多区域是这样定义出来的:
zone "123.123.123.123.in-addr.arpa" in {
type master;
file "123.123.123.123";
};
zone "123.123.123.124.in-addr.arpa" in {
type master;
file "123.123.123.124";
};
zone "example.com" in {
type master;
file "example.com";
};
zone "example.net" in {
type master;
file "example.net";
};
// With another ~20 definitions like that
我觉得这非常低效。有没有办法自动加载指定目录中的所有文件options { directory "/some/folder" }
,并假设每个文件都是 master?
答案1
不,没有办法在named.conf
及其包含的文件中执行此操作。每个区域都必须明确定义,并且至少要定义类型和数据源。如果多个区域包含的记录完全重复,则可以让它们引用同一个文件,但这是唯一的捷径。
其他选择能在全局选项块(allow-transfer
、also-notify
等)中设置了它们的默认值,但您只能定义每个区域和至少必填字段。
为了完整起见,我将提到 BIND 新版本中的一个例外,我强烈建议不要这样做。您可以使用新rndc addzone
功能远程动态创建区域,但这实际上会创建一个额外的配置文件,该文件具有散列名称(即文件名中的随机字符)和.nzf
BIND“知道”要加载的后缀。这是很坏从可维护性的角度来看,它违反了最小惊奇/惊讶原则;主配置文件没有引用这些附加配置文件,其他管理员不知道这些文件的内容正在被加载,除非他们熟悉该功能。(大多数 DNS 管理员都因为它的新颖性而这样做)
https://ftp.isc.org/isc/bind/9.10.3rc1/doc/arm/man.rndc.html
addzone 区域 [类 [视图]] 配置
在服务器运行时添加区域。此命令要求将 allow-new-zones 选项设置为 yes。命令行上指定的配置字符串是区域配置文本,通常放置在 named.conf 中。
配置保存在名为 hash.nzf 的文件中,其中 hash 是根据视图名称生成的加密哈希值。当 named 重新启动时,该文件将加载到视图配置中,以便添加的区域在重新启动后可以保留。
此示例 addzone 命令会将区域 example.com 添加到默认视图:
$ rndc addzone example.com'{类型主控;文件“example.com.db”;};'
(请注意区域配置文本周围的括号和分号。)
另请参阅 rndc delzone 和 rndc modzone。