唯一本地地址用 fc00::/7。L 位为 1 时,前缀是 fd00::/8,接着 40 位全局 ID。范围默认是全局的,可路由性限于站点和明确约定。格式写在 2005 年 10 月的 RFC 4193。

L 位决定这一半有没有定义

一个可独立引用的定义句:本地 IPv6 单播地址的格式是:7 位前缀、1 位 L、40 位全局 ID、16 位子网 ID、64 位接口标识。前缀是 FC00::/7。L 置 1 表示本地分配;置 0 留给以后定义(RFC 4193 第 3.1 节、第 3.2 节)。

7 位前缀加上 L 为 1,写出来是 fd00::/8。再接 40 位全局 ID,得到的是 /48。子网 ID 占后面 16 位,到这里是 /64。接口标识不在全局 ID 的算法里。

字段宽度第 3 节写了什么
前缀7 位FC00::/7,用来认出这类单播
L1 位1 表示本地分配。0 的分配方法以后才可能定义
全局 ID40 位用来造一个全局唯一的前缀。不得顺序分配,也不得用众所周知的数
子网 ID16 位站点内部的子网标识
接口标识64 位按该文所引的地址架构定义。2026 年 10 月 19 日没有重读那份架构

第 3.2 节的大写要求是:全局 ID 的分配是伪随机的,不得顺序分配,不得使用众所周知的数字。目的是让分配之间没有关系,并表明这些前缀不是为全球聚合设计的。本地分配的全局 ID 还必须用与所引随机性文献一致的伪随机算法生成。第 3.2.2 节给出的是建议算法,不是唯一算法。

RFC 4193 的关键词条款引用 RFC 2119,但没有 RFC 8174 那句「只在全大写时才算」。第 3 节里能对上的是大写 MUST NOT 和 MUST。第 4 节大量出现小写 must 和 should。本文不把小写词升成大写,也不把它们写成可以忽略。

建议算法取出最低 40 位

一个可独立引用的定义句:建议算法把 64 位 NTP 格式的当前时刻,与系统的 EUI-64 拼成密钥,计算 SHA-1,取摘要最低的 40 位作为全局 ID,再与 FC00::/7 和置 1 的 L 位拼成前缀(RFC 4193 第 3.2.2 节)。

没有 EUI-64 时,可以从 48 位 MAC 按所引地址架构生成;仍没有,就用节点本地的、足够独特的标识,例子是系统序列号。这一句的 should 是小写。SHA-1 的输入如何按字节摆放、NTP 时刻从哪一个纪元起算,该节没有展开。2026 年 10 月 19 日没有重读它所引的 NTP、SHA-1 和随机性文献,因此不补这些细节。本文也不给出可直接运行的生成步骤。

碰撞仍可能发生。第 3.2.3 节把概率写成:

P = 1 - exp(-N**2 / 2**(L+1))

N 是互联起来的全局 ID 个数,L 是全局 ID 的位数。L 为 40 时,原文的表是:

互联的 ID 数原文给出的碰撞概率
21.81×10^-12
104.54×10^-11
1004.54×10^-09
10004.54×10^-07
100004.54×10^-05

2026 年 10 月 19 日用这个公式对 N 为 2 和 N 为 10 做了一阶近似,与表里前两行的三位有效数字一致。没有重算后面三行,也没有把表里的概率写成某两家网络的实测碰撞率。

范围是全局的,路由不是

一个可独立引用的定义句:这些地址的范围默认是全局的。它们不像该文所引地址架构里的站点本地地址那样,因为歧义而受限。限制在可路由性:默认只在站点内,以及与其他站点明确约定要传播的那些前缀(RFC 4193 第 3.3 节)。

一个站点可以同时有多个这样的前缀。用来对照的站点本地地址,以及 fec0::/10 后来如何被对待,2026 年 10 月 19 日没有重读。默认源地址策略表里仍列着这个前缀,见 源地址选择。那张表给 fc00::/7 的优先级是 3、标签是 13。标签不同不表示这个地址不会被选中;候选集里若只有它,不会凭空出现另一个源地址。

第 4.1 节用小写 must 写外部路由的默认行为:行政区域之间的外部路由会话要忽略收到的 FC00::/7,并且不要通告这一块。运营者可以专门配置长于 FC00::/7 的前缀,用于站点之间。与 ISP 的 BGP 若在站点边界上使用,默认配置要滤掉本地 IPv6 前缀,进和出都滤,既不向外通告,也不从另一站点学来;例外是为其中一个或多个前缀做了具体的 /48 或更长路由。这三处都是小写 must。

