精读笔记(RHCA 英文教材)· RH358 Chapter 3 Managing DNS and DNS Servers
精读笔记(RHCA 英文教材)· RH358 Chapter 3 Managing DNS and DNS Servers
教材原文:RHCA 官方英文教材(教材第 5~6 页)(OCR 整书版已从本站移除,本页为章节精读) 说明:本教材到手版本为 Instructor Guide(讲师手册),第 3 章只给 Schedule/Objectives/Key Takeaways,无 Instructor Tips;正文细节需配合学生手册与实验。本笔记按“讲义要点 + 必要补充”双语整理,DNS 细节补充参考 RHCE9 第 18 章与 RHEL8 官方配置实践。 关联知识:
RHCE9精读笔记\精读-第18章-域名服务、分章笔记/01-Linux/02-04-日志与网络;前置:RH358 Chapter 1 systemd 服务管理 + Chapter 2 的 NetworkManager/nmcli(配 DNS 客户端)
Chapter 3 | Managing DNS and DNS Servers(管理 DNS 与 DNS 服务器)
- 一句话目标:Explain the operation of DNS service, troubleshoot DNS issues, and configure servers to act as a DNS caching name server or as an authoritative name server.(解释 DNS 服务如何工作、排查 DNS 问题、把服务器配置成缓存 DNS(Unbound)或权威 DNS(BIND 9))
Chapter Objectives(本章目标,双语)
By the end of this chapter, students should be able to:
- Describe the basic operation of the DNS protocol, what domains and zones are, and some key DNS resource records.(描述 DNS 协议基本运作、域与区(domain/zone)的概念、关键 DNS 资源记录)
- Configure a more secure caching name server using Unbound.(用 Unbound 配置更安全的缓存名称服务器)
- Troubleshoot problems with DNS name resolution using standard command-line utilities.(用标准命令行工具排查 DNS 解析问题)
- Configure authoritative DNS name servers using BIND 9.(用 BIND 9 配置权威名称服务器)
- Automate the creation and configuration of a caching name server with Unbound and an authoritative name server with BIND 9.(用 Ansible 自动化部署 Unbound 缓存 DNS 与 BIND 9 权威 DNS)
Chapter Schedule(课时表,共 260 分钟)
| Section | 主题 | 方法 |
|---|---|---|
| 1 | Describing the DNS Service | Lecture + Demo 30 分钟 + Matching Quiz 5 分钟 |
| 2 | Configuring a Caching Name Server with Unbound | Lecture 15 分钟 + Guided Exercise 15 分钟 |
| 3 | Troubleshooting DNS Issues | Lecture 15 分钟 + Guided Exercise 15 分钟 |
| 4 | Configuring Authoritative Name Servers with BIND 9 | Lecture 40 分钟 + Guided Exercise 45 分钟 |
| 5 | Automating Name Server Configuration | Lecture 10 分钟 + Guided Exercise 30 分钟 |
| - | Lab(Performance Checklist) | 40 分钟 + 5 分钟 |
Key Takeaways(本章要点 6 条)
Describe the operation of the Domain Name System (DNS) and its components.(描述 DNS 及其组件的运作) Define the resource records used to store data in DNS.(定义 DNS 中存储数据的资源记录) Install an Unbound caching name server, usable by other clients in the organization.(安装可供组织内其它客户端使用的 Unbound 缓存 DNS) Install primary and secondary BIND authoritative name servers to provide information about your domains to external sources.(安装主/从 BIND 权威 DNS,向外提供本域信息) Perform basic troubleshooting and maintenance of client name resolution, DNS servers, their zone data, and their caches.(对客户端解析、DNS 服务器、区数据与缓存做基础排障与维护) Automate deployment of name servers using Ansible Playbooks.(用 Ansible Playbook 自动化部署 DNS 服务器) 中文归纳考点:① DNS 组件/运作原理;② 资源记录类型;③ Unbound 缓存 DNS 安装与开放;④ BIND 主/从权威 DNS;⑤ 解析/区数据/缓存排障;⑥ Ansible 自动化。
补充精讲 A:DNS 基础(Section 1 对应知识)
- 域(domain)与区(zone):域是按域名层级划分的命名空间子树;区是某台权威服务器真正“负责管理”的那部分(一个域可拆成多个 zone 委派出去)。FQDN(完全合格域名)= 主机名.…域.(根域点),如
www.example.com.,配置/记录中根点常考、易漏。 - 服务器角色:递归解析由客户端设定的 DNS 完成;权威(authoritative)服务器对自身 zone 给出权威答案。缓存 DNS(caching/resolving)替客户端做递归并把结果缓存;权威 DNS 分主服务器(primary/master,区数据源)与从服务器(secondary/slave,从主服务器同步副本)。
- 解析路径:客户端 → hosts/缓存 →
/etc/resolv.conf里的 nameserver(缓存/递归 DNS)→ 根 → 顶级域 → 权威逐级迭代 → 回答案并缓存。详见 RHCE9 第 18 章解析流程图。 - 关键资源记录(resource record,RR): | 记录 | 全称 | 作用 | | --- | --- | --- | | SOA | Start of Authority | 区起点,含序列号/刷新重试等参数 | | NS | Name Server | 声明本区的权威服务器 | | A / AAAA | Address | 主机名 → IPv4 / IPv6 | | CNAME | Canonical Name | 别名 → 规范名(不能与其它类型共存) | | MX | Mail Exchanger | 邮件服务器(带优先级数字) | | PTR | Pointer | 反向解析:IP → 域名 | | TXT | Text | 任意文本(SPF/DKIM 验证常用) |
- 正向解析:域名 → IP(A/AAAA);反向解析:IP → 域名(PTR,区名形如
2.0.192.in-addr.arpa)。 - 区文件每条记录都有 TTL(缓存时长);SOA 里 serial(序列号)决定从服务器何时同步(见精讲 D)。
补充精讲 B:Unbound 缓存 DNS(Section 2 对应知识)
- 定位:轻量、专注“递归 + 缓存”的 DNS 服务,适合做组织内部缓存/转发 DNS;默认即启用 DNSSEC 验证(模块链 validator+iterator),比裸转发的旧缓存方案更安全。
- 安装与主配置:包
unbound,配置/etc/unbound/unbound.conf(server 段)。默认只监听127.0.0.1/::1,要服务网内客户端需加:server: interface: 0.0.0.0 access-control: 192.0.2.0/24 allow access-control: 127.0.0.1 allow - 常见易错:只改 interface、漏改
access-control→ 客户端被拒(REFUSED);access-control默认只放行本机/回环网段。 - 启停与放行:
systemctl enable --now unbound;firewall-cmd --add-service=dns --permanent && firewall-cmd --reload(开放 53/tcp+udp)。 - 客户端接入(RHEL8,NetworkManager 托管 resolv.conf):
nmcli connection modify <连接名> ipv4.dns 192.0.2.10 ipv4.ignore-auto-dns yes nmcli connection up <连接名> - 验证命中:
dig @192.0.2.10 www.example.com第一次显示递归耗时,重复查询秒回说明缓存生效;观察返回是否SERVER: 192.0.2.10、flags中是否有aa(权威)或仅为递归答案。
补充精讲 C:DNS 排障(Section 3 对应知识)
- 三件套工具:
dig(最常用,一次一查)、nslookup(老式,支持交互模式)、host(简版输出)。 | 需求 | 命令 | | --- | --- | | 指定服务器查 A 记录 |dig @192.0.2.10 www.example.com A| | 只出答案 |dig +short www.example.com| | 反向解析 |dig -x 192.0.2.20| | 查其它记录 |dig example.com NS/SOA/MX/ANY| | 跟踪完整解析路径 |dig +trace example.com| | 直查权威(绕过缓存) |dig @ns1.example.com www.example.com A| - 应答状态速判:
NOERROR正常(有答案);NXDOMAIN域名/记录确实不存在;SERVFAIL服务器内部故障或联系不到权威(常见:上游断、区文件坏、serial 错);REFUSED策略拒绝(典型:没开 access-control、只允许特定网段)。 - 分层排障思路:
- 客户端侧:
cat /etc/resolv.conf、getent hosts 域名(含 hosts 与 DNS 全链路)、ping IP区分“解析失败 vs 网络不通”; - 缓存服务器侧:
systemctl status unbound、ss -lunp | grep :53(是否在监听/防火墙挡没挡)、unbound-control flush 域名清特定缓存或 restart unbound; - 权威侧:直接
dig @权威IP查,比对“缓存给的答案”和“权威给的答案”;named 看journalctl -u named与/var/log/messages。
- 客户端侧:
- 缓存维护:unbound 用
unbound-control flush <name>/unbound-control flush_zone example.com;named 用rndc flush、rndc reload(重载区数据)。
补充精讲 D:BIND9 权威 DNS(Section 4 对应知识)
- 安装:
dnf install bind bind-utils(bind-utils 提供 dig/host/nslookup,客户端也常装);服务与进程叫named:systemctl enable --now named。 - 主配置
/etc/named.conf:options段定义监听/允许查询/转发等,zone段声明区。声明正向与反向区示例(RHEL8 教材语法用type master/slave;RHEL9 起官方推荐primary/secondary,语义相同):zone "example.com" IN { type master; file "example.com.zone"; allow-transfer { 192.0.2.53; }; # 允许从服务器做区传输 }; zone "2.0.192.in-addr.arpa" IN { type master; file "192.0.2.zone"; }; - 正向区文件(放
/var/named/,属主 named、SELinux 上下文named_zone_t)示例:$TTL 1D @ IN SOA ns1.example.com. hostmaster.example.com. ( 2026090501 ; serial(改区必须递增) 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns1.example.com. IN MX 10 mail.example.com. ns1 IN A 192.0.2.1 www IN A 192.0.2.10 mail IN A 192.0.2.11 - 反向区文件要点:记录名写“IP 最后一段 + 反序网段”,如
10 IN PTR www.example.com.(对应 192.0.2.10);域名末尾必须带点,否则会被拼上区名。 - 从服务器(secondary):
type slave; masters { 192.0.2.1; }; file "slaves/example.com.zone";——区文件由 named 自动从主服务器拉取并写入/var/named/slaves/(该目录允许 named 写)。同步机制:AXFR(全量)/ IXFR(增量);主服务器改完区数据必须 serial 递增(常用日期+序号如 2026090501),从服务器轮询/被 NOTIFY 后才会重传。 - 校验与重载:
named-checkconf(查 named.conf 语法)、named-checkzone example.com /var/named/example.com.zone(查区文件);改动后systemctl reload named(或rndc reload)。 - 验证对外:主/从都开
firewall-cmd --add-service=dns --permanent;本机dig @127.0.0.1 www.example.com;从服务器测同步:dig @从IP www.example.com,或用dig -t AXFR example.com @主IP手工触发区传输看是否 allow-transfer。 - 排障:named 启动失败先看
journalctl -u named、named-checkconf报错行;SELinux 相关看/var/log/audit/audit.log,zone 文件执行restorecon -Rv /var/named。
补充精讲 E:用 Ansible 自动化(Section 5 对应知识)
- 首选官方系统角色 rhel-system-roles.dns(包
rhel-system-roles,亦名linux-system-roles.dns),用数据驱动的dns_servers/dns_zones变量声明“服务器 + 区”后幂等部署:角色负责装包、生成 unbound/named 配置、放行防火墙、启动并开机自启。核心变量速记(详细字段以角色 README 为准):# vars/main.yml 概念示例 dns_servers: # 定义服务器角色:caching / primary / secondary - role: caching # 对应 Unbound 缓存 DNS listen_on: 192.0.2.10 dns_zones: # 权威区数据(primary/secondary 用) - name: example.com type: primary ... - 备选(无专属模块的通用做法):标准模块组合
dnf(装 bind/unbound)→copy/template(named.conf、unbound.conf 与区文件)→firewalld(开放 dns 服务)→service(enable+start),并把“改配置 → 重载 named”做成 handler;区文件用template渲染可内嵌 serial。 - 章节 Lab(推断口径):部署一台 Unbound 缓存给全组客户端用 + 一组主/从 BIND 权威服务器托管内网域,最后用 playbook 复现并做解析排障(dig 各类记录、验证主从同步)。
核心词汇表
| 英文 | 中文速记 |
|---|---|
| DNS / FQDN | 域名系统 / 完全合格域名(末尾根点常考) |
| domain vs zone | 域(层级命名空间) vs 区(权威负责的切片) |
| resource record | 资源记录(SOA/NS/A/AAAA/CNAME/MX/PTR/TXT) |
| recursive / iterative query | 递归查询 / 迭代查询 |
| authoritative answer | 权威答案(服务器对自有 zone 的回答) |
| caching name server | 缓存名称服务器(Unbound,递归+缓存+DNSSEC) |
| Unbound | RHEL 推荐的缓存/递归 DNS 服务 |
| BIND 9 / named | 权威 DNS 服务 / 守护进程 |
| primary / secondary(master/slave) | 主服务器 / 从服务器 |
| zone transfer:AXFR / IXFR | 区传输:全量 / 增量 |
| serial number | 区文件序列号(改动必须递增) |
| TTL | 资源记录缓存时长 |
| dig / nslookup / host | DNS 排障三工具 |
| NOERROR / NXDOMAIN / SERVFAIL / REFUSED | 应答状态:正常/不存在/服务器故障/策略拒绝 |
| named-checkconf / named-checkzone | BIND 配置/区文件语法检查 |
| rndc(rndc reload / flush) | named 远程控制命令 |
| unbound-control flush | 清 unbound 缓存 |
| /etc/resolv.conf | 客户端解析配置(NetworkManager 生成) |
| DNSSEC | 域名安全扩展(unbound 默认验证) |
| rhel-system-roles.dns | DNS 自动化系统角色(dns_servers/dns_zones) |
本章自测
- domain 与 zone 有什么区别?缓存 DNS 与权威 DNS 谁替客户端做递归?
- A / AAAA / CNAME / MX / NS / PTR / SOA 各自的含义与典型场景?
- 让 Unbound 服务网内客户端,至少要配置哪两项?如何验证缓存命中?
- dig 的 NOERROR / NXDOMAIN / SERVFAIL / REFUSED 分别代表什么?配合什么命令进一步定位?
- BIND 主从如何同步(AXFR/IXFR)?为什么改完区文件必须递增 serial?
- 正向与反向区文件各长什么样?named-checkzone 怎么用?域名末尾的“.”漏写会怎样?
- 自动化 DNS 首选哪个角色?dns_servers / dns_zones 分别描述什么?没有专属模块时可用哪些通用模块组合?
- 复述讲师手册 Key Takeaways 六条,并说明每一条对应 RH358 考试的哪个能力点。
