本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第4章,第4.4节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
4.4 简写
到目前为止,已经创建完一个primary名称服务器所需要的所有文件。回过头来再看一下区域数据文件;其中并没有使用简写。除非事先已经见过并理解了那些完整的写法,否则直接看简写的格式会觉得晦涩难懂。现在已经知道了完整的写法,也看过了BIND的配置文件,下面是该看看简写的时候了。
**
4.4.1 附加域名**
zone语句的第二个字段用来指定域名。这个域名对于最有用的简写来说非常关键。该域名是区域数据文件中所有数据的来源(origin)。这个来源会被附加到区域数据文件中所有不以“.”结尾的名称之后,并且每个区域数据文件中的来源都各不相同,因为每个文件所描述的都是不同的区域。
既然来源会被附加在名称之后,那么在db.movie.edu中输入shrek.movie.edu的地址时就可以不用像下面这样:
![6c6d84bfb7233775600ffd9f15156af5bec3a0f8](https://yqfile.alicdn.com/6c6d84bfb7233775600ffd9f15156af5bec3a0f8.png?x-oss-process=image/resize,w_1400/format,webp)
而是可以这样输入:
![99b7924f42a05a712edb58695c9af584296f3e11](https://yqfile.alicdn.com/99b7924f42a05a712edb58695c9af584296f3e11.png?x-oss-process=image/resize,w_1400/format,webp)
在db.192.24.249文件中,曾经输入的是:
![b715570e6002ba08d3dc9d2338d1ba97a1f5c84e](https://yqfile.alicdn.com/b715570e6002ba08d3dc9d2338d1ba97a1f5c84e.png?x-oss-process=image/resize,w_1400/format,webp)
因为249.249.192.in-addr.arpa是来源,所以可以这样输入:
还记得早先关于使用完全限定域名(fully qualified domain name)时,不能省略结尾处点号的警告吗?假设忘记了结尾处的点号,则像下面这样的输入:
![b13aab6b8cd4faea05b29069a3ad8bc6a909ca9a](https://yqfile.alicdn.com/b13aab6b8cd4faea05b29069a3ad8bc6a909ca9a.png?x-oss-process=image/resize,w_1400/format,webp)
将会变成shrek.movie.edu.movie.edu,完全不是想要的结果。
4.4.2 @符号
如果一个域名和来源相同的话,那么该名称就可以被表示为“@”。这最常出现在区域数据文件的SOA记录中。SOA记录可以像这样输入:
4.4.3 重复最后一个名称
如果某个资源记录的名称(从第一列开始)是空格(space)或制表符(tab),那么它就沿用上一个资源记录所使用的名称。如果一个名称对应着多个资源记录,那么就可以这样使用。下面是一个名称有两个地址记录的例子:
![56a024fc402300a1d224631905267296ab6f5149](https://yqfile.alicdn.com/56a024fc402300a1d224631905267296ab6f5149.png?x-oss-process=image/resize,w_1400/format,webp)
在第二个地址记录中,名称wormhole被省略了。即使资源记录的类型不同,也能够使用这样的简写方式。
4.4.4 简化后的区域数据文件
现在已经展示了简写的格式,接下来将利用简写把原先的区域数据文件重写一次。
下面是db.movie.edu文件中的内容:
![74bc1e83ba4dbdfd43d5b6129c8d8cc550a69caf](https://yqfile.alicdn.com/74bc1e83ba4dbdfd43d5b6129c8d8cc550a69caf.png?x-oss-process=image/resize,w_1400/format,webp)
下面是db.192.249.249文件中的内容:
![c64b51aed36c7a609ddcaaeb7d447e6f28c3c043](https://yqfile.alicdn.com/c64b51aed36c7a609ddcaaeb7d447e6f28c3c043.png?x-oss-process=image/resize,w_1400/format,webp)
下面是db.192.253.253文件中的内容:
![851da9642967ff65b06c874ea705642e79754774](https://yqfile.alicdn.com/851da9642967ff65b06c874ea705642e79754774.png?x-oss-process=image/resize,w_1400/format,webp)
下面是db.127.0.0文件中的内容:
仔细查看新的db.movie.edu文件,就会注意到在SOA和NS记录中,可以移除主机名称部分的movie.edu,就像下面这样:
但是在其他的区域数据文件中不能这样做,因为它们的来源不同。在上面的db.movie.edu文件中,使用的都是完全限定域名,这样NS和SOA记录对于所有区域数据文件来说就完全相同了。