根据RFC3315:
每个 DHCP 客户端和服务器都有一个 DUID。DHCP 服务器使用 DUID 来识别客户端以选择配置参数以及将 IA 与客户端关联。DHCP 客户端使用 DUID 在需要识别服务器的消息中识别服务器。
[...]
客户端和服务器必须将 DUID 视为不透明值,并且必须仅比较 DUID 是否相等。客户端和服务器不得以任何其他方式解释 DUID。
对于 IPv4,DHCP 服务器通常会根据例如 MAC 地址为客户端分配固定地址。那么对于 IPv6,DHCPv6 服务器如何分配固定的 IPv6 地址呢?
你读错了。他们可以比较 DUID 是否等于存储的值。他们不应尝试以任何其他方式解释其内容,例如尝试检索 MAC 地址或类似的恶作剧。
它应该被视为一个不透明的值,即一个没有任何已知含义的数字序列。他们不应该尝试推断序列的含义,但是可以将其与存储的值进行比较以检查它们是否相等。根据 RFC,无法将任何含义读入序列中。
客户端不应在重新启动之间更改其 DUID,因此一旦您为客户端分配了特定的 IPv6 地址,它应该每次都获得配置的地址。
DUID 的优点是即使客户端使用具有不同 MAC 地址的不同网络适配器,它也保持不变。缺点是您事先不知道客户端将使用哪个 DUID(除非您有一些带外配置来强制客户端使用特定的 DUID)。
RFC6939指定了 DHCPv6 中继可以用来告诉 DHCPv6 服务器客户端的 MAC 地址是什么的选项。DHCPv6 服务器可以使用它来识别客户端。官方 DHCPv6 服务器不应该使用客户端的 MAC 地址或尝试解码 DUID,但它们当然可以作弊 :) 这种情况经常发生。