看来您将字节与单词混淆了。在 IPv4(通常是 MAC)地址中,每个分隔的部分是一个字节,但在 IPv6 中,每个部分是两个字节(16 位字)。你似乎一直在思考 IPv4。您原来的是将字节放入单独的单词中,但您需要将两个字节组合成一个单词。例如, the会以两个单独的单词结尾,因为它的两边各有三个字节,所以在 the和.fffe之间会有一个冒号。您应该以四个字(64 位)结束,用冒号分隔,但您正在尝试创建六个字(96 位)。fffe
RFC 4291,IP 版本 6 寻址架构,附录 A,创建修改的 EUI-64 格式接口标识符详细说明了原始过程:
具有 IEEE 802 48 位 MAC 的链路或节点
[EUI64] 定义了一种从 IEEE 48 位 MAC 标识符创建 IEEE EUI-64 标识符的方法。这是在 48 位 MAC 中间(company_id 和供应商提供的 id 之间)插入两个八位字节,十六进制值为 0xFF 和 0xFE(参见附录末尾的注释)。一个示例是具有全局范围的 48 位 IEEE MAC:
|0 1|1 3|3 4|
|0 5|6 1|2 7|
+----------------+----------------+----------------+
|cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|
+----------------+----------------+----------------+
其中“c”是分配的 company_id 的位,“0”是表示全局范围的通用/本地位的值,“g”是单个/组位,“m”是制造商选择的位扩展标识符。接口标识符将采用以下形式:
|0 1|1 3|3 4|4 6|
|0 5|6 1|2 7|8 3|
+----------------+----------------+----------------+----------------+
|cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|
+----------------+----------------+----------------+----------------+
当 IEEE 802 48 位 MAC 地址可用(在接口或节点上)时,由于它们的可用性和唯一性属性,实现可以使用它们来创建接口标识符。
基本上,您将 48 位 MAC 地址分成两半,插入fffe中间,然后翻转 U/L 位。这会导致来自 48 位 MAC 地址的 64 位接口标识符。当您将生成的 64 位 IID 拆分为用冒号分隔的 4 个 16 位字时,您就得到了教师所拥有的。
从您的 MAC 地址开始a4:ba:db:fe:b24b:
- 您的 MAC 地址中有六个字节:
a4badbfeb24b
- 将它们分成两组三个字节:
a4badb和feb24b
- 在中间插入
fffe,你最终得到八个字节:
a4badbfffefeb24b
- 用冒号分隔 16 位字:
a4ba:dbff:fefe:b24b
- 翻转 U/L 位:
a6ba:dbff:fefe:b24b
这意味着您的 64 位 IPv6 IID 是a6ba:dbff:fefe:b24b,这就是您的讲师所拥有的。
许多人对 IPv6 地址生成的原始 SLAAC 方法感到担忧。主要担心的是,无论用户连接到公共 Internet 的位置如何,都可以通过 MAC 地址跟踪用户。
有后续的 RFC 来解决这个明显的弱点,并允许隐私扩展和随机地址生成。例如,RFC 4941,IPv6 中无状态地址自动配置的隐私扩展:
抽象的
节点使用 IPv6 无状态地址自动配置,结合本地可用信息和路由器通告的信息生成地址。地址是通过将网络前缀与接口标识符组合而成的。在包含嵌入式 IEEE 标识符的接口上,接口标识符通常是从中派生的。在其他接口类型上,接口标识是通过其他方式生成的,例如随机数生成。本文档描述了对接口标识符从 IEEE 标识符派生的接口的 IPv6 无状态地址自动配置的扩展。使用扩展会导致节点从随时间变化的接口标识符生成全局范围地址,即使在接口包含嵌入式 IEEE 标识符的情况下也是如此。
许多操作系统已采用隐私扩展和随机寻址作为默认行为。现在很难找到由原始 SLAAC 方法生成地址的设备。