无状态地址自动配置 (SLAAC)RFC 4862用于根据接口标识符(修改后的 EUI-64)创建链路本地地址,在将地址分配给接口之前,会处理重复地址检测 (DAD)。那么,当 DAD 失败时会发生什么?
第 4 节仅描述了自动配置必须停止:
如果节点确定其临时链路本地地址不是唯一的,则自动配置将停止,并且需要手动配置接口。
未指定“手动配置”在此上下文中的含义。DAD 有两个扩展(RFC 4429,RFC 7527) 也没有描述 DAD 失败时发生的情况。
我假设创建一个随机接口标识符并用于创建链路本地地址,例如RFC 4941 - IPv6 中无状态地址自动配置的隐私扩展但我找不到任何来源或参考资料来说明这种行为......
1. 当重复地址检测失败时,如何创建链路本地地址?
2. 是否使用随机接口标识符来创建链路本地地址?如果是,那么 RFC 中是否对此进行了描述或为操作系统提供了文档?
答案1
- 当重复地址检测失败时,如何创建链路本地地址?
在常规 RFC 4862 SLAAC 中,事实并非如此。
“自动配置停止”的意思就是:IP 堆栈不会尝试任何替代算法,它实际上会停止该过程,并且链路本地地址未创建。同样,“手动配置”意味着系统管理员必须添加工作地址。
(毕竟,当使用基于硬件的 IID 时,IPv6 DAD 失败意味着硬件地址本身是重复的——而你可能不会想继续处于那种情况。
RFC 4941“隐私扩展”随机生成从未旨在取代主“公共”地址或改变常规 SLAAC 流程,正如其在其自己的 RFC 中明确指出的那样。
但是,如果操作系统使用 RFC 7217“语义不透明”IID 而不是标准的基于硬件的 IID,它会不断使用不同的“DAD_Counter”值(产生不同的 IID)重试,直到至少一个地址成功。
- 是否使用随机接口标识符来创建链路本地地址?如果是,那么 RFC 中是否对此进行了描述或为操作系统记录了相关内容?
是的,RFC 7217(如果操作系统实现)适用于链路本地地址和全局地址。请注意,RFC 7217 的使用完全是可选的;并且如果实施后,它旨在完全取代基于硬件的 IID 生成算法,而不是作为后备。
此外,RFC 7721 引用了 Microsoft Windows 使用的不同算法(我认为该算法比 RFC 7217 稍早)。