Arj*_*jan 147 mac-address privacy ipv6
在我的 Mac 上,每个 IPv6 地址都包含特定计算机(不是我的路由器)的 MAC 地址。诸如ipv6-test.com 之类的网站不仅显示它,而且还告诉我它属于 Apple 计算机。
这感觉就像一个超级 cookie,也可能适用于其他操作系统。如何避免暴露我的 MAC 地址?
背景:MAC 地址并不明显。喜欢2001:0db8:1:2:60:8ff:fe52:f9d8
:
0060:08ff:fe52:f9d8
。ff:fe
从中间剥离零件。如果这些字节不存在,那么就没有 MAC 地址。0x00
(00000000) 变成0x02
(00000010)。60:8ff:fe52:f9d8
转换回 MAC 地址02:60:08:52:f9:d8
。注意:自 macOS 10.12 Sierra 起,据 Ars Technica 称,Apple 采用了一种新方法来生成不基于 MAC 地址的稳定地址, Windows 显然已经这样做了多年。
use*_*686 142
这可以通过 IPv6 的两个扩展来解决:
流行的操作系统支持至少一种方法,但越来越多的两种方法都支持。
请注意,这些特征是正交的。如果需要,您可以同时使用两者。
在某些操作系统中,主接口标识符不再从 MAC 或 EUI-64 生成——而是使用散列或随机种子生成(通常根据RFC 7217)
这种地址在每个网络中仍然是静态的——同一台机器上的同一操作系统在同一 IPv6 前缀内应该总是生成相同的后缀。它适用于传入连接。
的Windows开始与Windows Vista使用自定义方案。
要检查该功能是否处于活动状态,请运行 PowerShell 命令:
Get-NetIPv6Protocol | fl RandomizeIdentifiers
Run Code Online (Sandbox Code Playgroud)
要启用/禁用该功能:
Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
Run Code Online (Sandbox Code Playgroud)
Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
Run Code Online (Sandbox Code Playgroud)
这也可以使用netsh interface ipv6
.
Linux 上的 NetworkManager从 NM v1.2.0 开始支持 RFC 7217,使用连接配置文件的 UUID 作为种子的一部分。此功能在最近的 NM 版本中默认处于活动状态。
要启用或禁用此功能:
nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
Run Code Online (Sandbox Code Playgroud)
nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
Run Code Online (Sandbox Code Playgroud)
systemd-networkd 样的支持RFC 7217使用此。网络文件选项,但似乎需要你明确地针对该模式下,应使用列表网络前缀:
[Network]
IPv6Token=prefixstable:2001:db8:abcd:123::/64
Run Code Online (Sandbox Code Playgroud)
如果没有前缀匹配,它仍然会回退到 EUI-64 方法。
Linux/BSD 上的 dhcpcd使用 /etc/dhcpcd.conf 中的这个选项支持 RFC 7217:
slaac private
Run Code Online (Sandbox Code Playgroud)
要禁用此功能并使用传统的 EUI-64 标识符:
slaac hwaddr
Run Code Online (Sandbox Code Playgroud)
Linux 内核 SLAAC从 Linux v4.1.0开始支持 RFC 7217;但是,它必须通过 sysctl 存储秘密种子来手动激活。
密钥是一个 128 位十六进制字符串(形状像 IPv6 地址),您可以使用以下方法生成:
uuidgen | sed "s/-//g; s/..../:&/g; s/^://"
Run Code Online (Sandbox Code Playgroud)
该密钥必须存储在net.ipv6.conf.default.stable_secret
sysctl 中。为了使其持久化,可以将其放入/etc/sysctl.d/50-rfc7217.conf
或类似的文件中:
net.ipv6.conf.default.stable_secret = 84a0:d5aa:52b0:4d35:k567:3aa6:7af5:474c
Run Code Online (Sandbox Code Playgroud)
设置机密会自动为所有网络接口激活此模式。要检查该功能是否处于活动状态,请在 中查找“addrgenmode stable_secret” ip -d link
,或在 中查找值“2” sysctl net.ipv6.conf.<ifname>.addr_gen_mode
。
此功能(在RFC 4941 中定义)提供了随机生成并每隔几个小时轮换一次的附加地址。这些地址仅用于传出连接 - 您仍然保留传入连接的基于 MAC 或基于 RFC7217 的主地址。
从 Windows XP SP2 开始,Windows支持临时地址。
要启用/禁用此功能:
netsh interface ipv6 set privacy state=enabled
netsh interface ipv6 set privacy state=disabled
Run Code Online (Sandbox Code Playgroud)
请注意,从 Vista 开始,Windows 现在支持基于哈希的主地址生成,因此此功能并不重要。
Linux 上的 NetworkManager :最新版本的 NetworkManager 自行处理 RA,尽管以下两个值与 sysctl 具有相同的含义(2 = 首选隐私地址,1 = 首选主地址):
nmcli con modify <name> ipv6.ip6-privacy 2
Run Code Online (Sandbox Code Playgroud)
请注意,从 v1.2.0 开始,NetworkManager 现在支持基于 RFC7217 的主地址生成,因此此功能并不重要。
旁注:从 1.4.0 开始,NM 也允许随机化 MAC 地址本身。设置wifi.cloned-mac-address
到stable
具有不同的MAC对每个网络(推荐),或random
随机化它为每连接(可能会引起问题)。
在所有情况下,<name>
必须是连接名称,例如 WiFi SSID 或"Wired Connection 1"
。使用nmcli con
列出所有。
要使其成为新连接的默认值,从 1.2.0 开始,您可以更改/etc/NetworkManager/NetworkManager.conf
:
[connection]
ipv6.addr-gen-mode=stable-privacy
wifi.cloned-mac-address=stable
Run Code Online (Sandbox Code Playgroud)
dhcpcd支持使用slaac ... temporary
子选项的临时地址:
slaac private temporary
Run Code Online (Sandbox Code Playgroud)
或者
slaac hwaddr temporary
Run Code Online (Sandbox Code Playgroud)
Linux 内核 SLAAC支持临时地址,但默认情况下不使用它们。可以通过设置这些 sysctl 来激活它们:
sysctl net.ipv6.conf.all.use_tempaddr=2
sysctl net.ipv6.conf.default.use_tempaddr=2
Run Code Online (Sandbox Code Playgroud)
的all
或default
部分可以与特定的接口名称被替换; 例如net.ipv6.conf.eth0.use_tempaddr
。
(我曾经ip link set eth0 down && ip link set eth0 up
强制分配地址,但您也可以运行rdisc6 eth0
或等待几分钟以进行下一次定期路由器广告。)
Mac OS X – 自 OS X 10.7 Lion 起默认启用:
sysctl -w net.inet6.ip6.use_tempaddr=1
Run Code Online (Sandbox Code Playgroud)
临时地址(如果启用)将是首选。
自由BSD:
sysctl net.inet6.ip6.use_tempaddr=1
sysctl net.inet6.ip6.prefer_tempaddr=1
Run Code Online (Sandbox Code Playgroud)
较旧的 NetBSD 版本:
sysctl -w net.inet6.ip6.use_tempaddr=1
Run Code Online (Sandbox Code Playgroud)
最新的 NetBSD 似乎不再支持内核 SLAAC,在这种情况下,请遵循 dhcpcd 指令。
OpenBSD – 在5.2 中添加了支持;在5.3 中默认启用和首选。
ifconfig em0 autoconfprivacy
Run Code Online (Sandbox Code Playgroud)
ifconfig
在临时地址旁边显示“autoconfprivacy”。
配置注意事项:
在 Linux、OS X 和所有 BSD 上,编辑/etc/sysctl.conf
以使设置永久。
在 Windows 上,更改将自动保留。(如果您希望它只持续到重新启动,您可以附加store=active
到该netsh
命令。)
部分基于IPv6INT.net上的IPv6 操作系统。另请参阅一般 IPv6 说明
如果在 IPv6 地址中使用硬件地址,通常意味着您的网络使用 IPv6 无状态自动配置。在这种情况下,您只需选择自己的地址后缀并手动配置 IPv6。
然而,即使手动添加的地址没有您的硬件信息,它仍然是静态的(与隐私寻址不同,它经常更改地址)。此外,静态地址在超过 2-3 个设备的网络中可能会很麻烦。
归档时间: |
|
查看次数: |
45517 次 |
最近记录: |