IPv6 隐私扩展:阻止地址跟踪
IPv6 地址可以暴露你的 MAC 地址并在网络间跟踪你。隐私扩展解决了这个问题。以下是如何启用它们。
IPv6 隐私扩展:阻止地址跟踪#
当你使用 IPv6 连接到网络时,你的设备可能正在广播从你的网卡 MAC 地址派生的永久标识符。这使你可以跨不同的网络和网站进行跟踪。
隐私问题#
原始 IPv6 地址方案使用 EUI-64 从 MAC 地址生成接口 ID。你的网卡的 MAC 00:1a:2b:3c:4d:5e 成为你的 IPv6 地址的一部分,作为 021a:2bff:fe3c:4d5e。
以下是转换的工作原理:
MAC 地址: 00:1a:2b:3c:4d:5e
插入 FF:FE: 00:1a:2b:ff:fe:3c:4d:5e
翻转第 7 位: 02:1a:2b:ff:fe:3c:4d:5e
接口 ID: 021a:2bff:fe3c:4d5e第 7 位翻转(通用/本地位)是 EUI-64 标准的一部分。00 变成 02,因为该位指示地址是否全局唯一。
这会产生几个问题:
- 跨网络跟踪:无论你是在家、在咖啡店还是在公共 WiFi 上,你的设备都携带相同的接口 ID
- 持久识别:网站可以随时间关联访问,即使你清除 cookie
- MAC 地址泄露:你的硬件标识符在每个数据包中暴露
与隐藏内部地址的 IPv4 的 NAT 不同,IPv6 通常直接为设备分配全局可路由的地址。没有隐私扩展,你就在到处广播相同的标识符。
隐私扩展的工作原理#
RFC 4941(由 RFC 8981 更新)引入了临时地址,取代 EUI-64 派生地址。你的设备不是使用你的 MAC 地址,而是生成随机接口 ID。
该机制创建两种类型的地址:
稳定地址:从你的 MAC 或随机种子生成。用于传入连接并保持网络一致。不用于出站流量。
临时地址:随机生成,用于出站连接,定期轮换(大多数系统上通常每 24 小时)。
当你浏览网页或进行出站连接时,你的操作系统使用临时地址。稳定地址保持可用于需要到达你的设备的服务。
你的设备同时维护多个 IPv6 地址:
2001:db8:1234:5678:021a:2bff:fe3c:4d5e # 稳定(EUI-64 或稳定私有)
2001:db8:1234:5678:a4b2:c9d1:e3f4:5a6b # 临时(当前活动)
2001:db8:1234:5678:1234:5678:9abc:def0 # 临时(已弃用,过期)轮换自动发生。旧地址在完全过期之前进入「已弃用」状态,确保活动连接不会中断。
启用隐私扩展#
Windows#
从 Vista 开始,Windows 上默认启用隐私扩展。使用 PowerShell 验证:
Get-NetIPv6Protocol | Select-Object UseTemporaryAddresses输出 2 表示为出站连接启用。手动配置:
# 启用临时地址
Set-NetIPv6Protocol -UseTemporaryAddresses Enabled
# 禁用(不推荐)
Set-NetIPv6Protocol -UseTemporaryAddresses Disabled检查你的当前地址:
Get-NetIPAddress -AddressFamily IPv6 -PrefixOrigin RouterAdvertisement临时地址显示倒计时的 Preferred 生命周期值。
macOS#
在现代 macOS 上默认启用。验证:
sysctl net.inet6.ip6.use_tempaddr如果启用,返回 1。配置:
# 启用
sudo sysctl -w net.inet6.ip6.use_tempaddr=1
# 永久化
echo "net.inet6.ip6.use_tempaddr=1" | sudo tee -a /etc/sysctl.conf临时地址生命周期(以秒为单位):
sysctl net.inet6.ip6.temppltime # 首选生命周期
sysctl net.inet6.ip6.tempvltime # 有效生命周期Linux#
配置因发行版而异。大多数现代发行版默认启用隐私扩展,但请检查:
sysctl net.ipv6.conf.all.use_tempaddr0= 禁用1= 启用,优先公共地址2= 启用,优先临时地址(推荐)
正确启用:
sudo sysctl -w net.ipv6.conf.all.use_tempaddr=2
sudo sysctl -w net.ipv6.conf.default.use_tempaddr=2通过编辑 /etc/sysctl.conf 或创建 /etc/sysctl.d/99-ipv6-privacy.conf 永久化:
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2应用更改:
sudo sysctl -p检查活动地址:
ip -6 addr show scope global临时地址用 temporary 标志标记并显示 preferred_lft 和 valid_lft 值。
移动设备#
iOS:自 iOS 4.3 以来默认启用隐私扩展。无用户配置可用。
Android:在 Android 8.0+ 上默认启用。早期版本可能使用稳定地址。在设置 → 关于 → 状态中检查,尽管你通常无法禁用隐私扩展。
何时不使用隐私扩展#
隐私扩展破坏需要稳定地址的场景:
服务器和服务:如果你正在运行 Web 服务器、SSH 守护程序或任何需要传入连接的服务,请禁用隐私扩展或专门配置服务以绑定到稳定地址。
# Linux:禁用特定接口
sudo sysctl -w net.ipv6.conf.eth0.use_tempaddr=0DNS 记录:你不能将 DNS 指向轮换地址。服务器需要稳定的 IP。
网络设备:路由器、防火墙和网络基础设施应使用稳定地址进行管理。
防火墙规则:如果你将特定地址列入白名单,临时地址会在轮换时中断。
日志记录和监控:跨地址更改关联日志变得困难。对于隐私不是问题的内部网络,稳定地址简化了故障排除。
超越隐私扩展#
隐私扩展仅保护接口 ID。你的 /64 前缀仍然暴露你的 ISP 和大致位置。其他措施:
支持 IPv6 的 VPN:通过 VPN 提供商的 IPv6 地址空间隧道所有流量。验证你的 VPN 实际上路由 IPv6 流量;许多完全禁用 IPv6,这会泄漏你的真实 IPv6 地址。
在连接到 VPN 时在 test-ipv6.com 测试泄漏。
前缀轮换:一些 ISP 定期轮换你的 /64 前缀。这很罕见且没有标准化。大多数住宅连接无限期保持相同的前缀。
Tor:Tor 在出口节点支持 IPv6,但许多中继仅支持 IPv4。即使你有 IPv6 连接,你的流量也可能通过 IPv4 退出。
NAT66:IPv6 的网络地址转换存在,但破坏了端到端原则并且有争议。不推荐。
最实用的组合:在客户端设备上启用隐私扩展 + 在需要时使用 VPN 进行完整地址屏蔽。
通过访问 ping6.net 并注意你的接口 ID 是否随时间变化(使用启用的隐私扩展应该)来检查你的当前隐私状况。
隐私扩展是应该在所有客户端设备上启用的基本安全措施。它们不是完美的保护,但它们消除了 IPv6 地址中最明显的跟踪向量。
相关文章#
- IPv6 安全:威胁、缓解措施和最佳实践 - 了解 IPv6 安全的完整策略,包括隐私保护。
- DHCPv6 vs SLAAC:设备如何获取 IPv6 地址 - 了解地址分配方法如何影响隐私设置。
亲自尝试
使用我们的 IPv6 验证器检查你的当前地址并验证隐私扩展是否正常工作。