← 返回题目列表

IPv6 SLAAC 是什么?它和 DHCPv6 有什么区别?

中等 第 24 / 26 题 更新于 2026/08/02
IPv6SLAACDHCPv6

简化版

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 对比

对比项SLAACDHCPv6
地址来源主机根据前缀自生成服务器分配或配置
状态管理无状态可有状态
运维控制较弱较强
依赖组件路由器 RADHCPv6 服务器
适合场景自动化、简单接入企业管控、审计

两者不是绝对互斥。

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 记成“服务器参与分配和下发配置”。