Con*_*ick 5 networking router mac-address ipv6
今天我正在使用 tcpdump,我注意到我的计算机有一个特定 MAC 地址的 IPv6 流量,我无法使用 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
Run Code Online (Sandbox Code Playgroud)
为什么路由器会为 IPv6 提供不同的 MAC 地址?
Mar*_*iae 10
这是隐私/安全问题的结果。在 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
Run Code Online (Sandbox Code Playgroud)
等等,在 Mac 中
sysctl -w net.inet6.ip6.use_tempaddr=1
Run Code Online (Sandbox Code Playgroud)
这种方案的优点是它不仅隐藏了您的硬件标识,还经常自动更改(随机)标识。
有关大多数操作系统中隐私寻址的更多信息,可以阅读 这个优秀的 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
Run Code Online (Sandbox Code Playgroud)
编辑2:
@slubman 正确地指出,在 Linuxes 中,正确的使用选项是2,而不是1(这是我在我的 Debian 上使用的),因为1确实允许生成隐私地址,但保留 Autoconf 作为首选。