20.5. 区域文件

所需的区域文件有两种类型。其中一个向主机名指定 IP 地址,另一个向 IP 地址指定主机名:它为 IP 地址提供主机名。

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

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

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

例 20.6. 文件 /var/lib/named/world.zone

$TTL 2D
world.cosmos. IN SOA      gateway  root.world.cosmos. (
            2003072441  ; serial
            1D          ; refresh
            2H          ; retry
            1W          ; expiry
            2D )        ; minimum

            IN NS       gateway
            IN MX       10 sun

gateway     IN A        192.168.0.1
            IN A        192.168.1.1
sun         IN A        192.168.0.2
moon        IN A        192.168.0.3
earth       IN A        192.168.1.2
mars        IN A        192.168.1.3
www         IN CNAME    moon
第 1 行:

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

第 2 行:

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

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

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

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

  • () 之间包含的所有行组成 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 指定负责此域的名称服务器。gateway 被扩展为 gateway.world.cosmos,因为它没有以 . 结尾。可以有多个与此行类似的行,一行用于主名称服务器,其它每行分别用于每个辅助名称服务器。如果 /etc/named.conf 中未将 notify 设置为 no,则会将区域数据的更改通知给这里列出的所有名称服务器。

第 10 行:

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

第 12-17 行:

这些都是实际的地址记录,在这里将一个或多个 IP 地址指派到主机名。这里列出的名称不带 .,因为这些名称不包含它们的域,所以会在所有这些名称后面添加 world.cosmos。因为主机 gateway 有两个网卡,所以为其指派两个 IP 地址。只要主机地址是传统地址 (IPv4),就将使用 A 标记该记录。如果地址是 IPv6 地址,则使用 A6 标记此项。IPv6 地址以前的标记是 AAAA,现在已经不使用该标记了。

[Note]A6 语法

A6 记录的语法与 AAAA 的略有不同。由于可能进行碎片整理,所以需要在寻址前提供有关缺失位的信息。即使要使用没有分段的地址,也应该提供此信息。对于旧的 AAAA 记录,使用以下语法

 pluto IN            AAAA 2345:00C1:CA11:0001:1234:5678:9ABC:DEF0
 pluto IN            AAAA 2345:00D2:DA11:0001:1234:5678:9ABC:DEF0

需要以 A6 格式添加有关缺失位的信息。由于上述示例是完整的(不缺失任何位),所以此记录的 A6 格式如下:

 pluto  IN            AAAA 0 2345:00C1:CA11:0001:1234:5678:9ABC:DEF0
 pluto  IN            AAAA 0 2345:00D2:DA11:0001:1234:5678:9ABC:DEF0

请勿使用具有 IPv6 映射的 IPv4 地址。如果某一主机具有 IPv4 地址,则它将使用 A 记录而不是 A6。

第 18 行:

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

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

例 20.7. 反向查找

    

$TTL 2D
1.168.192.in-addr.arpa. IN SOA gateway.world.cosmos. root.world.cosmos. (
                        2003072441      ; serial
                        1D              ; refresh
                        2H              ; retry
                        1W              ; expiry
                        2D )            ; minimum

                        IN NS           gateway.world.cosmos.

1                       IN PTR          gateway.world.cosmos.
2                       IN PTR          earth.world.cosmos.
3                       IN PTR          mars.world.cosmos.
第 1 行:

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

第 2 行:

此配置文件应激活网络 192.168.1.0 的反向查找。由于区域名为 1.168.192.in-addr.arpa,因此不应将此区域添加到主机名中。因此,采用完整形式输入所有主机名(带有它们的域并且在末尾有 .)。其余的项对应于上一个 world.cosmos 示例介绍的那些内容。

第 3-7 行:

请参见上一个关于 world.cosmos 的示例。

第 9 行:

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

第 11-13 行:

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

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