SLAAC协议

🧩 一、SLAAC 是什么?

SLAAC(Stateless Address Autoconfiguration) 是一种让主机自动获取 IPv6 地址、前缀长度、默认网关的方法。
它依赖 ICMPv6 的 Router Solicitation(RS)/Router Advertisement(RA) 报文 完成配置。

简单说:
主机上电后,不用手动设置,也不用 DHCPv6,就能通过本地链路和路由器交互,自己生成地址。


🌐 二、SLAAC 运行机制

阶段报文行为说明
1. 链路本地地址生成无报文主机先生成一个 fe80::/64 地址(Link-Local)。用于后续邻居发现。
2. DAD 冲突检测NS → NA检查该地址是否已被占用(DAD)。若无人回应,地址生效。
3. 发送 Router Solicitation (RS)RS主机主动询问“有没有路由器?”源地址为 link-local,目标为 ff02::2(所有路由器组播)。
4. 接收 Router Advertisement (RA)RA路由器广播网络前缀、MTU、DNS 等信息。通常目标为 ff02::1(所有节点)。
5. 生成全局单播地址无报文主机用 RA 提供的前缀拼接自己的接口标识(EUI-64 或随机数)形成地址。示例:2001:db8:abcd:1::1234
6. 再次进行 DAD 检查NS → NA确认新地址唯一。若无冲突,开始使用。

🧠 三、RA 报文中的关键字段

SLAAC 的行为主要受 Router Advertisement (RA) 报文的标志位控制:

字段名称含义
M (Managed)Managed Address Configuration若为 1 → 表示需使用 DHCPv6(有状态) 分配地址。
O (Other)Other Configuration若为 1 → 表示使用 DHCPv6(无状态) 获取额外信息(如 DNS)。
A (Autonomous)Autonomous Address Configuration在 Prefix Information Option 中:表示该前缀可用于 SLAAC 自动生成地址。
L (On-link)On-link Prefix表示该前缀内的地址可直接通信(不需通过路由)。

常见组合:

  • M=0, O=0 → 纯 SLAAC
  • M=0, O=1 → SLAAC + DHCPv6(仅参数)
  • M=1 → DHCPv6(有状态)为主

🔢 四、地址生成算法(简述)

1. 接口标识生成方式

方法说明示例
EUI-64基于网卡 MAC 生成,稳定但可能泄漏隐私。MAC=aa:bb:cc:dd:ee:ffInterface ID= a8bb:ccff:fedd:eeff
随机地址(Privacy Extension)RFC 4941:定期更换后64位随机数,增强隐私。每隔一段时间换一个地址。
Stable-Secret 地址RFC 7217:基于接口 + 密钥 + 前缀哈希生成,稳定又防跟踪。各操作系统默认方法(如 Windows、Linux 新版)。

🧩 五、SLAAC 与 DHCPv6 的关系

模式M 位O 位地址来源参数来源说明
纯 SLAAC00由 RA 提供前缀生成仅靠 RA
SLAAC + DHCPv6 无状态01SLAAC 生成DHCPv6 获取 DNS 等信息常见家庭网络
DHCPv6 有状态10/1DHCPv6 分配DHCPv6企业网络常见

📦 六、SLAAC 的优缺点

优点缺点
不依赖 DHCP 服务器,自动化程度高不易集中管理
节省网络资源难以记录设备地址变化
配置简单、快速DNS 参数无法单独下发(需配合 DHCPv6)