🧩 一、IPv6 地址的三大类型(按功能划分)

Unicast Multicast Anycast

类型名称特点举例
单播 (Unicast)一对一通信表示网络中唯一的接口2001:db8::1, fe80::1
组播 (Multicast)一对多通信表示一组节点ff02::1, ff02::2
任播 (Anycast)一对最近通信多个节点共用一个地址,路由选择最近者通常分配给多个服务器的相同接口

Unicast

🧭 二、单播地址的常见类型

IPv6 的单播地址主要分为以下几类👇

地址类型前缀用途特点
全局单播 (Global Unicast)2000::/3(即 2000–3fff)公网可路由地址(类似 IPv4 的公网 IP)唯一且可跨 Internet 路由
链路本地地址 (Link-Local)fe80::/10同一链路内通信(邻居发现、RA/RS)自动生成,不能跨网段路由
唯一本地地址 (Unique Local Address, ULA)fc00::/7(常用 fdxx::/8内网使用(类似 IPv4 私有地址)不可公网路由,可在本地或 VPN 使用
环回地址 (Loopback)::1/128本机测试用(类似 IPv4 的 127.0.0.1)仅在本地主机使用
未指定地址 (Unspecified)::/128表示“无地址”,用于启动阶段(如 DAD)不能作为通信源/目的
链路本地前缀(本地链路段)fe80::/64(通常)每个接口自动配置通常基于 MAC/EUI-64 或随机生成
IPv4 映射地址 (IPv4-mapped IPv6)::ffff:192.168.1.1IPv6-only 环境中表示 IPv4 地址用于 IPv4/IPv6 互操作
IPv4 兼容地址 (IPv4-compatible)已废弃::192.168.1.1旧标准,现不再使用
Link-local-Address

Link-Local 和 ULA 不冲突,因为它们的用途完全不同、作用范围不同、甚至通信逻辑也不同。

Link-local 是“链路通信地址”,ULA 是“站点通信地址”。

  • Link-local:设备在一个网段内通信、发现邻居、找路由器。
  • ULA:设备在**整个局域网(可跨多个网段)**内部通信。 Link-local地址是自生成的,只要设备启动了IPv6就会有link-local地址,然后才能获取其它地址。

不一定固定,但通常是稳定的。

  • 它是根据网卡接口标识(Interface Identifier, IID) 自动生成的。
  • IID 通常取决于网卡的 MAC 地址,或者系统为隐私生成的随机值。 因此:
  • 如果设备的 MAC 地址不变、算法一致 → Link-local 地址基本不会变。
  • 如果启用了 隐私扩展(Privacy Extension) 或系统策略改变 IID 生成方式 → 地址可能不同。
| 10 bits | 54 bits | 64 bits |
| Prefix  | 000...0  | Interface Identifier |
  • 前缀固定为 fe80::/10
  • 中间 54 位保留为 0。
  • 后 64 位是 接口标识符 (IID)

IID(接口标识符)的生成算法

IPv6 支持多种 IID 生成方式,不同系统和安全要求可能不同。

方式描述稳定性特点
EUI-64(传统)从 MAC 地址转换✅ 稳定可推算出设备的真实 MAC(隐私差)
Stable Secret-based(RFC 7217)从随机密钥和接口信息生成✅ 稳定隐私好,现代系统使用
随机 IID(Privacy Extension, RFC 4941)随机生成,周期更换❌ 不稳定用于临时全局地址,几乎不用在 link-local 上

EUI-64 生成算法

假设网卡 MAC 地址是:

00:1A:2B:3C:4D:5E

EUI-64 生成 IID 的步骤如下:

步骤操作结果
1️⃣把 MAC 地址分成两半00:1A:2B 和 3C:4D:5E
2️⃣插入固定的 FF:FE 中间00:1A:2B:FF:FE:3C:4D:5E
3️⃣翻转第 7 位(U/L 位)改为 02:1A:2B:FF:FE:3C:4D:5E(表示本地管理)
4️⃣拼接到 fe80::/64 前缀fe80::021a:2bff:fe3c:4d5e
✅ 得到最终 Link-local 地址:
fe80::021a:2bff:fe3c:4d5e

Stable Secret-based RFC 7217(现代系统默认)

现代 Linux、Windows、macOS 为了防止通过地址推测设备 MAC,通常使用 “Stable Privacy Address” 机制(RFC 7217)。 IID 计算公式:

IID = F(Prefix, Network_Interface, DAD_Counter, Secret_Key)

其中:

  • Prefix = fe80::/64(或全局前缀)
  • Network_Interface = 接口名(如 eth0)
  • DAD_Counter = 检测重试次数
  • Secret_Key = 随机生成、系统保存在内核里 🔹 结果:
    同一设备、同一接口、同一前缀 → IID 固定。
    但不同机器、不同接口 → IID 不同(无法反推出 MAC)。

🌐 三、组播/多播地址(Multicast)

Multicast

IPv6 完全取消了广播,所有广播功能都由组播取代
组播地址总是以 ff00::/8 开头,第二个字节定义了作用范围(Scope)。

范围地址示例含义
ff02::1所有节点(All Nodes)当前链路上所有设备
ff02::2所有路由器(All Routers)当前链路上所有路由器
ff05::2区域范围的所有路由器用于更大范围的管理
ff02::1:ffXX:XXXXSolicited-Node 组播地址NDP(邻居发现)使用,用于 IPv6→MAC 解析

组播地址结构一般是:

| 8bit | 4bit  | 4bit  | 112bit |
|  ff  | flags | scope | group ID |

也就是:

ffXY::Z...

其中:

  • XFlags(标志)
  • YScope(作用范围)
  • 后面的部分是 Group ID(组的标识符)

Flags(标志位)字段 —— 控制“性质”

Flags 是 4 位(二进制),定义了组播地址的特征。
一般写成 4 bit 二进制 abcd,每一位都有特定含义:

名称含义取值说明
a(bit 0)R-Flag(Rendezvous Point)是否为固定 RP(多播路由相关)一般为 0
b(bit 1)P-Flag(Prefix-based)是否根据前缀自动派生一般为 0
c(bit 2)T-Flag(Transient)是否临时(Transient)组播1 = 临时,0 = 永久(标准分配)
d(bit 3)Reserved保留位一般为 0

👉 实际网络中常见的情况:

  • ff02Flags = 0,表示永久的(well-known)组播地址。
  • ff32Flags = 3(临时 + link-local),极少见,用于实验性多播。

Scope(作用范围)字段 —— 控制“传播范围”

Scope 是 4 位十六进制值,定义该组播包能传播的最大范围

Scope 值范围说明
1Interface-local仅限本接口(测试用途)
2Link-local同一链路(最常见),NDP 都用这个
3Subnet-local子网级别(很少用)
4Admin-local管理员限定范围
5Site-local整个站点(多个链路)
8Organization-local整个机构(例如公司网)
EGlobal全球范围(几乎不用)
👉 IPv6 NDP 的所有组播地址都用 Scope = 2(link-local)
比如:
ff02::1     所有节点(链路内)
ff02::2     所有路由器(链路内)
ff02::1:ffxx:xxxx  solicited-node(链路内)

Group ID(组编号)

Group ID 是 最后 112 位,用于区分不同的多播组。
它就像“组播频道号”。

常见标准分配的 Group ID:

地址Group ID名称
ff02::10x1所有节点组 (All Nodes)
ff02::20x2所有路由器组 (All Routers)
ff02::1:ffXX:XXXX0x1ffXX:XXXXsolicited-node 组
ff05::20x2所有站点路由器
ff02::1:20x1:2所有 DHCP 服务器

常见的标准组播地址(IPv6 内置)

地址名称用途
ff02::1所有节点路由器 RA 广播通告
ff02::2所有路由器主机 RS 请求路由器
ff02::1:ffxx:xxxxSolicited-nodeNDP 地址解析
ff02::1:2所有 DHCPv6 服务器DHCPv6 请求
ff02::5 / ff02::6OSPFv3路由协议
ff02::9RIPng路由更新
ff02::fbmDNS本地设备发现

Anycast

🧮 四、任播地址(Anycast)

项目内容
含义多个接口共享同一地址,数据包发给最近的一个
用途内容分发、DNS 负载均衡(如多个 DNS 服务器共用一个地址)
配置方式从单播地址池中手动指定为 Anycast,无特殊前缀
示例多个路由器接口都配置 2001:db8::1,客户端请求会自动发往最近的那台

🧠 五、作用范围(Scope)总结

IPv6 地址天然带“范围”概念:

范围说明可路由性
Interface-local本机内(如 ::1
Link-local本地链路(如 fe80::/10
Site-local已废弃(原为内网使用)
Unique-local (fd00::/8)内网、VPN否(但可通过隧道或 NAT66)
Global (2000::/3)互联网✅ 可路由

🧾 六、速查表汇总

类型前缀示例可公网路由典型用途
未指定地址::/128::初始化、DAD
环回地址::1/128::1本地测试
链路本地fe80::/10fe80::1NDP、RS/RA
唯一本地 (ULA)fd00::/8fd12:3456::1内网通信
全局单播2000::/32001:db8::1公网通信
组播ff00::/8ff02::1, ff02::2局域/全网路由发现、ND、服务
任播(无固定前缀)多节点共享 2001:db8::1最近节点选路