EUI-64的说明
EUI-64 的背景
在 IPv6 地址中,地址的后 64 位通常用于标识网络接口。为了确保这些地址的唯一性,EUI-64 使用了设备的 MAC 地址(通常是 48 位)来生成一个 64 位的接口标识符。
EUI-64 的生成过程
获取 MAC 地址:
- 首先,从网络接口卡(NIC)获取其 MAC 地址。MAC 地址是一个 48 位的标识符,通常以十六进制表示,例如
00:1A:2B:3C:4D:5E。
- 首先,从网络接口卡(NIC)获取其 MAC 地址。MAC 地址是一个 48 位的标识符,通常以十六进制表示,例如
插入固定值:
- 将 MAC 地址拆分为两部分:前 24 位和后 24 位。
- 在这两个部分之间插入一个固定的值
FFFE,使得最终的标识符变为 64 位。例如:- 原始 MAC 地址:
00:1A:2B:3C:4D:5E - 拆分后:
00:1A:2B和3C:4D:5E - 插入
FFFE后:00:1A:2B:FF:FE:3C:4D:5E
- 原始 MAC 地址:
修改第七位:
- 将生成的 EUI-64 地址的第七位(U/L 位)进行修改,以指示地址的类型:
- 如果第一个字节的第七位为 0,表示地址是全球唯一的(全球单播)。
- 如果第一个字节的第七位为 1,表示地址是局部唯一的(本地单播)。
- 例如,如果原始 MAC 地址的第一个字节是
00(二进制00000000),则第七位为 0。将其设置为 1,变为02(二进制00000010)。
- 将生成的 EUI-64 地址的第七位(U/L 位)进行修改,以指示地址的类型:
示例
假设有一个 MAC 地址 00:1A:2B:3C:4D:5E,生成 EUI-64 的步骤如下:
- 获取 MAC 地址:
00:1A:2B:3C:4D:5E - 插入
FFFE:- 拆分为
00:1A:2B和3C:4D:5E - 结果为
00:1A:2B:FF:FE:3C:4D:5E
- 拆分为
- 修改第七位:
- 原始第一个字节
00,修改为02(因为第七位从 0 变为 1) - 最终生成的 EUI-64 地址为
02:1A:2B:FF:FE:3C:4D:5E
- 原始第一个字节
EUI-64 在 IPv6 地址中的应用
生成的 EUI-64 地址通常用于 IPv6 地址的后半部分,以形成完整的 IPv6 地址。例如,如果网络前缀是 2001:0db8:85a3::/64,那么完整的 IPv6 地址可以是:
1 | 2001:0db8:85a3:0000:021A:2BFF:FE3C:4D5E |
优点与缺点
优点
- 自动配置: EUI-64 允许设备在没有 DHCP 的情况下自动生成唯一的 IPv6 地址。
- 全球唯一性: 基于 MAC 地址生成的 EUI-64 地址通常是唯一的,减少了地址冲突的可能性。
缺点
- 隐私问题: 由于 EUI-64 地址与设备的 MAC 地址直接相关,可能会导致隐私问题,因为可以通过地址推断出设备的信息。
- 不适用于动态环境: 在某些情况下,设备的 MAC 地址可能会变化(例如,虚拟机迁移),这可能导致地址的变化。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Meng's blog!

