Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

15.2.2.2. 常见语句类型

/etc/named.conf 中通常使用以下语句类型:
acl
acl (Access Control List)语句允许您定义主机组,以便允许或拒绝访问名称服务器。它采用以下形式:
acl acl-name {
  match-element;
  ...
};
acl-name 语句名称是访问控制列表的名称,而 match-element 选项通常是一个单独的 IP 地址 (如 10.0.1.1)或无 类别间路由 (CIDR)网络表示法(如 10.0.1.0/24)。有关已定义的关键字列表,请参阅 表 15.2 “预定义的访问控制列表”

表 15.2. 预定义的访问控制列表

关键字 描述
任意 匹配每个 IP 地址.
localhost 匹配本地系统正在使用的任何 IP 地址
localnets 匹配本地系统所连接的任何网络上的任何 IP 地址
none 不匹配任何 IP 地址
acl 语句特别适用于与其他 语句(如 选项 )结合使用。例 15.2 “使用 Conjunction 中的 acl 和 Options” 定义两个访问控制列表 :黑语和 红色内容,并在授予 红色 内容普通访问时在黑名单中添加黑色 内容

例 15.2. 使用 Conjunction 中的 acl 和 Options

acl black-hats {
  10.0.2.0/24;
  192.168.0.0/24;
  1234:5678::9abc/24;
};
acl red-hats {
  10.0.1.0/24;
};
options {
  blackhole { black-hats; };
  allow-query { red-hats; };
  allow-query-cache { red-hats; };
};
Include
include 语句允许您在 /etc/named.conf 中包含文件,以便将潜在的敏感数据放入具有受限权限的单独文件中。它采用以下形式:
include "file-name"
file-name 语句名称是文件的绝对路径。

例 15.3. 包含到 /etc/named.conf 的文件

include "/etc/named.rfc1912.zones";
选项
options 语句允许您定义全局服务器配置选项,以及设置其他语句的默认值。它可用于指定指定工作目录的位置、允许的查询类型,等等。它采用以下形式:
options {
  option;
  ...
};
有关常用选项指令列表,请查看以下 表 15.3 “常用配置选项”

表 15.3. 常用配置选项

选项 描述
allow-query 指定允许哪些主机查询权威资源记录的名称服务器。它接受 CIDR 表示法中的访问控制列表、IP 地址集合或网络。默认情况下允许所有主机。
allow-query-cache 指定允许哪些主机查询名称服务器以获取非权威数据,如递归查询。默认情况下,仅允许 localhostlocalnets
黑色 指定不允许哪些主机查询名称服务器。当特定主机或网络充满请求时,应使用此选项。默认选项为 none
directory 指定 named 服务的工作目录。默认选项为 /var/named/
disable-empty-zone 用于从要使用的默认前缀列表中禁用一个或多个空区域。可以在 options 语句中指定,也可以在 语句中指定。它可以多次使用。
dnssec-enable 指定是否返回与 DNSSEC 相关的资源记录。默认选项为 yes
dnssec-validation 指定是否通过 DNSSEC 验证资源记录。默认选项为 yes
empty-zones-enable 控制是否创建空区域。只能在 options 语句中指定。
forwarders 指定应向其转发请求以进行解析的名称服务器的有效 IP 地址列表
forward
指定 forwarders 指令的行为。它接受以下选项:
  • 首先 - 服务器在尝试自行解析名称之前,将查询 forwarders 指令中列出的名称服务器。
  • - 当无法查询 forwarders 指令中列出的名称服务器时,服务器将不会尝试自行解析该名称。
listen-on 指定要侦听查询的 IPv4 网络接口。在同样充当网关的 DNS 服务器上,您可以使用此选项来应答源自单个网络的查询。默认情况下,所有 IPv4 接口都使用。
listen-on-v6 指定要侦听查询的 IPv6 网络接口。在同样充当网关的 DNS 服务器上,您可以使用此选项来应答源自单个网络的查询。默认情况下,所有 IPv6 接口都使用。
max-cache-size 指定用于服务器缓存的最大内存量。达到限制时,服务器会导致记录永久过期,从而不会超过限制。在有多个视图的服务器中,限制将单独应用于每个视图的缓存。默认选项为 32M
notify
指定是否在更新区域时通知次要名称服务器。它接受以下选项:
  • - 服务器将通知所有次要名称服务器.
  • - 服务器不会通知任何次要名称服务器
  • 仅主服务器 - 服务器将仅通知区域的主服务器。
  • 显式 - 服务器将仅通知 zone 语句中指定的 second 服务器。
pid-file 指定由指定服务创建的进程 ID 文件的位置。
递归 指定是否充当递归服务器。默认选项为 yes
statistics-file 指定统计信息文件的备用位置。默认使用 /var/named/named.stats 文件。
注意
named 用于运行时数据的目录已从 BIND 默认位置 /var/run/named/ 移到新位置 /run/named/。因此,PID 文件已从默认位置 /var/run/named/named.pid 移到新位置 /run/named/named.pid。此外,session-key 文件已移到 /run/named/session.key。这些位置需要通过 options 部分中的语句来指定。请参阅 例 15.4 “使用选项声明”
重要
为防止分布式拒绝服务(DDoS)攻击,建议您使用 allow-query-cache 选项来限制特定客户端子集的递归 DNS 服务。
有关可用选项的完整列表,请参阅 第 15.2.8.1 节 “安装的文档” 中引用的 BIND 9 管理员参考手册和 named.conf 手册页。

