EUI-64是一种网络地址分配方式,主要用于IPv6环境中。EUI是"Extended Unique Identifier"的缩写,中文意思是“扩展唯一标识符”。64则表示这个标识符是64位的。
EUI-64地址通常由设备的MAC地址(硬件地址)转换而来。MAC地址通常是48位,通过在MAC地址的中间插入16位的填充位(通常是0xFFFE),就形成了64位的EUI-64地址。
这种转换方式保证了每个设备的EUI-64地址的唯一性,因为MAC地址是唯一的,转换后的EUI-64地址自然也是唯一的。同时,由于EUI-64地址包含了设备的MAC地址信息,所以也可以反向推算出MAC地址,有助于网络管理和故障排查。
IPv6地址如果是由EUI-64生成的,那么它的最后64位(即从第65位开始)应该是由你的设备网络接口卡的MAC地址转换而来的。转换过程中,MAC地址(48位)的中间插入了16位的填充位(通常是0xFFFE),形成了64位的地址。
因此,你可以检查你的IPv6地址的最后64位,看看是否满足以下特点:
1.第9到24位(从1开始计数)是0xFFFE。
2.第25到64位是MAC地址的后24位。
3.第1到8位是MAC地址的前24位,但是第7位(也就是第二个16进制数字的第二位)要进行取反操作,也就是如果原来是0,就变成1,原来是1就变成0。
举个例子,一个MAC地址是79-F3-AE-E0-76-82,转换为EUI-64后,IPv6地址的最后64位应该是
你的前缀:7BF3:AEFF:FEE0:7682
拼接起来结果如下
2408:1145:1419:1981:7BF3:AEFF:FEE0:7682
转换的过程如下
首先将MAC地址转换为二进制格式则得到 01111001-11110011-10101110-11100000-01110110-10000010
然后拼接为一个符合V6格式的字符串 0111100111110011:1000001011100000:0111011010000010
之后对第七位进行取反 0111101111110011:1000001011100000:0111011010000010
插入填充位 0111101111110011:1010111011111111:1111111011100000:0111011010000010
得到 7BF3:AEFF:FEE0:7682
最后拼接到运营商给你前缀后面 2408:1145:1419:1981:7BF3:AEFF:FEE0:7682
因为国内的IPV6是动态的前缀,因此我们可以通过添加反向掩码的方式来告诉路由器这个设备的后缀是固定的,前缀是变动的。只需要将数据包转发到带这个后缀的地址就行,保证了你内网的安全性。同时你的DDNS脚本也可以通过eui64的特性很方便判断客户端的具体V6地址。