有关临时 IPv6 地址的管理和查看
本文受众:具备一定计算机基础,知道命令行是个啥子。
这是一篇附属文章,是对 RDP 使用指北的补充文章。
本文受众设备: Windows 10, Windows 11, Windows Server 2019, Windows Server 2022, Windows Server 2025
文章若有勘误,还请在评论区指正,还望谅解。
概述
以我的计算机的 IPv6 配置为例:
以太网适配器 (虚拟设备) Microsoft Network Interface Card Teaming Controller:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Microsoft Network Adapter Multiplexor Driver
物理地址. . . . . . . . . . . . . : ██-██-██-██-██-██
DHCP 已启用 . . . . . . . . . . . : 否
自动配置已启用. . . . . . . . . . : 是
IPv6 地址 . . . . . . . . . . . . : 2409:████:███:████:████:████:████:████(首选)
临时 IPv6 地址. . . . . . . . . . : 2409:████:███:████:████:████:████:████(首选)
本地链接 IPv6 地址. . . . . . . . : fe80::████:████:███:████%12(首选)
IPv4 地址 . . . . . . . . . . . . : 192.168.1.25(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : fe80::1%12
192.168.1.1
DHCPv6 IAID . . . . . . . . . . . : █████████
DHCPv6 客户端 DUID . . . . . . . : ██-██-██-██-██-██-██-██-██-██-██-██-██-8A
DNS 服务器 . . . . . . . . . . . : 2a07:a8c0::75:58eb
2606:4700:4700::1111
2400:3200::1
2606:4700:4700::1001
119.29.29.29
8.8.8.8
211.137.58.20
1.1.1.1
主 WINS 服务器 . . . . . . . . . : 192.168.1.1
TCPIP 上的 NetBIOS . . . . . . . : 已启用
*: 此文本已遮蔽部分敏感信息。
: 注:示例中的 DNS 列表仅为展示配置,实际生产环境不建议绝对不要设置过多 DNS 地址,会造成严重的性能问题。
关于临时 IPv6
由于众所周知的原因,IPv6 地址可以给几乎所有设备分配地址,所以带来了基于地址的隐私安全和暴露风险。为了解决这个问题,就产生了基于(伪)随机的 IPv6 地址规范来规避这种现象
临时 IPv6 地址最早于 RFC 4941 提出,后被 RFC 8981 所取代
临时 IPv6 地址具有以下特点:
- 随机性:随机地址与 MAC 地址无关,具备;
- 难预测性:RFC 8981 要求,临时 IPv6 地址的生成应该具备统计学上的难以预测性;
- 非长期性:RFC 8981 要求,临时 IPv6 地址的使用应该是有期限的。
RFC 8981 要求,应该默认启用临时 IPv6 地址,而旧规范 RFC 4941 并未作此要求。
以下使用建议仅代表个人观点,仅供参考,应该根据实际情况做决定。
在下面的情况应该使用临时 IPv6 地址:
- 保证隐私和避免追踪;
- 需要对外发起连接且不希望被长期跟踪时
- 家用客户端;
- 你想要的时候。
在下面的情况不应使用临时 IPv6 地址:
- 服务器,服务器的地址在可以的情况下应该具有持久性。(附注:Windows Server 默认禁用)
- 特殊的防火墙规则。
- 需要对外提供稳定的服务
- 你不想用的时候。
临时地址与主地址在技术上均可作为出入站连接使用,操作系统在发起对外连接时,默认优先使用临时地址(Windows 的默认源地址选择策略),二者互不干扰
查看你的临时 IPv6 地址
命令行执行
1 | ipconfig /all |
在对应网络适配器查找 临时 IPv6 地址 的字段,可以参考上文中的示例。
临时 IPv6 地址管理
Windows 可以使用 NETSH 工具和 PowerShell 来管理临时 IPv6 地址
由于
NETSH已进入维护状态,请优先使用 PowerShell 进行管理。建议使用 Windows PowerShell 管理 Windows 和 Windows Server 中的网络技术,而不是
netsh。
Windows NETSH
管理上下文位于 IPv6,管理临时地址的字段是 privacy,NETSH 工具可以使用命令简写。
1 | netsh interface ipv6 |
关于本管理上下文的 Microsoft 文档,参见 netsh interface | Microsoft Learn
NETSH 提示符
netsh interface ipv6>show pri
查询活动状态...
临时地址参数
---------------------------------------------
使用临时地址 : enabled
重复地址检测次数 : 3
最大有效寿命 : 7d
最大首选寿命 : 1d
重生成时间 : 5s
最大随机时间 : 10m
随机时间 : 7m43s
netsh interface ipv6>set privacy
此命令提供的语法不正确。请查看帮助以获取正确的语法信息。
用法: set privacy [[state=]enabled|disabled] [[maxdadattempts=]<integer>]
[[maxvalidlifetime=]<integer>]
[[maxpreferredlifetime=]<integer>]
[[regeneratetime=]<integer>]
[[maxrandomtime=]<integer>]
[[store=]active|persistent]
参数:
标记 值
state - 是否已启用临时地址。
maxdadattempts - 重复地址检测尝试次数。
默认值是 5。
maxvalidlifetime - 临时地址最长有效生存时间。默认值是 7d (7 天)。
maxpreferredlifetime - 首选临时地址最长生存时间。默认值是 1d (1 天)。
regeneratetime - 新地址生成时反对临时地址的时间。默认值是
5s (5 秒钟)。
maxrandomtime - 启动时计算随机数的延迟上限。默认值是
10m (10 分钟)。
store - 下列其中一个值:
active: 更改仅持续到下一次启动。
persistent: 更改持久有效(默认值).
说明: 修改关于临时地址生成的参数。如果指定了 randomtime,则不使用
maxrandomtime。时间值可以为天、小时、分钟和秒,例如 1d2h3m4s。
netsh interface ipv6>
下面解释各个参数的用途
| 参数 | 参考翻译 | 接受类型 | 解释 |
|---|---|---|---|
state | 启用 | 文本 enabled \ disabled | enabled(启用) 或 disabled(禁用) 临时地址生成。 |
maxdadattempts | 重复地址检测尝试次数 | Number | 在生成临时地址后,系统会执行重复地址检测(DAD)来确认该地址是否已被网络中的其他设备使用。若发生冲突,系统会尝试重新生成新地址。该参数控制生成过程中可尝试的最大次数。 |
maxvalidlifetime | 最大有效寿命 | 时间 | 控制临时地址可使用的最长时间。到期后地址销毁。 |
maxpreferredlifetime | 最大首选寿命 | 时间 | 控制临时地址可建立连接的最长时间。到期后不可使用该地址建立新连接,现有连接不受影响。 |
regeneratetime | 弃用临时地址之前何时生成新地址 | 时间 | 系统在弃用原有临时地址时,会在首选寿命之前,间隔一段时间,再生成新的临时地址。该时间间隔由该参数控制。 |
maxrandomtime | 启动时的最大随机延迟 | 时间 | 在可以生成临时地址之后(通常是系统启动、网络变化时)延迟生成的时间上限。 |
store | 持久性 | active \ persistent | 生成的临时地址持久性。active 参数要求系统再次启动时丢弃临时地址。persistent 参数则保留临时地址。 |
Examples.
要禁用临时 IPv6 地址:
1 | netsh interface ipv6 set privacy state=disabled |
反之,启用就是:
1 | netsh interface ipv6 set privacy state=enabled |
Windows PowerShell NetIPv6Protocol
若使用 PowerShell 进行设置,请另行参阅 cmdlet 文档 Set-NetIPv6Protocol。
Set-NetIPv6Protocol (NetTCPIP) | Microsoft Learn
System32 Get-NetIPv6Protocol
DefaultHopLimit : 128
NeighborCacheLimit(Entries) : 1024
RouteCacheLimit(Entries) : 32768
ReassemblyLimit(Bytes) : 133739168
IcmpRedirects : Enabled
SourceRoutingBehavior : DontForward
DhcpMediaSense : Enabled
MediaSenseEventLog : Disabled
MldLevel : All
MldVersion : Version2
MulticastForwarding : Disabled
GroupForwardedFragments : Disabled
RandomizeIdentifiers : Enabled
AddressMaskReply : Disabled
UseTemporaryAddresses : Enabled
MaxTemporaryDadAttempts : 3
MaxTemporaryValidLifetime : 7.00:00:00
MaxTemporaryPreferredLifetime : 1.00:00:00
TemporaryRegenerateTime : 00:00:05
MaxTemporaryDesyncTime : 00:10:00
DeadGatewayDetection : Enabled
Administrator System32
注:以下仅列出与临时 IPv6 地址相关的参数,其他参数(如 DefaultHopLimit、NeighborCacheLimit 等)不在本文讨论范围内。
| 参数 | 参考翻
| MaxTemporaryValidLifetime | 有效的最长时间长度 | TimeSpan | 控制临时地址可使用的最长时间。到期后地址销毁。 |
| MaxTemporaryPreferredLifetime | 最大临时优先使用期限 | TimeSpan | 控制临时地址可建立连接的最长时间。到期后不可使用该地址建立新连接,现有连接不受影响。 |
| TemporaryRegenerateTime | 弃用临时地址(首选寿命)之前何时生成新地址 | TimeSpan | 表示在生成新地址后、旧临时地址被废弃之前的时间长度 |
| MaxTemporaryDesyncTime | 最大去同步时间 | TimeSpan | 最大去同步时间,用于在生成临时地址时引入随机延迟,避免多个设备同步更新地址导致隐私泄露。 |
| RandomizeIdentifiers | 生成接口标识符时是否使用随机值 | 文本 enabled \ disabled | 控制Windows操作系统在生成接口标识符(Interface Identifier,IID)时是否使用随机值。
Examples
禁用临时 IPv6 地址
1 | Set-NetIPv6Protocol -UseTemporaryAddresses Disabled |
启用临时 IPv6 地址
1 | Set-NetIPv6Protocol -UseTemporaryAddresses Enabled |
参考
- RFC 4941: Privacy Extensions for Stateless Address Autoconfiguration in IPv6
- RFC 8981: Temporary Address Extensions for Stateless Address Autoconfiguration in IPv6
- 网络命令行工具 (netsh) | Microsoft Learn
[Set-NetIPv6Protocol (NetTCPIP) Microsoft Learn](https://learn.microsoft.com/zh-cn/powershell/module/nettcpip/set-netipv6protocol?view=windowsserver2022-ps)译 接受 解释 UseTemporaryAddresses使用临时地址 文本 enabled\disabledenabled(启用) 或disabled(禁用) 临时地址生成。MaxTemporaryDadAttempts最大临时地址生成尝试次数 TimeSpan在生成临时地址后,系统会执行重复地址检测(DAD)来确认该地址是否已被网络中的其他设备使用。若发生冲突,系统会尝试重新生成新地址。该参数控制生成过程中可尝试的最大次数。


