1.7. 在 BIND 中配置响应策略区以覆盖 DNS 记录
				通过使用 DNS 块和过滤,管理员可以重写 DNS 响应,来阻止对某些域或主机的访问。在 BIND 中,响应策略区域 (RPZ) 提供此功能。您可以为受阻条目配置不同的操作,如返回 NXDOMAIN 错误或不响应查询。
			
如果您的环境中有多个 DNS 服务器,请使用此流程在主服务器上配置 RPZ,稍后配置区传输以在您的次要服务器上提供 RPZ。
先决条件
- 已配置了 BIND,例如作为缓存名称服务器。
- 
						named或named-chroot服务正在运行。
流程
- 编辑 - /etc/named.conf文件并进行以下更改:- 在 - options语句中添加- response-policy定义:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 您可以在 - response-policy的- zone语句中为 RPZ 设置自定义名称。但是,在下一步中,您必须在区定义中使用相同的名称。
- 为您在上一步中设置的 RPZ 添加 - zone定义:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这些设置状态: - 
										此服务器是名为 rpz.local的 RPZ 的主服务器 (type master)。
- 
										/var/named/rpz.local文件是区域文件。如果您设置了相对路径,如本例中所示,这个路径相对于您在options语句中的目录中创建的directory相对。
- 
										allow-query中定义的任何主机都可以查询此 RPZ。另外,还可指定 IP 范围或 BIND 访问控制列表 (ACL) 别名来限制访问。
- 没有主机可以传输区域。仅在设置次要服务器并且仅为次要服务器的 IP 地址时才允许区域传送。
 
- 
										此服务器是名为 
 
- 验证 - /etc/named.conf文件的语法:- named-checkconf - # named-checkconf- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果命令没有显示输出,则语法为正确的。 
- 使用以下内容创建 - /var/named/rpz.local文件,例如:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这个区域文件: - 
								将资源记录的默认生存时间 (TTL) 值设置为 10 分钟。如果没有时间后缀(例如没有使用 h指定小时),BIND 会将该值解析为秒。
- 包含所需的 SOA 资源记录,以及有关该区域的详细信息。
- 
								将 ns1.example.com设置为此区域的权威 DNS 服务器。要正常工作,区域需要至少一个域名服务器 (NS) 记录。但是,若要与 RFC 1912 兼容,您需要至少有两个域名服务器。
- 
								将查询的 NXDOMAIN错误返回给该域中的example.org和主机。
- 
								将查询丢弃至此域中的 example.net和主机。
 - 有关操作和示例的完整列表,请参阅 IETF 草案:DNS 响应策略区域(RPZ)。 
- 
								将资源记录的默认生存时间 (TTL) 值设置为 10 分钟。如果没有时间后缀(例如没有使用 
- 验证 - /var/named/rpz.local文件的语法:- named-checkzone rpz.local /var/named/rpz.local - # named-checkzone rpz.local /var/named/rpz.local zone rpz.local/IN: loaded serial 2022070601 OK- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重新载入 BIND: - systemctl reload named - # systemctl reload named- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果在 change-root 环境中运行 BIND,请使用 - systemctl reload named-chroot命令来重新加载该服务。
验证
- 尝试解析 - example.org中的主机,该主机在 RPZ 中配置,以返回- NXDOMAIN错误:- dig @localhost www.example.org - # dig @localhost www.example.org ... ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30286 ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 本例假定 BIND 在同一主机上运行并响应 - localhost接口上的查询。
- 尝试解析 - example.net域中的主机,该域在 RPZ 中配置以丢弃查询:- dig @localhost www.example.net - # dig @localhost www.example.net ... ;; connection timed out; no servers could be reached ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow