BIND9 DNS 与内部视图中的外部视图

BIND9 DNS 与内部视图中的外部视图

我正在规划一种具有特殊视图的新 BIND9 DNS 服务器。

我们有很多外部区域和公共 IPv4 地址。为了简单起见,我们在外部域中设置了一个子区域,仅用于内部范围;例如:local.example.com

我们的目标是使事情保持简单,并且不要为内部和外部视图中的不同的 example.com 区域而烦恼。

为此,我必须将内部客户端限制为仅 local.example.com 区域。但内部客户端应该将外部地址解析为,因为我们有具有公共 IPv4 地址的内部客户端。

将内部区域视为维恩图中的一组。外部集位于内部集内,因此所有区域也应在内部范围内且未经修改。

主要问题可以概括如下:我可以在内部和外部视图中指向相同的数据库区域文件吗?

答案1

只需使用 acl 将查询限制到您的内部区域。

acl internal-networks {
    10.0.0.0/8;
    172.16.0.0/12;
    192.168.0.0/16;
};

zone "internal.example.com" {
    type master;
    file "internal.example.com";
    allow-query { internal-networks; };
};

您可以将其他 IP 地址添加到内部网络 ACL。无论它们是否可公开路由,您添加的任何内容都可以查询区域。

答案2

如果是普通的静态主区域(即,named 只会读取文件),则可以引用相同的区域文件。如果是从属区域、启用了动态更新的区域或类似的东西,它将中断。

使用include在配置文件中,您甚至可以将视图之间共享的区域的定义放在单独的文件中,并在两个视图中引用它。当然,这是否可行取决于您是否想对区域进行不同的设置。

(如果要共享区域的子集,您可以使用$INCLUDE在区域文件本身内。

相关内容