启用ipv6隐私扩展需设内核use_tempaddr=2并用nmcli配置ipv6.ip6-privacy 2和ipv6.method auto,重启连接后ip -6 addr可验证temporary dynamic地址生成。

启用 IPv6 隐私扩展(Privacy Extensions)是防范链路层地址扫描最直接有效的主机级手段——它不阻止扫描行为本身,而是让扫描者即使抓到地址,也极难长期关联到具体设备。核心逻辑是:用短期、随机、可轮换的临时地址(temporary addresses)替代稳定不变的基于 MAC 的接口标识符(EUI-64),大幅提高设备指纹的模糊性。
确认内核已支持并启用临时地址机制
隐私扩展依赖内核参数 use_tempaddr,必须为 2 才表示“生成并优先使用临时地址”。仅靠 NetworkManager 配置无法绕过该前提:
- 检查全局策略:
sysctl net.ipv6.conf.all.use_tempaddr,返回值应为 2 - 检查目标网卡(如 eth0):
sysctl net.ipv6.conf.eth0.use_tempaddr,同样需为 2 - 若值为 0 或 1,需临时启用:
sudo sysctl -w net.ipv6.conf.eth0.use_tempaddr=2 - 如需永久生效,写入
/etc/sysctl.conf:添加net.ipv6.conf.eth0.use_tempaddr = 2
通过 nmcli 正确配置连接级隐私策略
NetworkManager 不会自动同步内核参数,必须显式设置连接属性,否则即使内核启用,NM 仍可能忽略临时地址:
- 将隐私级别设为 2(推荐):
nmcli connection modify "Wired connection 1" ipv6.ip6-privacy 2 - 确保 IPv6 地址获取方式为 auto(SLAAC 或 DHCPv6):
nmcli connection modify "Wired connection 1" ipv6.method auto - 禁用静态地址或 disabled 方法,否则
ip6-privacy不生效 - 重启连接使配置落地:
nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"
验证临时地址是否真实生成并被优先使用
仅看配置不等于生效。必须从接口地址列表中确认临时地址存在且标记为 temporary:
- 执行:
ip -6 addr show dev eth0 - 查找含 temporary 字样的条目,例如:
inet6 2001:db8::a1b2:c3d4:e5f6:7890/64 scope global temporary dynamic - 对比同前缀下的非-temporary 地址(通常带
stable-privacy或 EUI-64 格式),确认临时地址的 lifetime 更短(preferred_lft默认 24 小时) - 用
ping6 -I eth0 fe80::1 %eth0类命令测试连通性,确保业务未因地址切换中断
理解防护边界与典型失效场景
隐私扩展不是万能盾牌,需清楚它防什么、不防什么:
- ✅ 有效防御:基于链路本地扫描(如
nmap -6 -sP fe80::/10)后对全局地址的长期追踪;NDP 请求/通告中暴露的稳定地址减少 - ❌ 不防御:链路本地地址(fe80::/10)本身不受影响——它始终存在且固定,但仅限本链路,不参与跨路由探测
- ⚠️ 常见失效:云平台或企业防火墙过滤临时地址路由;使用
ipv6.method ignore或manual且未配ipv6.addresses;内核参数未设为 2 - ? 补充建议:配合 ULA(fd00::/8)用于内网通信,进一步隔离公网可扫描面











