IPv6 SLAAC 是什么?它和 DHCPv6 有什么区别?
简化版
SLAAC 是 IPv6 的无状态地址自动配置机制。主机通过路由器通告获得网络前缀,再结合接口标识生成自己的 IPv6 地址。
DHCPv6 则由 DHCPv6 服务器分配或提供配置,可以是有状态地址分配,也可以只提供 DNS 等参数。
SLAAC 更轻量,适合自动生成地址;DHCPv6 管控更强,适合集中分配和审计。实际网络中两者可以配合使用。
详细版
SLAAC 基本流程:
主机启动 -> 发送 Router Solicitation
路由器返回 Router Advertisement
主机读取前缀
主机生成接口标识
主机做 DAD
地址可用
例如路由器通告前缀:
2001:db8:1:2::/64
主机可以生成:
2001:db8:1:2:abcd:1234:5678:9abc
DHCPv6 更像 IPv4 DHCP,可以由服务器参与分配地址或下发 DNS、域名搜索列表等配置。
完整版教学
1. 先定义 SLAAC
SLAAC 全称 Stateless Address Autoconfiguration。
它让 IPv6 主机不依赖中心化地址服务器,也能自动配置地址。
核心信息来自路由器的 RA。
SLAAC 的关键词是:路由器通告前缀,主机自己生成地址。
2. SLAAC 的流程
主机加入网络后,会发送 RS。
Router Solicitation
路由器返回 RA。
Prefix: 2001:db8:1:2::/64
Autonomous flag: on
主机根据前缀和接口标识生成 IPv6 地址。
生成后还要做 DAD,确认没有地址冲突。
3. 接口标识如何生成
早期可以基于 MAC 地址生成 EUI-64 接口标识。
但这样会暴露设备硬件标识,影响隐私。
现代系统通常使用隐私扩展,生成临时或稳定但不直接暴露 MAC 的接口标识。
例如:
2001:db8:1:2:9f3a:12ff:fe34:abcd
面试时可以补充:SLAAC 不等于一定暴露 MAC。
4. DHCPv6 的角色
DHCPv6 可以提供:
- 有状态地址分配。
- DNS 服务器。
- 域名搜索列表。
- 其他网络参数。
有些网络使用 SLAAC 生成地址,再用 DHCPv6 提供 DNS。
也有网络完全使用 DHCPv6 管理地址。
选择取决于运维管控需求。
5. SLAAC 和 DHCPv6 对比
| 对比项 | SLAAC | DHCPv6 |
|---|---|---|
| 地址来源 | 主机根据前缀自生成 | 服务器分配或配置 |
| 状态管理 | 无状态 | 可有状态 |
| 运维控制 | 较弱 | 较强 |
| 依赖组件 | 路由器 RA | DHCPv6 服务器 |
| 适合场景 | 自动化、简单接入 | 企业管控、审计 |
两者不是绝对互斥。
6. RA 中 M/O 标志
RA 中有两个常被问到的标志。
- M flag:Managed address configuration,提示使用 DHCPv6 获取地址。
- O flag:Other configuration,提示使用 DHCPv6 获取其他参数。
例如:
M=0, O=1
可能表示地址通过 SLAAC 生成,DNS 等其他参数通过 DHCPv6 获取。
不同操作系统支持细节可能不同。
7. 常见误区与追问
- 误区:IPv6 一定不需要 DHCP。 IPv6 可以用 SLAAC,也可以用 DHCPv6,二者可配合。
- 误区:SLAAC 地址一定由 MAC 推导。 现代系统常使用隐私扩展生成接口标识。
- 误区:SLAAC 不需要任何网络设备支持。 它依赖路由器通告前缀和相关标志。
- 追问:DAD 在 SLAAC 中做什么? 确认自动生成的地址在链路上没有冲突。
- 追问:M/O 标志有什么意义? 指示主机是否使用 DHCPv6 获取地址或其他配置。
- 追问:企业为什么偏好 DHCPv6? 便于地址分配记录、审计和集中管理。
8. 加强记忆
SLAAC 记成“路由器给前缀,主机自己补后半截”。
DHCPv6 记成“服务器参与分配和下发配置”。