DHCPv6 原理
2025/10/29大约 3 分钟
DHCPv6 原理
DHCPv6 获取方式
DHCPv6 客户端获取 Global Address 的方式有两种:
无状态(Stateless):根据路由通告报文 RA(Router Advertisement)包含的 prefix 前缀信息自动配置 IPv6 地址,组成方式是 Prefix + (EUI64 or 随机),Stateless 也可以称为 SLAAC(Stateless Address Auto Configuration)。
有状态(Stateful):通过 DHCPv6 方式获得 IPv6 地址。
上边的有状态又分为两种方式:
- 有状态 DHCPv6(Stateful DHCPv6):IPv6 地址、其他参数(如 DNS)均通过 DHCPv6 获取。
- 无状态 DHCPv6(Stateless DHCPv6):IPv6 地址依然通过路由通告 RA 方式生成,其他参数(如 DNS)通过 DHCPv6 获取。
重要
适用场景:
- 有状态、无状态仅针对于 IPv6 地址分配方式,并不包含其他参数。
- 有状态:可控、可管理。在网络中存在一个 IP 地址管理者,它能够识别客户端,根据不同的客户端,分配对应的 IPv6 地址,客户端与服务端之间需要维护 IP 地址的租期及续约。目前实现这种效果的,就是 DHCPv6 协议,IP 地址管理者就是 DHCPv6 Server。
- 无状态:不可控、难管理。在网络中只有网关,没有 IP 地址管理者。因此无人去识别客户端,每个客户端根据网关发送的相同的 RA 报文内容,自行配置 IPv6 地址。
IPv6 RA 中的 Flag
DHCPv6 客户端通过网络中路由器/防火墙发送的 IPv6 RA(Router Advertisement)报文中的 Flag 来控制获取 IPv6 和 DNS 等信息的方式。
- Autonomous flag(自治 flag,简称 A flag):表示是否配置无状态 IP。在一个 RA 报文中,可存在多个 prefix,比如 2401/64、2403::/64,每个 prefix 都可以独立配置 A flag。
- 为 on 时(对应 bit 位为 1):表示客户端应当在该 prefix 范围内自动生成 IPv6 地址(客户端通过 DAD_Duplicate Address Detection 自行保证地址可用),并配置子网路由条目、网关。
- 为 off 时(对应 bit 位为 0):表示客户端不应当在该 prefix 范围内自动生成 IPv6 地址,但是可以配置子网路由条目、网关。
- Managed flag(简称 M flag):表示是否配置有状态 IP。M flag 是 RA 报文的全局参数,一个 RA 报文只有一个 M flag。
- 为 on 时(对应 bit 位为 1):表示在 stateless 流程结束后开始 stateful 流程,也就是告诉客户端可以通过 DHCPv6 来获得 IPv6 地址和其他参数(如 DNS 列表)。
- 为 off 时(对应 bit 位为 0):表示不通过 DHCPv6 来获得 IPv6 地址。
- Other flag(简称 O flag):表示是否通过 DHCPv6 获得除 IP 以外的其他参数(如 DNS 列表)。O flag 也是 RA 报文中的全局参数,一个 RA 报文只有一个 O flag。注意:仅当 M flag 为 off 时,该参数才会被读取。
- 为 on 时(对应 bit 位为 1):当 M flag 为 on,或者 M flag 为 off 且至少有一个 A flag 为 on 时,将通过 DHCPv6 获得其他参数。
- 为 off 时(对应 bit 位为 0):当 M flag 为 on 时,依然将通过 DHCPv6 获得其他参数;当 M flag 也为 off 时,将不通过 DHCPv6 获得其他参数。
- Autonomous flag(自治 flag,简称 A flag):表示是否配置无状态 IP。在一个 RA 报文中,可存在多个 prefix,比如 2401/64、2403::/64,每个 prefix 都可以独立配置 A flag。
如下图的 RA 报文, A flag 置为 1,M flag 和 O flag 均置为 0,表示要求客户端仅通过 RA 中的 prefix 自动配置 IPv6 地址,并配置子网路由条目、网关,其他参数不通过 DHCPv6 获取。

总结
DHCPv6 流程

- Stateless 自动配置“全球地址”(或“唯一本地地址”)。
- Stateful 自动配置“全球地址”(或“唯一本地地址”)和其他参数,其中 Stateful 阶段中存在 Stateful DHCPv6 或 Stateless DHCPv6。
重要
部分客户端操作系统或网络管理器当 Stateless 阶段没有收到 RA 报文后,就到此结束,不会走 Stateful 阶段,比如 CentOS 7、Ubuntu 17 的默认逻辑都是这样,而 Windows Server 就会继续走 Stateful 阶段。
Flag 组合对应客户端动作
