我正在计划一个新的BIND9 DNS服务器与一个特殊的观点。
我们有很多外部区域和公共IPv4地址。 为了简单起见,我们有一个外部域的子域用于内部范围。 像这样:local.example.com
我们的目标是保持简单,并且不要在内部和外部视图中使用不同的example.com区域。
要做到这一点,我必须只限制内部客户端的local.example.com区域。 但是内部客户端应该parsing外部地址,因为我们有内部的公共IPv4地址的客户端。
将内部区域看作一组维恩图。 外部集合在内部集合内部,所以所有的区域也应该在内部范围内并且不被修改。
主要的问题可以概括为:我可以在内部和外部视图中指向相同的db区文件吗?
只需使用一个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地址添加到内部networkingacl。 它们是否可公开路由并不重要; 无论你添加什么都可以查询区域。
如果它是正常的静态主区域(即命名只会读取文件),您可以引用相同的区域文件。 如果是从属区域,启用了dynamic更新的区域或类似的区域将会中断。
通过在configuration文件中使用include ,甚至可以将视图之间共享区域的定义放在单独的文件中,并在两个视图中引用它们。 当然这是否可行取决于你是否想对区域设置不同的东西。
(如果要共享某个区域的子集,则可以在区域文件本身内使用$INCLUDE 。)