此 IPv6 链路本地地址(由 Windows 报告)是否正确?如果正确,原因是什么?

此 IPv6 链路本地地址(由 Windows 报告)是否正确?如果正确,原因是什么?

从我在线阅读,通过获取网络接口的 MAC 地址、在其中插入 FF:FE 字、对一些附加位进行或运算,即可生成 IPv6 链路本地地址:例如 MAC 地址 00:3E:E1:c6:20:c2 对应于 IPv6 链路本地地址 fe80::23e:e1ff:fec6:20c2%en0,知道 MAC 地址的程序可以计算 IPv6 地址,反之亦然。

这在我的 Macintosh 上似乎运行良好,但在我同事的 Windows 机器上我们看到的是这个(来自 ipconfig 的输出):

Connection-specific DNS Suffix  . :
Link-local IPv6 Address . . . . . : fe80::eb:b41:3e4c:fd9e%11
IPv4 Address. . . . . . . . . . . : 192.168.0.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :

这里看起来网络接口的 MAC 地址(即 0b:41:3e:4c:fd:9e )只在前面插入了字节“eb”,而不是像我预期的那样在中间插入 ff:fe。

有人能解释一下这是为什么吗?也就是说,Windows 是否在这里做了一些违反 IPv6 链路本地地址规范的事情,或者它只是使用了一些我不知道的其他可接受的 MAC->IPv6 约定?或者也许供应商在从 MAC 地址生成 fe80 地址时被允许做任何他们想做的事情?

答案1

并不是说必须从 MAC 地址生成链路本地地址;这从来都不是必需的。您可以在许多设备上手动分配链路本地地址。

您在 Windows 中看到的是隐私扩展和随机寻址的使用。与分配 SLAAC 接口 ID 的原始方式不同,引入了隐私扩展和随机地址生成。这是 Windows 的默认设置,但可以禁用。

RFC 4862,IPv6 无状态地址自动配置RFC 4941,IPv6 无状态地址自动配置的隐私扩展

相关内容