![如果不允许解释 DUID,DHCPv6 服务器如何为客户端分配固定 IPv6 地址?](https://linux22.com/image/768159/%E5%A6%82%E6%9E%9C%E4%B8%8D%E5%85%81%E8%AE%B8%E8%A7%A3%E9%87%8A%20DUID%EF%BC%8CDHCPv6%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A6%82%E4%BD%95%E4%B8%BA%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%88%86%E9%85%8D%E5%9B%BA%E5%AE%9A%20IPv6%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
根据RFC3315:
每个 DHCP 客户端和服务器都有一个 DUID。DHCP 服务器使用 DUID 来识别客户端,以便选择配置参数并将 IA 与客户端关联。DHCP 客户端使用 DUID 在需要识别服务器的消息中识别服务器。
[...]
客户端和服务器必须将 DUID 视为不透明值并且必须仅比较 DUID 是否相等。客户端和服务器不得以任何其他方式解释 DUID。
对于 IPv4,DHCP 服务器根据 MAC 地址等为客户端分配固定地址是很常见的。那么对于 IPv6,DHCPv6 服务器如何分配固定 IPv6 地址呢?
答案1
客户端不应在重启之间更改其 DUID,因此一旦您为客户端分配了特定的 IPv6 地址,它每次都应获取配置的地址。
DUID 的优点是,即使客户端使用具有不同 MAC 地址的不同网络适配器,它也会保持不变。缺点是您无法提前知道客户端将使用哪个 DUID(除非您有一些带外配置来强制客户端使用特定的 DUID)。
RFC6939指定一个选项,DHCPv6 中继可以使用该选项告诉 DHCPv6 服务器客户端的 MAC 地址。DHCPv6 服务器可以使用它来识别客户端。正式来说,DHCPv6 服务器不应该使用客户端的 MAC 地址或尝试解码 DUID,但它们当然可以作弊 :) 这种情况经常发生。
答案2
你读错了。他们可以比较 DUID 是否等于存储的值。他们不应该尝试以任何其他方式解释其内容,例如尝试检索 MAC 地址或类似的恶作剧。
它应该被视为一个不透明的值,即没有任何已知含义的数字序列。它们应该不是尝试推断序列的含义,但将其与存储的值进行比较以检查它们是否相等是可以的。根据 RFC,不能从序列中读取任何含义。