精读笔记(RHCA 英文教材)· RH358 Chapter 4 Managing DHCP and IP Address Assignment
精读笔记(RHCA 英文教材)· RH358 Chapter 4 Managing DHCP and IP Address Assignment
教材原文:RHCA 官方英文教材(教材第 7~10 页)(OCR 整书版已从本站移除,本页为章节精读) 说明:本教材到手版本为 Instructor Guide(讲师手册),第 4 章含 Schedule/Objectives/Key Takeaways/Instructor Tips;正文细节需配合学生手册与实验。本笔记按“讲义要点 + 必要补充”双语整理,RHEL8 配置细节参考官方 dhcp-server 实践。 关联知识:
RHCE9精读笔记\精读-第12章-网络配置、分章笔记/01-Linux/02-04-日志与网络、02-08-Ansible自动化;前置:RH358 Chapter 1~2(NetworkManager/nmcli、systemd 服务管理)
Chapter 4 | Managing DHCP and IP Address Assignment(管理 DHCP 与 IP 地址分配)
- 一句话目标:Explain and configure services used for IPv4 and IPv6 address assignment, including DHCP, DHCPv6, and SLAAC.(解释并配置 IPv4/IPv6 地址分配所用服务:DHCP、DHCPv6、SLAAC)
Chapter Objectives(本章目标,双语)
By the end of this chapter, students should be able to:
- Describe the operation of the DHCP protocol for IPv4, and configure a DHCP server to provide a pool of IPv4 addresses for DHCP clients, while providing reserved addresses to specific clients.(描述 DHCPv4 协议运作;配置 DHCP 服务器给客户端分配地址池,并为特定客户端保留固定地址)
- Discuss the role of DHCPv6 in IPv6, compare it to other IPv6 network autoconfiguration techniques, and configure a DHCPv6 server.(讨论 DHCPv6 在 IPv6 中的角色,与其它 IPv6 自动配置技术对比,并配置 DHCPv6 服务器)
- Automate the configuration of a DHCP server providing support for IPv4 and IPv6 addresses.(用 Ansible 自动化配置同时支持 IPv4/IPv6 的 DHCP 服务器)
Chapter Schedule(课时表,共 175 分钟)
| Section | 主题 | 方法 |
|---|---|---|
| 1 | Configuring IPv4 Address Assignment with DHCP | Lecture 25 分钟 + Guided Exercise 30 分钟 |
| 2 | Configuring IPv6 Address Assignment | Lecture 35 分钟 + Guided Exercise 35 分钟 |
| 3 | Automating DHCP Configuration | Lecture 5 分钟 + Guided Exercise 15 分钟 |
| - | Lab(Review Lab) | 30 分钟 |
Key Takeaways(本章要点 5 条)
The DHCP server must have an IP address in the subnet or prefix that it manages.(DHCP 服务器必须持有自己管理的子网/前缀内的 IP) The dhcp-server package provides both the DHCPv4 and DHCPv6 services.(dhcp-server 一个包同时提供 DHCPv4 与 DHCPv6) DHCPv4 uses the MAC address of the clients to assign fixed IPv4 addresses.(DHCPv4 用客户端 MAC 分配固定 IPv4) DHCPv6 uses the DUID of the clients to assign fixed IPv6 addresses.(DHCPv6 用客户端 DUID 分配固定 IPv6) On clients, set the ipv4.method or ipv6.method to auto for IPv4 or IPv6 autoconfiguration.(客户端把 ipv4.method / ipv6.method 设为 auto 启用自动配置) 中文归纳考点:① 服务器要在自己管理的网段里有 IP;② 一个包两个服务;③ v4 保留地址靠 MAC;④ v6 保留地址靠 DUID;⑤ 客户端 nmcli 设 auto。
Instructor Tips and Suggestions(讲师提示 → 考试细节)
- dhcp-server 包 = v4 + v6 两套服务:安装后得到两个独立 systemd 服务
dhcpd(DHCPv4)与dhcpd6(DHCPv6),各自独立启停/配置。 - 新版包不再使用
/etc/sysconfig/dhcpd这个旧配置文件(配置全在/etc/dhcp/dhcpd.conf与/etc/dhcp/dhcpd6.conf)。 - DUID 获取:Windows 客户端用
regedit看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters。 - DHCPv6 依赖 NDP:路由器用 Neighbor Discovery Protocol 通告前缀与默认网关(通告的是链路本地地址),DHCPv6 要配合 NDP 才工作(考点链接:A Common Mistake with DHCPv6)。
- RHEL8 NetworkManager 的 DUID 由
/etc/machine-id派生:教室虚拟机同镜像 → machine-id 相同 → DUID 相同(会互相冲突);实验 start 脚本用systemd-machine-id-setup重新生成保证唯一。 - 实验使用 RFC4193 本地(ULA)前缀
fde2:6494:1e09:2::/64(非公网可路由)。 - 自动化无专属模块:部署 DHCP 没有专门 Ansible 模块,讲义与实验用标准模块组合:
yum、service、firewalld、copy。
补充精讲 A:DHCPv4 配置(Section 1 对应知识)
- 协议要点:客户端 UDP 68、服务器 UDP 67;DORA(Discover → Offer → Request → Ack)四步拿租约;租约到期续租(RENEW/REBIND);服务器下发的除 IP 外还有 options(网关、DNS、域名、租期)。
- 主配置
/etc/dhcp/dhcpd.conf结构示例:option domain-name "example.com"; option domain-name-servers 192.0.2.11; default-lease-time 600; max-lease-time 7200; authoritative; # 本网段确有权威,客户端报错时直接回应 NAK subnet 192.0.2.0 netmask 255.255.255.0 { range 192.0.2.100 192.0.2.200; # 动态地址池 option routers 192.0.2.1; # 默认网关 host printer { # 按 MAC 保留固定地址 hardware ethernet 00:11:22:33:44:55; fixed-address 192.0.2.50; } } - 服务与放行:
systemctl enable --now dhcpd;firewall-cmd --add-service=dhcp --permanent && firewall-cmd --reload(67/udp)。 - 语法自检与排障:
dhcpd -t(测配置)、journalctl -u dhcpd、租约文件/var/lib/dhcpd/dhcpd.leases(看谁拿到了什么地址);服务器必须持有管理网段内 IP(Key Takeaway 1),否则 offer 无法路由/被忽略。 - 客户端:
nmcli connection modify <连接> ipv4.method auto && nmcli connection up <连接>;验证ip addr、ip route与 resolv.conf。
补充精讲 B:IPv6 地址分配与 DHCPv6(Section 2 对应知识)
- IPv6 自动配置三技术对比(考试常考“角色对比”): | 技术 | 机制 | 分配什么 | | --- | --- | --- | | SLAAC(无状态) | 路由器 RA 通告前缀/网关,主机自己生成地址(EUI-64/隐私扩展) | 只给地址 | | 无状态 DHCPv6 | RA 的 O 标志(other config)→ 主机再向 DHCPv6 要“其它配置” | 只给 DNS 等,不给地址 | | 有状态 DHCPv6 | RA 的 M 标志(managed)→ 主机向 DHCPv6 要地址+配置(IA_NA) | 地址 + 其它配置 |
- DUID(DHCP Unique Identifier):DHCPv6 标识客户端的唯一 ID,作用类似 DHCPv4 的 MAC;保留地址就是“DUID → fixed-address6”。RHEL8 由
/etc/machine-id派生 → 克隆镜像必须重新生成(systemd-machine-id-setup)否则全网 DUID 相同(讲师提示重点)。 - 主配置
/etc/dhcp/dhcpd6.conf结构示例:subnet6 fde2:6494:1e09:2::/64 { range6 fde2:6494:1e09:2::100 fde2:6494:1e09:2::1ff; # 状态ful 地址池 option dhcp6.name-servers fde2:6494:1e09:2::10; } host client1 { host-identifier option dhcp6.client-id "00:01:00:01:2a:3b:4c:5d:6e:7f"; fixed-address6 fde2:6494:1e09:2::50; # 按 DUID 保留 } - 服务与放行:
systemctl enable --now dhcpd6;防火墙放行 DHCPv6(546/547 UDP,firewalld 服务dhcpv6;客户端连不上先查这两个端口);租约/var/lib/dhcpd6/dhcpd6.leases。 - 客户端:
nmcli connection modify <连接> ipv6.method auto(SLAAC + RA 标志决定是否走 DHCPv6);ip -6 addr验证。 - ULA 私网前缀:RFC4193
fd + 40 位随机数 + 16 位子网,如课程用fde2:6494:1e09:2::/64,仅内网可路由。
补充精讲 C:用 Ansible 自动化(Section 3 对应知识)
- 官方口径:没有专用 DHCP 模块 → 通用模块组合即可幂等部署: | 目标 | 模块 | | --- | --- | | 安装 dhcp-server |
dnf(name: dhcp-server, state: present) | | 生成 dhcpd.conf / dhcpd6.conf |template或copy(配置数据放变量,模板里循环 subnet/host) | | 放行防火墙 |firewalld(service: dhcp / dhcpv6, permanent: yes, state: enabled) | | 启动并开机自启 |service(name: dhcpd / dhcpd6, state: started, enabled: yes) | | 改配置后生效 |notifyhandler → 重启 dhcpd / dhcpd6 | - 数据驱动思路:变量里定义 subnet/range/options 与“保留表”(MAC/DUID → 固定地址),模板渲染成两份 conf,删改保留项只需改 vars。
- 课程 Lab(推断口径):一台服务器同时下发 v4 地址池与 v6 前缀、给指定客户端保留地址,最后用 playbook 复现并验证客户端
ipv4.method/ipv6.method=auto拿到配置。
核心词汇表
| 英文 | 中文速记 |
|---|---|
| DHCP / DHCPv4 | IPv4 动态主机配置(UDP 67/68,DORA) |
| DHCPv6 | IPv6 有/无状态地址配置(UDP 546/547) |
| SLAAC | 无状态地址自动配置(RA 前缀 + 主机自生成) |
| lease | 租约(default/max-lease-time) |
| DORA | Discover/Offer/Request/Ack 四步 |
| range / fixed-address | 动态地址池 / 保留固定地址 |
| hardware ethernet (MAC) | DHCPv4 保留地址的客户端标识 |
| DUID / dhcp6.client-id | DHCPv6 客户端唯一标识(machine-id 派生) |
| host-identifier / fixed-address6 | DHCPv6 保留地址写法 |
| RA(Router Advertisement) | 路由器通告(M/O 标志控制 SLAAC/DHCPv6) |
| NDP | 邻居发现协议(DHCPv6 依赖) |
| ULA (RFC4193) | 本地唯一地址 fd00::/8(课程 fde2:…::/64) |
| dhcpd / dhcpd6 | dhcp-server 包的 v4 / v6 服务 |
| /etc/dhcp/dhcpd.conf | DHCPv4 主配置 |
| /etc/dhcp/dhcpd6.conf | DHCPv6 主配置 |
| dhcpd.leases | 租约数据库(v6 为 dhcpd6.leases) |
| ipv4.method / ipv6.method = auto | 客户端自动配置开关(nmcli) |
| systemd-machine-id-setup | 重新生成 machine-id(保证 DUID 唯一) |
| authoritative | dhcpd 权威声明(回应 NAK) |
本章自测
- Key Takeaways 五条分别是什么?为什么服务器必须持有管理网段内的 IP?
- dhcp-server 包提供哪两个服务与哪两份配置文件?旧 /etc/sysconfig/dhcpd 还用吗?
- DHCPv4 的 DORA 流程与关键选项(routers/domain-name-servers/租期)?按 MAC 保留怎么写?
- SLAAC / 无状态 DHCPv6 / 有状态 DHCPv6 三者区别?RA 的 M、O 标志怎么影响行为?
- DUID 从哪来?为什么克隆镜像机器必须重生成 machine-id?Windows 上怎么查?
- 按 DUID 保留 IPv6 地址的 dhcpd6.conf 怎么写?验证与排障命令有哪些?
- 自动化 DHCP 为什么没有专属模块?给出 4 个通用模块的职责分工。
- 讲师提示里的 RFC4193 前缀长什么样?为什么实验用它而不是公网前缀?
