自动为多个区域文件假设主

Jar*_*und 3 domain-name-system debian configuration bind

现在我正在移动我的主服务器,我花了一些时间改进和简化它的一些设置,现在它已经来到了 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
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎非常低效。有没有一种方法可以自动加载找到的所有文件options { directory "/some/folder" },并为每个文件假设 master指定的目录?

And*_*w B 8

不,没有办法在named.conf其包含的文件中执行此操作。必须明确定义每个区域,并至少定义类型和数据源。如果它们包含的记录应该完全重复,您可以让多个区域引用同一个文件,但这是唯一的快捷方式。

其他选项可以在全局选项块(allow-transferalso-notify等)中设置其默认值,但您必须至少定义每个区域和必填字段。

为完整起见,我将提到一个我强烈建议反对的较新版本 BIND 的例外情况。您可以使用新rndc addzone功能远程动态创建一个区域,但这实际上是创建一个附加配置文件,该文件具有散列名称(即文件名中的随机字符)和.nzfBIND“知道”要加载的后缀。从可维护性的角度来看,这是非常糟糕的,因为它违反了最小惊讶/惊讶原则;主配置文件没有引用这些额外的配置文件,其他管理员不会知道这些文件的内容正在加载,除非他们熟悉该功能。(而且非常 DNS 管理员是由于它的新事物)

https://ftp.isc.org/isc/bind/9.10.3rc1/doc/arm/man.rndc.html

addzone zone [class [view]] 配置

在服务器运行时添加区域。此命令需要将 allow-new-zones 选项设置为 yes。在命令行上指定的配置字符串是通常放置在 named.conf 中的区域配置文本。

配置保存在名为 hash.nzf 的文件中,其中 hash 是根据视图名称生成的加密散列。当 named 重新启动时,该文件将被加载到视图配置中,以便添加的区域在重新启动后可以保留。

此示例 addzone 命令会将区域 example.com 添加到默认视图:

$ rndc addzone example.com '{ type master; 文件“example.com.db”;};'

(注意区域配置文本周围的括号和分号。)

另请参阅 rndc delzone 和 rndc modzone。