[i=s] 本帖最后由 mundane 于 2025-2-28 12:48 编辑 [/i]<br />
<br />
[i=s] 本帖最后由 mundane 于 2025-2-28 12:45 编辑 [/i]
1.什么是eui64
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地址,有助于网络管理和故障排查。
2.如何判断哪个是由eui64获得的地址
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
3.为什么要用eui64地址做转发
因为国内的IPV6是动态的前缀,因此我们可以通过添加反向掩码的方式来告诉路由器这个设备的后缀是固定的,前缀是变动的。只需要将数据包转发到带这个后缀的地址就行,保证了你内网的安全性。同时你的DDNS脚本也可以通过eui64的特性很方便判断客户端的具体V6地址。
4.飞牛系统目前的策略
飞牛基于debian12开发,但debain 12默认启用了ipv6 隐私模式(stable-privacy)。此模式下,slaac地址为随机生成,也就是说家庭宽带重新拨号后,前缀发生改变,后缀同样会发生改变。除非放弃安全,关闭整个局域网下ipv6防火墙,否则无法在防火墙上使用固定规则。Ubuntu 24LTSC默认也是eui64,同样群晖、威联通的nas系统也是eui64,极其方便。
- 之前飞牛系统可以手动修改Debian系统,改缺省无状态ipv6 为 eui64
- 修改
cd /etc/NetworkManager/system-connections/
目录中对应网卡的文件
-
- [ipv6]
-
- -addr-gen-mode=stable-privacy
-
- +#addr-gen-mode=stable-privacy
-
本人已多次建议。但未得到官方回复。希望下次系统更新能够采用。