《DNS与BIND(第5版)》——7.3 整理文件-阿里云开发者社区

开发者社区> 云计算> 正文

《DNS与BIND(第5版)》——7.3 整理文件

简介:

本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第7章,第7.3节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。

7.3 整理文件

当首次设置区域时,整理文件很简单:将它们全部放到一个目录中即可。这些文件中包含了一个配置文件和数个区域数据文件。然而,随着时间的推移,任务会越来越艰巨。有更多的网络加入,相应地就有更多in-addr.arpa区域。或许已经授权了一些子域,也已经开始为其他站点备份区域。一段时间后,当使用ls查看名称服务器的目录时,会发现一屏都无法列出所有内容。是时候重新整理这些文件了。BIND提供了一些功能用来帮助进行文件的整理。

BIND名称服务器支持一个叫做include的配置文件语句,它允许将一个文件的内容插入到当前的配置文件中。这个功能可以将一个非常大的配置文件分成多个较小的文件。

区域数据文件(适用于所有BIND版本)支持2条1控制语句:$ORIGIN和$INCLUDE。$ORIGIN语句可以改变一个区域数据文件的来源(origin),而$INCLUDE语句可以在当前的区域数据文件中插入新的文件。这两条控制语句并非资源记录;它们用来帮助维护DNS数据。特别是,它们让区域划分成子域的工作变得更简单:可以将每个子域的数据存放在不同的文件中。

7.3.1 使用多个目录
整理区域数据文件的方法之一,就是将其存放到不同的目录中。如果名称服务器是多个站点所在区域(正向和逆向解析)的primary,则可以将每个站点的区域数据文件分别存放到各自的目录中。另一种方法是将所有primary区域的数据文件存放到一个目录中,而将所有备份区域的数据文件存放到另一个目录中。如果选择将primary和slave区域分开的方式,那么配置文件看起来可能会像下面这个样子:


<a href=https://yqfile.alicdn.com/0853014d52eb38fbff8da697d05dd34a5261e608.png" >

这种划分方法的另一种变化,就是将配置文件分成三个文件:主文件,包含所有primary条目的文件,以及包含所有secondary条目的文件。主配置文件的内容如下所示:


<a href=https://yqfile.alicdn.com/d0d2a0b7a14bbe43d4f59429aba3adc9cc912cd6.png" >

named.conf.primary文件的内容如下所示:


<a href=https://yqfile.alicdn.com/57959b781781b84ce7b7594fca9a508e6c64a17b.png" >

named.conf.slave文件的内容如下所示:


<a href=https://yqfile.alicdn.com/fa40bcadbddb0c2535847eab54cb7064bdd13683.png" >

可能会觉得下面这种整理文件的方法会更好:将包含primary字样的配置文件放入primary子目录中,通过增加一个新的directory指令切换到此目录,并且删除每个文件名中的primary/(因为名称服务器现在就运行在该目录中)。然后对包含secondary字样的配置文件做类似的改变。遗憾的是,这种方法不起作用。BIND只允许定义一个工作目录。当名称服务器在不同目录间不断切换时,事情会变得相当混乱:例如,备份区域数据文件最终会在名称服务器切换到的上一个目录中。
**
7.3.2 改变区域数据文件的来源**
在BIND中,区域数据文件的来源(origin),默认是named.conf文件中zone语句的第二个字段。来源是一个域名,会自动附加到区域数据文件中所有不以“.”结尾的名称上。在区域数据文件中,可以使用$ORIGIN控制语句来修改来源,$ORIGIN后面跟着一个域名。(如果使用完整的域名,则不要忘记结尾的“.”!)此后,凡是不以“.”结尾的名称就会附加上新的来源。如果区域(例如movie.edu)中包含数个子域,可以使用$ORIGIN语句重新设置来源,并简化区域数据文件。例如:


<a href=https://yqfile.alicdn.com/823f88e6a68228b1f07e1ef02143f7d6e0c58b8e.png" >

本书第9章会深入讨论如何创建子域。

7.3.3 引入其他区域数据文件
一旦将区域划分成子域,就会发现,将每个子域的记录分别放在不同的文件中会比较方便。$INCLUDE控制语句可以帮助完成此项工作:


<a href=https://yqfile.alicdn.com/3881db745d3dbc9a3080efd9e0a314b4ec3d083e.png" >

要想进一步简化该文件,可以在引入文件时,在同一行指定新的来源:


<a href=https://yqfile.alicdn.com/829566561f855e4d82ccd613b0ed47f52c4d13ff.png" >

当在同一行指定来源和引入文件时,该来源只会作用于所引入的特定文件。例如,comedy.movie.edu这个来源只作用于db.comedy.movie.edu中的名称。在引入db.comedy.__movie.edu文件后,即使db.comedy.movie.edu中也有$ORIGIN控制语句,来源还是会变回$INCLUDE之前的设置。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章