今天,我正在使用tcpdump,我发现我的计算机上的IPv6流量具有特定的MAC地址,而使用nmap或arping无法与IP匹配。在仔细查看tcpdump日志后,我发现这是我的路由器使用的另一个MAC地址,但专门用于IPv6流量。
22:49:01.936830 90:0d:cb:ff:31:91 (oui Unknown) > 33:33:00:00:00:01 (oui Unknown), ethertype IPv6 (0x86dd), length 158: fe80::920d:cbff:feff:3191 > ip6-allnodes: ICMP6, router advertisement, length 104
为什么路由器会为IPv6提供不同的MAC地址?
这是隐私/安全问题的结果。在IPv6中,在无状态地址自动配置ADDRCONF下,节点无需DHCP服务器即可生成自己的公共地址。该地址的低64位由IEEE标识符(如果可用)生成,该标识符等效于第2层MAC地址。如果这是全部内容,则可以通过采用常规数据挖掘技术,通过IPv6地址的低64位来跟踪任何移动设备的位置和通信。
这就是为什么我问您是否在笔记本电脑上看到它的原因。
RFC 3041和RFC4941解决了这种隐私/安全问题,它们描述了两种生成随机接口标识符(存在或不存在永久存储)的策略。
您可以使用以下控件在Linux和Mac中控制此功能:在Linux中,
sysctl net.ipv6.conf.all.use_tempaddr=2
sysctl net.ipv6.conf.default.use_tempaddr=2
sysctl net.ipv6.conf.eth0.use_tempaddr=2
等等,在Mac中
sysctl -w net.inet6.ip6.use_tempaddr=1
这种方案的优点是它不仅隐藏您的硬件标识,而且还相当频繁地自动更改(随机)标识。
有关大多数操作系统中的“隐私寻址”的更多信息,请阅读此出色的PSU页面。
编辑:
某些系统(例如Arch Linux)已经转向sysctl的新配置。在这种情况下,您可以通过在文件/etc/sysctl.d/40-ipv6.conf中将以下条目更改为这些值来执行以上配置:
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.eth0.use_tempaddr = 2
编辑2:
@slubman正确指出,在Linuxes中,要使用的正确选项是2,而不是1(这是我在Debian上拥有的选项),因为1确实允许生成隐私地址,但将Autoconf保留为首选。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句