区域文件

所需的区域文件有两种类型。一种类型是将 IP 地址指派给主机名,另一种类型则正相反:为 IP 地址提供主机名。

[Tip]在区域文件中使用点

. 在区域文件中有重要的含义。如果给出主机名而末尾没有加 .,则会追加区域。通过完整域名指定的完整主机名必须以 . 结尾,避免再将域添加到主机名上。点丢失或放错位置可能是名称服务器配置出错最常见的原因。

首先研究以下区域文件 example.com.zone,该区域文件负责域 example.com,如例 22.6 “文件 /var/lib/named/example.com.zone”所示。

例 22.6. 文件 /var/lib/named/example.com.zone

1.  $TTL 2D 
2.  example.com. IN SOA      dns  root.example.com. ( 
3.               2003072441  ; serial
4.               1D          ; refresh
5.               2H          ; retry
6.               1W          ; expiry
7.               2D )        ; minimum
8.  
9.               IN NS       dns 
10.              IN MX       10 mail
11. 
12. gate         IN A        192.168.5.1 
13.              IN A        10.0.0.1 
14. dns          IN A        192.168.1.116 
15. mail         IN A        192.168.3.108 
16. jupiter      IN A        192.168.2.100
17. venus        IN A        192.168.2.101
18. saturn       IN A        192.168.2.102
19. mercury      IN A        192.168.2.103
20. ntp          IN CNAME    dns 
21. dns6         IN A6  0    2002:c0a8:174::

第 1 行:

$TTL 定义默认存活时间,它适用于此文件中的所有项。在本例中,项在两天 (2 D) 内有效。

第 2 行:

这是 SOA(Start Of Authority,起始授权机构)控制记录开始的位置:

  • 在第一个位置,要管理的域的名称是 example.com。这个域名以 . 结尾,否则可能会再次追加区域。或者,可以在这里输入 @,在这种情况下,可以从 /etc/named.conf 中的相应项中抽取区域。

  • IN SOA 之后是用作此区域主服务器的名称服务器的名称。此名称从 dns 扩展为 dns.example.com,因为它没有以 . 结尾。

  • 随后是负责此名称服务器的用户的电子邮件地址。因为 @ 符号已经有特殊含义,所以在这里改为输入 .。对于 root@example.com,该项必须显示为类似 root.example.com。. 此 . 必须包含在末尾,以防止添加区域。

  • ( 和 ) 之间包含的所有行组成 SOA 记录。

第 3 行:

serial number 可以是任一数字,每次更改此文件时此数字都会增加。需要将这些更改通知给辅助名称服务器(从属服务器)。为此,日期和运行数字常采用 10 位数字格式,书写方式为 YYYYMMDDNN,这已成为惯用格式。

第 4 行:

refresh rate 指定二级名称服务器校验区域 serial number 的时间间隔。在本例中,此时间间隔为一天。

第 5 行:

retry rate 指定二级名称服务器在出现错误时尝试再次联系主服务器的时间间隔。这里的时间间隔是两小时。

第 6 行:

expiration time 指定二级名称服务器在无法重新联系上主服务器时将在多长时间后丢弃缓存的数据。这里为一周。

第 7 行:

SOA 记录中的最后一项指定 negative caching TTL - 缓存来自其他服务器的未解析 DNS 查询结果的时间。

第 9 行:

IN NS 指定负责此域的名称服务器。dns 扩展为 &dnsname ,因为它没有以 . 结尾。可以有多个与此行类似的行 - 一行用于主名称服务器,其他各行分别用于每个二级名称服务器。如果 /etc/named.conf 中未将 notify 设置为 no,则会将区域数据的更改通知给这里列出的所有名称服务器。

第 10 行:

MX 记录指定接受、处理和转发域 example.com 的电子邮件的邮件服务器。在本例中,邮件服务器是主机 mail.example.com。主机名称前面的数字是优先顺序值。如果有多个 MX 项,则首先采用具有最小值的邮件服务器,如果向此服务器递送邮件失败,则尝试采用具有稍大一些值的邮件服务器。

第 12–19 行:

这些都是实际的地址记录,在这里将一个或多个 IP 地址指派到主机名。名称在此处列出,不带 .,因为这些名称不包含自己的域,因此会将 example.com 添加到所有名称。因为主机 gate 有两个网卡,所以为其指派两个 IP 地址。只要主机地址是传统地址 (IPv4),就将使用 A 标记该记录。如果地址是 IPv6 地址,则使用 AAAA 标记此项。

[Note]IPv6 语法

IPv6 记录与 IPv4 记录的语法稍有不同。由于可能进行碎片整理,所以需要在寻址前提供有关缺失位的信息。要仅使用所需数目的 “0” 填写 IPv6 地址,请在地址中的正确位置添加两个冒号。

pluto     AAAA 2345:00C1:CA11::1234:5678:9ABC:DEF0
pluto     AAAA 2345:00D2:DA11::1234:5678:9ABC:DEF0
第 20 行:

别名 ntp 可用于确定 dnsCNAME 是指规范名称)的地址。

伪域 in-addr.arpa 用于 IP 地址到主机名的反向查找。它被追加到采用反向表示法的地址的网络部分。因此,将 192.168 解析成 168.192.in-addr.arpa。参见 例 22.7 “反向查找”

例 22.7. 反向查找

1.  $TTL 2D
2.  168.192.in-addr.arpa.   IN SOA dns.example.com. root.example.com. (
3.                          2003072441      ; serial
4.                          1D              ; refresh
5.                          2H              ; retry
6.                          1W              ; expiry
7.                          2D )            ; minimum
8.
9.                          IN NS           dns.example.com.
10. 
11. 1.5                     IN PTR          gate.example.com. 
12. 100.3                   IN PTR          www.example.com. 
13. 253.2                   IN PTR          cups.example.com. 

第 1 行:

$TTL 定义应用于此处所有项的标准 TTL。

第 2 行:

此配置文件应激活网络 192.168 的反向查找。由于区域名为 168.192.in-addr.arpa,因此不应将此区域添加到主机名中。因此,所有主机名都以完整格式输入 - 带有域并以 . 结尾。其余的项对应于上一个 example.com 示例介绍的那些内容。

第 3–7 行:

请参见关于 example.com 的上一个示例。

第 9 行:

此行也是指定负责此区域的名称服务器。但这次采用完整形式输入名称,带有域且末尾带有 .

第 11–13 行:

这些都是提示各自主机上 IP 地址的指针记录。只在行的开头输入 IP 地址的最后一部分,在末尾不加 .。将区域追加到这个地址(不带 .in-addr.arpa)将产生采用反向顺序的完整 IP 地址。

通常,可以在 BIND 的不同版本间传送区域,不会产生任何问题。