SLAAC:IPv6 地址与 DNS 分配机制
·3 min read·BIGWONG Studio
LinuxNetwork
IPv6 现在已经很普及了,但在搭建家庭网络时仍然容易踩坑。本文总结了关键概念和常见问题。
IPv6 前缀 由 ISP 分配的公网前缀。你可以通过 DHCP 或 SLAAC 将地址分配给下游设备。
IPv6 地址的组成
IPv6 前缀 + 接口标识符
接口标识符的生成方式
- 有状态:由
DHCPv6服务器分配地址。 - 无状态(SLAAC):客户端根据 MAC 地址通过
EUI-64算法自动生成。
EUI-64
一种根据 MAC 地址生成接口标识符的方法。

SLAAC 流程
- 使用链路本地前缀 + EUI-64 生成链路本地地址(例如
fe80::1)。 - 执行重复地址检测(DAD)确保地址不冲突。
- 向组播地址
FF02::2发送路由器请求(RS)。 - 路由器回复路由器通告(RA),包含公网前缀和前缀长度(通常 <= 64)。
- 客户端将公网前缀 + EUI-64 组合为全局 IPv6 地址。
- DNS 仍然缺失,客户端通过 DHCP 获取 DNS。
总结: SLAAC 提供地址,但 DNS 仍然来自 DHCP。
DHCPv6 流程 与 DHCPv4 类似。
RA 标志位(路由器通告) 这些标志告诉客户端从哪里获取 IPv6 地址和 DNS。
| M 标志 | O 标志 | 结果 |
|---|---|---|
| 1 | 地址和 DNS 均通过 DHCPv6 获取 | |
| 0 | 1 | 地址通过 SLAAC 获取,DNS 通过 DHCPv6 获取 |
| 0 | 0 | 无 DHCPv6 服务器 |
Prf 标志 路由器优先级:低(1)、中(0)、高(3)。如果存在多个路由器,客户端根据此值选择。
参考资料