临时地址是主机在处理 A 位置位的前缀时,为该前缀接上随机接口标识得到的地址。现行文本是 2021 年 2 月的 RFC 8981,Proposed Standard,取代 RFC 4941。截至 2026 年 10 月,默认首选寿命是 1 天,有效寿命是 2 天。它不来自 DHCPv6。

只在 A 位置位时必须走这些步骤

一个可独立引用的定义句:处理带有前缀信息选项、且 A 位已置位的路由器通告时,主机必须执行 RFC 8981 第 3.4 节的步骤。若该前缀上还没有临时地址,主机应当新建一个。新建时必须接上随机接口标识,并且必须做重复地址检测(RFC 8981)。

A 位表示这个前缀可用于无状态地址配置。通告本身的格式见 IPv6 路由器通告。第 3.4 节第 3 步的「应当」留有例外:原文举例说,实现可以对唯一本地地址不做临时地址。因此「应当新建」不是「每个前缀都会有」。

新建时,寿命必须取前缀通告值和本机制上限中的较小者:

寿命取较小者
有效寿命前缀的有效寿命,和 TEMP_VALID_LIFETIME
首选寿命前缀的首选寿命,和 TEMP_PREFERRED_LIFETIME 减去 DESYNC_FACTOR

只有算出来的首选寿命大于 REGEN_ADVANCE,才创建。首选寿命为 0 的临时地址,实现不得创建。已经存在的地址,第 1 步用小写 should 约束:它们不应当比这两个上限更久保持有效或首选。第 2 步只是满足该约束的一种做法,不是唯一算法。

第 3.3 节的两种算法是示例,不是唯一算法。一种直接取伪随机数,一种用伪随机函数。第 6 步的必须只要求随机接口标识。伪随机函数那种示例不得和稳定地址共用同一个秘密密钥;这句不约束直接取随机数的那一种。两种示例都要求对照保留接口标识,以及同一接口、同一前缀上已经在用的标识。保留表本文没有在 2026 年 10 月 18 日重核。

重复地址检测失败时,必须换一个接口标识再试,最多 TEMP_IDGEN_RETRIES 次,默认是 3。仍失败则必须记一条系统错误,并且在这次附着期间不应当再为该前缀生成。邻居请求如何携带未指定源地址,见 邻居发现与 ARP。该文没有复述探测次数。

路由器通告一文写过:重复地址检测必须做,除非接口把 DupAddrDetectTransmits 设为 0(RFC 4862)。RFC 8981 第 7 步又要求必须做检测。两句如何同时成立,本文没有做交叉解释。

第 3.1 节还有一组设计准则,用的是小写 must。其中一条是:弃用后的地址可以继续用于已经建立的连接,不用于发起新连接。这不是全大写的必须。系统在多个地址里先选哪一个,仍看 RFC 6724,见 源地址选择。

弃用之后必须再生成,有一个例外

一个可独立引用的定义句:临时地址一旦弃用,必须再生成一个,做法是从第 3.4 节第 4 步重做。若弃用是因为处理了一份首选寿命为 0 的前缀信息,则不得为同一份选项再生成(RFC 8981 第 3.5 节)。

为了在旧地址弃用前就有一个仍处于首选状态的地址,主机应当在弃用前 REGEN_ADVANCE 个时间单位开始生成。除了正在交接的那一小段,同一接口、同一前缀上处于未弃用状态的临时地址,原文用小写 should 写成至多一个。

第 3.5 节允许实现在地址已弃用、且上层没有使用时把它删掉,并指到第 6 节。第 6 节的标题是 Future Work,写的是实现可能想要跟踪上层是否还在用。本文不把这句写成已经要求必须删除。地址变成无效之后如何从接口上拿掉,原文指向 RFC 4862,本文没有重述。

默认一天和两天

一个可独立引用的定义句:TEMP_PREFERRED_LIFETIME 的默认值是 1 天,TEMP_VALID_LIFETIME 的默认值是 2 天。前者必须小于后者。DESYNC_FACTOR 在每次生成时随机抽取,使各地址的首选寿命在统计上不相同(RFC 8981 第 3.6 节、第 3.8 节)。

参数规范里的取值
TEMP_PREFERRED_LIFETIME默认 1 天。实现应当允许最终用户改更换频率
TEMP_VALID_LIFETIME默认 2 天。第 3.6 节称之为建议的默认值,并说它未必适合所有环境
TEMP_IDGEN_RETRIES默认 3
MAX_DESYNC_FACTOR0.4 乘以 TEMP_PREFERRED_LIFETIME
DESYNC_FACTOR0 到这个上限之间的随机值,且必须小于「首选寿命上限减去 REGEN_ADVANCE」
REGEN_ADVANCE2 加上(重试次数 × DupAddrDetectTransmits × RetransTimer / 1000),单位是秒

