EUI64地址反解MAC以及防止隐私泄漏

桜庭清夏 · 2021-07-06 20:59:59 


EUI64地址是什么东西呢?
它是一种根据接口MAC自动获取的IPV6后缀。
比如上游发来地址前缀 2400:8500:1300:800::/64,此时系统若是EUI64生成模式,则会根据EUI64规则通过MAC地址来生成地址。
例如机器的MAC是52:54:00:25:25:02 那么EUI64地址就是2400:8500:1300:800:5054:00ff:fe25:2502。如何得来的地址呢?
首先EUI64,顾名思义是/64的前缀情况下生成的,小于/64无法应用该规则。把MAC地址进行分段,假如是UU:VV:WW:XX:YY:ZZ,那么EUI64就是UU*VV:WWFF:FEXX:YYZZ。这里的星号表示并不是照搬UU的值。
那么上例的UU的变化规则是什么呢?规则是把UU进行二进制转换(MAC是16进制),将其倒数第二位取反得来。比如上面的0x52 转换之后就是1010010B。把倒数第二位取反,那么就是1010000B,也就是0x50。
反向解析也很简单,定位到FF:FE,把FE后面的数据照抄组成MAC后三段,FF前面照抄组成前三段,最后把开头的0x50转换为二进制,结果是1010000B,对倒数第二位取反,得出1010010B,转回十六进制即为0x52。

Linux系统如何防止这种事情发生呢?

在/etc/sysctl.conf任意空行处加入下列内容

net.ipv6.conf.all.use_tempaddr=2
net.ipv6.conf.default.use_tempaddr=2
net.ipv6.conf.default.addr_gen_mode = 3
net.ipv6.conf.all.addr_gen_mode = 3

随后输入sysctl -p重启网络后生效


你是否会像清风拂过花儿一样与我相遇呢?