我最近开始升级到绑定9.9.7,并且遇到绑定的不幸的绊脚石。
我在我的环境中设置了视图,以便根据主机正在运行查询的位置,使我能够区分具有不同IP地址的4个区域。 我服务的其他36个区域并不区分IP地址,而是总是为每个主机提供相同的地址。 为了达到这个目的,我创build了一个单独的主机列表,然后我在named.conf使用include指令在两个区域中包含这些条目。 以下是我在一台从属服务器上运行的configuration的简短示例:
首先,我的named.conf的一个片段
view "sitea" { match-clients {192.168.1.0/24;}; zone "mydomain.com." IN { type slave; masters { 192.168.1.100;}; file "sitea_mydomain.com.db"; }; include "/etc/common_zones.conf"; }; view "siteb" { match-clients {any; }; zone "mydomain.com." IN { type slave; masters {192.168.1.100; }; file "mydomain.com.db"; }; include "/etc/common_zones.conf"; };
并从common_zones.conf文件中的一个片段:
zone "1.168.192.in-addr.arpa." IN { type slave; masters {192.168.1.100;}; file "192.168.1.db"; };
在以前的时间,绑定是非常酷,在视图构造中使用相同的文件两次,但现在不是。 在两个不同视图中列出两次区域文件会导致一个错误,该错误明确告诉您绑定将不允许此configuration。 在这种情况下,它告诉我,它不会启动,因为我使用了一个重复的文件192.168.1.db 具体错误信息是:
writeable file '192.168.1.db': already in use: /etc/common_zones.conf
我的这个问题是在我的现实世界里,我有超过40个区域(反向区域),尽pipe它们来自不同的视angular,但无论如何,它们总会是相同的答案。 能够使用一般包括如上所示是一个很好的方式,让我区分几个主机的域名“ mydomain.com ”。 现在,我可能需要在每个视图中必须input40个区域,尽pipe数据是相同的,但每个区域都指向不同的文件。
有没有人有这个聪明的解决scheme?
如果升级到绑定9.10是可能的话,“在视图中”的声明将完美地解决这个问题( http://www.zytrax.com/books/dns/ch7/zone.html#in-view )。
但是,如果这是不可能的,我注意到一些很有趣的东西,我在查看“在视图中”时不知道。 对于从属区域,“文件”参数(恰好在上述链接中的“视图内”之前)是可选的 。 这可能只是你正在寻找的解决scheme。 我假设该区域将只存在于RAM中,并且每次从属设备重新启动或重新加载该区域时都会被重新传输。 这是值得一试的。 (编辑:你仍然需要你的公共文件的两个版本,一个为文件名的主人,一个没有 – 所以这不是一个完美的解决scheme)
也许用以下的named.confconfiguration:
view "sitea" { include "/etc/common_zones.conf"; match-clients {localhost; ...; }; }; view "siteb" { include "/etc/UNcommon_zones.conf"; match-clients {any;}; };
然后common_zones.conf就是它现在的状态,而在UNcommon_zones.conf你放入了转发器:
zone "..." IN { type forward; forward only; forwarders { 127.0.0.1; }; };
至less不会在相当有限的testing中出错,而testing虚拟机拉动主区域,而另一个testing虚拟机则向所述testing从机NS发出查询。