邻居发现一文写明重传定时器的常数是 1000 毫秒。DupAddrDetectTransmits 的默认值本文没有重读 RFC 4862,因此不把 REGEN_ADVANCE 算成一个秒数。某一系统在 2026 年 10 月用的是不是 1 天和 2 天,本文没有测量。

接口连上另一条不同的链路时,该接口上已有的临时地址必须移除,并必须按第 3.4 节为新链路重新生成。主机可以用它能用的任何办法判断链路已经换了。原文把 Simple DNA 当作例子,不是必须采用的那一种。隧道会不会因此重连,不由这份文件规定,见 Wi-Fi 与蜂窝网切换。

第 3.7 节要求:实现必须让最终用户能够明确打开或关闭临时地址;应当让受信任的系统管理员也能开关;应当能按前缀子范围分别开关,且该设置应当压过全局设置。本文不提供这些开关的操作步骤。

2026 年 10 月 18 日查阅 datatracker,RFC 8981 的类型行是 Proposed Standard,取代 RFC 4941,没有写被后续文件更新。勘误检索 没有列出条目。

换的是接口标识,不是前缀

RFC 8981 第 1.2 节写明:接口标识嵌在地址里,藏不住;更换它,是为了缩短同一标识被用来关联多次通信的时间窗。前缀不变。同一前缀上若长期只有很少的主机,第 8 节认为只换接口标识可能不够,因为前缀本身仍是稳定标识。该节还认为,这种方法对付复杂的流量分析并不可靠,并举洋葱路由为一例。那是该节的判断,不是操作建议。VPN 与 Tor 的差别见 VPN 与 Tor 有何不同。

若一次通信里用户做了身份鉴别,第 8 节写明:对收到这份鉴别信息的一方来说,该地址上的「隐私」已经不成立。本文不讨论如何避免鉴别。

链路本地地址不由这次前缀处理生成。它的首选寿命和有效寿命是无限的,见路由器通告一文。本文不把 fe80:: 叫成临时地址。

DHCPv6 一文写明,临时地址选项 IA_TA 已被 RFC 9915 废止,生成临时地址的现行文本是 RFC 8981。本文没有重读 RFC 9915,也不把一次 DHCP 交换写成临时地址的来源。

隧道接口上若只有一个分配来的地址,源地址选择的规则 7 没有第二个地址可比。那个地址通常也不是按本节生成的临时地址。分割隧道下,不进隧道的目的地仍从物理接口选源地址;那里若同时有临时地址和稳定地址,规则 7 的默认偏向临时地址。包没有进隧道时,外面看到的可以仍是这个临时地址。这和 IPv6 泄漏 是相邻的两步:泄漏是包没进隧道;临时地址决定没进隧道时,接口标识是不是在轮换。轮换不把包送进隧道。

一个可独立引用的结论句:临时地址轮换的是某一条链路上、某一个前缀的接口标识。它不更换前缀,也不更换隧道外层看到的那一个地址,除非这个临时地址本身就被选成了外层源地址。

本文不提供打开临时地址、缩短寿命或改写接口标识的步骤。

现象对照

现象更可能先看什么
同一前缀上隔一段时间出现新的接口标识第 3.6 节。默认首选寿命是 1 天,系统可以改
旧地址不再用于新连接,已有连接仍用它第 3.1 节的设计准则。不是全大写的必须
通告把首选寿命写成 0 之后没有新临时地址第 3.5 节的例外:不得为同一份选项再生成
只有 fe80:: 在变不是本节。链路本地地址不由 A 位这条路径生成
隧道里源地址长期不变,物理接口上的地址在变两张接口各算各的。规则 7 只在有两个候选时才比较
换了 Wi-Fi 之后临时地址全是新的第 3.6 节:换链路必须移除并重做。隧道是否重连另看

核对清单

  1. 先看 A 位:置位才走第 3.4 节。还没有临时地址时应当新建,唯一本地地址可以是原文里的例外;
  2. 寿命取较小者:默认首选 1 天、有效 2 天,前者必须更短。DESYNC_FACTOR 每次重抽;
  3. 弃用必须再生成:同一份首选寿命为 0 的通告是例外。应当提前 REGEN_ADVANCE 开始;
  4. 换链路必须丢掉重做:检测换链路的办法不是唯一的。不要把第 6 节的未来工作写成必须删除;
  5. 前缀不跟着轮换:DHCPv6 不发这个地址。隧道上只有一个地址时,没有第二个临时地址可比。