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
指定允许哪些主机查询名称服务器以获取非权威数据,如递归查询。默认情况下,仅允许 localhost
和localnets
。黑色
指定不允许哪些主机查询名称服务器。当特定主机或网络充满请求时,应使用此选项。默认选项为 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 设置为slave
,master
指令会告知主服务器的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; }; };