例 15.4. 使用选项声明

options {
  allow-query       { localhost; };
  listen-on port    53 { 127.0.0.1; };
  listen-on-v6 port 53 { ::1; };
  max-cache-size    256M;
  directory         "/var/named";
  statistics-file   "/var/named/data/named_stats.txt";

  recursion         yes;
  dnssec-enable     yes;
  dnssec-validation yes;

  pid-file          "/run/named/named.pid";
  session-keyfile   "/run/named/session.key";
};
zone
zone 语句允许您定义区域的特征,如其配置文件和区域特定选项的位置,并可用于覆盖全局 options 语句。它采用以下形式:
zone zone-name [zone-class] {
  option;
  ...
};
zone-name 属性是区的名称,zone-class 是区域的可选类,选项是一个 zone 语句选项,如 表 15.4 “区域语句中常用选项” 所述。
zone-name 属性尤为重要,因为它是为 /var/named/ 目录中对应区域文件中使用的 $ORIGIN 指令分配的默认值。指定守护进程将区域名称附加到区域文件中列出的任何非限定域名。例如,如果 区域 语句定义了 example.com 的命名空间,请使用 example.com 作为 zone-name,以便将其放置在 example.com 区域文件中的主机名的末尾。
有关区文件的详情请参考 第 15.2.3 节 “编辑区域文件”

表 15.4. 区域语句中常用选项

选项 描述
allow-query 指定允许哪些客户端请求有关该区域的信息。此选项覆盖全局 allow-query 选项。默认情况下允许所有查询请求。
allow-transfer 指定允许哪些次要服务器请求传输区域信息。默认情况下允许所有传输请求。
allow-update
指定允许哪些主机动态更新其区域中的信息。默认选项是拒绝所有动态更新请求。
请注意,在允许主机更新其区域信息时,您应该小心。不要在此选项中设置 IP 地址,除非服务器位于可信网络中。反之,使用 第 15.2.6.3 节 “事务 SIGnatures(TSIG)” 所述 TSIG 密钥。
file 指定包含区域配置数据的指定工作目录中的文件名称
Master 指定从哪个 IP 地址请求权威区域信息。只有在区域定义为 slave 类型时才使用这个选项
notify
指定是否在更新区域时通知次要名称服务器。它接受以下选项:
  • - 服务器将通知所有次要名称服务器.
  • - 服务器不会通知任何次要名称服务器
  • 仅主服务器 - 服务器将仅通知区域的主服务器。
  • 显式 - 服务器将仅通知 zone 语句中指定的 second 服务器。
type
指定 zone 类型。它接受以下选项:
  • 仅委派 - 强制实施基础架构区域的委派状态,如 COM、NET 或 ORG。收到的任何没有显式或隐式委派的答案都将被视为 NXDOMAIN。这个选项仅适用于递归或缓存实施中使用的 TLD(顶级域)或 root 区域文件。
  • forward - 将有关该区域信息的所有请求转发到其他名称服务器。
  • 提示 - 特殊类型的区域,用于指向根名称服务器,当否则不知道区域时解析查询。不需要使用 hint 区域进行默认配置。
  • Master - 将名称服务器指定为该区域的权威。如果区域的配置文件驻留在系统上,则应将区域设置为主区域
  • slave - 将名称服务器设计为这个区域的次要服务器。主服务器在 masters 指令中指定。
对于主名称服务器或从属名称服务器的 /etc/named.conf 文件的大部分更改都涉及添加、修改或删除区域语句 ,并且通常需要一小部分区域声明选项才能使名称服务器高效工作
例 15.5 “主名称服务器的区域语句” 中,区被标识为 example.com,类型被设置为 master,并且指示 named 服务读取 /var/named/example.com.zone 文件。它还仅允许次要名称服务器(192.168.0.2)传输区域。

例 15.5. 主名称服务器的区域语句

zone "example.com" IN {
  type master;
  file "example.com.zone";
  allow-transfer { 192.168.0.2; };
};
次要服务器的 zone 语句略有不同。type 设置为 slavemaster 指令会告知主服务器的 IP 地址。
例 15.6 “次要名称服务器的区域语句” 中,named 服务配置为查询 192.168.0.1 IP 地址 的主服务器,以获取有关 example.com 区域的信息。然后,收到的信息会保存到 /var/named/slaves/example.com.zone 文件中。请注意,您必须将所有次要区域放在 /var/named/slaves/ 目录中,否则该服务将无法传输区域。

例 15.6. 次要名称服务器的区域语句

zone "example.com" {
  type slave;
  file "slaves/example.com.zone";
  masters { 192.168.0.1; };
};