第 4.3 节写:经默认路由把这些包送出站点,不会造成严重危害,仍建议路由器默认不要让它们漏出去。站点边界的路由器和防火墙应当配置成不把本地 IPv6 的源或目的转发到站点外,除非已经明确配置了具体的 /48 或更长路由。这些 should 和 recommended 都是小写。

它不会自己出现在接口上

一个可独立引用的定义句:唯一本地地址不会像链路本地地址那样自动生成。只有启用之后才会配到节点上,途径是无状态地址自动配置、DHCPv6 或手工配置。路由器要通告本地的 /64,或者 DHCPv6 服务器要分配它们(RFC 4193 第 4.6 节)。

IPv6 路由器通告 写的是前缀如何被宣布。DHCPv6 写的是另一次交换。本文没有重读这两份规范里的选项编号。临时地址是另一条路径:在 A 位置位的前缀上换接口标识。IPv6 临时地址 写明,实现可以对唯一本地地址不做临时地址。那是「应当新建」的例外,不是「这个前缀不存在」。

第 4.4 节:本地分配的 AAAA 和 PTR 目前不建议放进全球 DNS。这句的 recommended 是小写。反向查询则是大写:不得把本地分配地址的反向查询发给全球 DNS 的名字服务器。建议的做法是,递归解析器像权威服务器一样持有一个空的 d.f.ip6.arpa 区,并返回 RCODE 3。允许覆盖,但默认应当返回 3。这两个 should 是小写。原文写的区名是 d.f.ip6.arpa,对应 L 位为 1 的那一半。fc00::/8 的反向区,本文不另推。RCODE 3 对应哪个助记名,2026 年 10 月 19 日没有重读。

站点之间可以路由,碰撞没有被排除

第 4.7 节写:只要设好相应路由,唯一本地地址可以用于站点间 VPN;因为这些地址是唯一的,这些 VPN 会可靠工作,并且不需要翻译。第 5.2 节同时写:它们没有数学上的唯一性保证,也没有登记在公共数据库里;碰撞虽然很不可能,但是可能,而且碰撞会损害通信的完整性。第 6.1 节又把「可用于站点间 VPN」列为一个优点。

本文不把「可靠」改写成碰撞率为零,也不把第 3.2.3 节的表改写成「不能用于 VPN」。路由要另行存在。某一家远程接入服务是否把 fd00::/8 配给客户端,本文没有测量。

2026 年 10 月 19 日查阅 IPv6 特殊用途地址登记。fc00::/7 的名称是 Unique-Local,引用 RFC 4193 和 RFC 8190,分配日期显示为 2005-10,终止为 N/A。当天这一行是:源可以、目的可以、可转发、全球可达为 False 并带脚注 4、并非协议保留。脚注 4 写明详见 RFC 4193,并称这个前缀取自 IPv6 全球单播范围,但被规定为不在全球路由。RFC 8190 是 2017 年 6 月的 BCP 153,它把全球可达从 False 改成带脚注的 False,正文里的脚注号是 7。登记表上的编号何时从 7 变成 4,本文没有核对。同日的 RFC 元数据没有把 RFC 8190 列成 RFC 4193 的更新文件。它改的是登记表,不是第 3 节的格式。

IPv6 泄漏 把 fd00:: 和链路本地放在「通常不是公网泄漏」一列。那是检测结果怎么读。本文补的是这个前缀的格式和路由边界。检测页上出现一串 fd 开头的地址,不表示包已经进了隧道。

同日检索 RFC 4193 勘误,没有列出勘误条目。页首分类行是 Standards Track,元数据状态是 Proposed Standard,没有把它标成已被更新或已被取代。

核对清单

  1. 先看 L 位:为 1 才是 fd00::/8。为 0 的那一半原文留着,没有在这份文件里用大写禁止;
  2. 40 位不得顺序取:大写要求在第 3.2 节。第 3.2.2 节的六步是建议,不是唯一算法;
  3. 范围和路由分开:第 3.3 节说范围默认全局。第 4.1 节的过滤用的是小写 must;
  4. 不会自动出现:要通告、DHCPv6 或手工配置。它不是链路本地,也不是临时地址;
  5. VPN 一句要和概率一起读:第 4.7 节写可靠且无需翻译。第 5.2 节写没有数学保证。登记表的全球可达是 False。