摘要

  • RFC 3736 允许已经拥有 IPv6 地址的节点通过 DHCPv6 的 Information-request 与 Reply 请求其他参数,而不让服务器再分配地址。
  • 这里的“无状态”是指服务端不必为这项服务维护逐客户端的动态状态;可选的客户端标识、本地策略和中继功能仍然存在。

地址和解析器是两项工作

IPv6 无状态地址自动配置可以让主机根据路由器通告形成地址,但这并没有回答所有配置问题。主机仍可能需要递归 DNS 服务器地址、SIP 服务器信息或其他选项。人们很容易把 DHCP 想成一个整体:向服务器申请地址,顺便拿到其余网络配置。

RFC 3736 把这些功能分开。客户端已经通过其他机制获得地址——通常是无状态地址自动配置,也可以是手工配置——并至少有一个可用于通信的链路本地地址。它发送 Information-request,在选项请求中列出想要的选项类型。服务器用 Reply 携带它选定的配置参数。在这种模式下,客户端不请求地址身份关联,服务器也不分配地址。

这一交换有意缩成两条消息:Information-request,随后是 Reply。主机可以请求 DNS 配置,而不把这次交互变成地址租约。同一个服务系统可以同时处理要地址的客户端和只要其他参数的客户端;DHCP 中继的工作方式也与有状态服务相同。

但“无状态”不是说服务器没有配置或策略。RFC 3736 的准确意思是:这项服务不要求服务器保留每个 DHCP 客户端的动态状态。管理员若希望按节点定制回复,客户端也可以携带 Client Identifier。服务器仍依据本地配置策略选择选项;中继仍可转发消息。减少的是这项信息服务对逐客户端地址绑定的依赖,不是网络中的一切状态。

这个区别也有助于理解 IPv6 路由器通告的标志。RFC 4861 中,Managed 标志表示 DHCPv6 可提供地址;Other 标志表示 DHCPv6 可提供 DNS 等其他配置信息。Managed 已设置时,Other 是冗余的。这些标志表示信息可用,并不能证明主机完成了 DHCP 交换、安装了某个解析器,或确实能够访问它。

去掉地址租约,也去掉了一只时钟

被分配的地址有首选寿命和有效寿命,告诉客户端何时继续使用、何时停止。其他配置参数未必有这样的寿命。RFC 3736 明确把一个问题留给后续工作:主机何时应该再次发送 Information-request 来更新参数?主机换到新链路后何时刷新,也没有规则。

RFC 4242 后来定义了 Information Refresh Time 选项,为客户端等待多久后刷新 DHCPv6 信息设定上限。它的理由很值得注意:如果这类配置没有地址或前缀租约,就可能没有任何寿命信息提醒客户端何时回来。RFC 8415 随后整合了 DHCPv6,取代 RFC 3736 和 RFC 4242,同时保留两条消息的信息请求模式。

因此,这段历史并不是“SLAAC 一旦生成地址,DHCP 就消失了”。地址形成与其余主机参数可以分别取得。这样做降低了信息服务所需的逐客户端状态,却把来源优先级、刷新、接口范围和主机解析器安装等生命周期问题留在了其他位置。Reply 证明协议返回了选项;它本身不能证明主机已经采用这些值,更不能证明 DNS 查询成功。

这些 RFC 没有说明今天有多少客户端使用该模式,也没有给出任何具体网络的配置情况。它们规定了协议机制和边界,而不是部署比例或服务结果。

来源