713 字
4 分钟
Windows11 禁用 IPv6 随机地址
前言
Windows11 默认启用了 IPv6 随机标识符(RandomizeIdentifiers),这是一种保护隐私的机制,可以防止用户在网络上被追踪。但在某些情况下,我们需要固定 IPv6 地址后缀以方便外部访问(如远程桌面访问家庭服务器)。
Windows 提供 Set-NetIPv6Protocol -RandomizeIdentifiers Disabled 命令来禁用随机标识符,但在 Windows11 最新版本中,执行该命令后,重启系统后随机标识符仍然会被重新启用,这似乎是一个系统 bug。相关问题讨论可见:
问题表现
网卡 MAC 值为 28:cf:e9:12:5d:fe,在启用随机标识符时,同一台设备在不同时间会有不同的 IPv6 地址后缀,如:
- 2001:db8::/64 前缀下的地址: 3725:f4b2:a198
- 2001:db8::/64 前缀下的地址: 8f12:c637:92ae:5b19(重启后)
禁用随机标识符后,IPv6 地址应该保持固定的 MAC 地址派生后缀,如:
- 2001:db8::/64 前缀下的地址: 2acf:e9ff:fe12:5dfe(基于网卡 MAC 地址生成)
IPv6 EUI-64 地址生成规则说明当禁用随机化时,Windows 使用 EUI-64 规则从 MAC 地址生成 IPv6 接口标识符:
- 取 MAC 地址(例如
28:cf:e9:12:5d:fe)- 在 MAC 地址中间插入
ff:fe:28:cf:e9:ff:fe:12:5d:fe- 翻转 MAC 地址第 7 位(通用/本地位):
28的二进制是00101000,翻转得到00101010即2a- 最终接口标识符:
2acf:e9ff:fe12:5dfe这样生成的 IPv6 地址是可预测的,便于网络管理,但也可能带来隐私风险。
解决方法
通过 Windows 计划任务来执行禁用随机标识符的命令,以确保重启后随机标识符仍然禁用。
1. 创建计划任务
创建一个系统启动时自动运行的计划任务,来执行禁用随机标识符的命令。有两种方法可以创建此任务:
- 按
Win + R打开运行对话框,输入taskschd.msc并点击确定 - 在任务计划程序中,右键点击”任务计划程序库”,选择”创建任务”
- 常规选项卡中:
- 名称:输入
Disable IPv6 RandomizeIdentifiers - 选择不管用户是否登录都运行
- 选择”使用最高权限运行”
- 名称:输入
- 触发器选项卡中:
- 点击”新建”,选择”启动时”,点击确定
- 操作选项卡中:
- 点击”新建”
- 程序/脚本:输入
powershell.exe - 添加参数:输入
-Command "Set-NetIPv6Protocol -RandomizeIdentifiers Disabled" - 点击确定
- 点击”确定”保存任务(可能需要输入管理员密码)
2. 验证配置
创建任务后,可以手动运行一次或重启系统来验证配置:
- 重启系统后,打开 PowerShell
- 执行命令:
Get-NetIPv6Protocol | Select RandomizeIdentifiers - 确认输出显示
Disabled
如果显示为 Disabled,则表示配置成功,IPv6 地址将不再随机化。
Windows11 禁用 IPv6 随机地址
https://blog.chauyin.com/posts/windows11-禁用-ipv6-随机地址/