EUI-64 的背景

在 IPv6 地址中,地址的后 64 位通常用于标识网络接口。为了确保这些地址的唯一性,EUI-64 使用了设备的 MAC 地址(通常是 48 位)来生成一个 64 位的接口标识符。

EUI-64 的生成过程

  1. 获取 MAC 地址:

    • 首先,从网络接口卡(NIC)获取其 MAC 地址。MAC 地址是一个 48 位的标识符,通常以十六进制表示,例如 00:1A:2B:3C:4D:5E
  2. 插入固定值:

    • 将 MAC 地址拆分为两部分:前 24 位和后 24 位。
    • 在这两个部分之间插入一个固定的值 FFFE,使得最终的标识符变为 64 位。例如:
      • 原始 MAC 地址:00:1A:2B:3C:4D:5E
      • 拆分后:00:1A:2B3C:4D:5E
      • 插入 FFFE 后:00:1A:2B:FF:FE:3C:4D:5E
  3. 修改第七位:

    • 将生成的 EUI-64 地址的第七位(U/L 位)进行修改,以指示地址的类型:
      • 如果第一个字节的第七位为 0,表示地址是全球唯一的(全球单播)。
      • 如果第一个字节的第七位为 1,表示地址是局部唯一的(本地单播)。
    • 例如,如果原始 MAC 地址的第一个字节是 00(二进制 00000000),则第七位为 0。将其设置为 1,变为 02(二进制 00000010)。

示例

假设有一个 MAC 地址 00:1A:2B:3C:4D:5E,生成 EUI-64 的步骤如下:

  1. 获取 MAC 地址: 00:1A:2B:3C:4D:5E
  2. 插入 FFFE:
    • 拆分为 00:1A:2B3C:4D:5E
    • 结果为 00:1A:2B:FF:FE:3C:4D:5E
  3. 修改第七位:
    • 原始第一个字节 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 地址可能会变化(例如,虚拟机迁移),这可能导致地址的变化。