boxmoe_header_banner_img

⋅無⋅限⋅進⋅步⋅

加载中

文章导读

8.1SLAAC


avatar
yuhui 2025年10月22日 24

8.1 SLAAC

SLAAC概述

并非每个网络都有DHCPv6服务器,但每个IPv6网络中的设备都需要GUA。SLAAC可以让主机在没有DHCPv6服务器提供服务的情况下创建自己的唯一IPv6全局单播地址。


SLAAC是一种无状态的服务。这意味没有服务器会维护网络地址信息,了解哪些IPv6地址正在使用,以及哪些IPv6地址可用。


SLAAC会使用ICMPv6 RA消息来提供通常原本由DHCP服务器提供的地址信息和其他配置信息。主机会根据RA中发送的信息来配置自己的IPv6地址。RA消息由IPv6路由器每200秒/次


主机还可以发送路由器请求(RS)消息,请求启用了IPv6的路由器向主机发送RA


SLAAC可以单独部署,也可以和DHCPv6一起部署


启用SLAAC

参阅以下拓扑:

1741671780900-5ec11c86-d105-4420-9c1f-6e5d34bc351f.png

假设R1的G0/0/1端口按照指示配置了IPv6 GUA ,同时配置了链接本地地址

使用 show ipv6 interface命令输出当前g0/0/1接口当前配置

1741671781031-db516bd1-ed28-43be-b336-356708eff211.png

虽然路由接口包含IPv6的配置,但这个接口还没有经过启用,让它可以用SLAAC向主机发送包含地址配置信息的RA。

若要发送RA消息,路由器必须使用 ipv6 unicast-routing 全局配置命令加入IPv6全路由器组播组,如输出信息所示。

1741671780934-32d350dc-39a4-4424-bbb7-46e6aaed6e20.png

验证SLAAC是否启用:

show ipv6 interface


仅使用SLAAC的方法:

如果配置 ipv6 unicast-routing命令,那么设备默认会启用仅SLAAC的方法。所有配置了IPv6 GUA的已启用的以太网接口将要发送RA消息,消息中的A标记会置位1,而O标记和M标记会置位0。

A=1标记建议客户端使用RA中通告的前缀来创建自己的IPv6 GUA 。客户端可以使用扩展唯一标识符的方法(EUI-64)创建自己的接口ID,也可以随机生成。

O=0和M=0 这两个标记要求客户端仅使用RA消息中的消息。这个RA消息包含前缀、前缀长度、DNS服务器。MTU和默认网关信息。DHCPv6服务器不会在提供其他可用信息。

1741671780919-27750184-a882-4eeb-a478-4a23cf1df66a.png

在此示例中 PC1经配置会自动获取自己的IPv6地址信息。由于A、O、M标记的设置,PC1只会使用R1发送的RA消息中所包含的信息来执行SLAAC的方法。

默认网关地址是RA消息的源IPv6 GUA。即R1的LLA。默认网关地址只能从RA消息中自动获取。DHCPv6服务器不会提供这种信息。

1741671780942-6447534c-c3f0-4742-b4dd-8856f180e265.png

ICMPv6 RS消息

路由器每200秒回发送一次RA消息。如果从主机那里接收到RS消息,那么它也会发送一条RA消息。

当客户端配置为自动获取地址信息时,它就会向ff02::2的IPv6全路由组播地址发送一条RS消息。

1741671781125-8bf1e036-e95a-40fc-a4a5-997efcfaa83f.png

PC1刚刚启动,没有接受到RA消息,所以它向全路由组播地址ff02::2发送了一条RS消息请求RA。

R1也加入了IPv6全路由组播组,因此接受到了这条RS消息,它生成一个包含本地网络前缀和前缀长度的RA。然后它会像所有节点组播IPv6地址ff02::1发送RA消息。PC1则会使用其中的信息来创建唯一的IPv6 GUA

生成接口ID的主机进程

使用SLAAC,主机会从路由RA获取自己64位子网信息。它必须使用以下两种方法生成剩余的64位接口标识符(ID)

  • 随机生成-这个64位接口ID可以由客户端操作系统随机生成,这是windows10主机目前使用的方法。
  • EUI-64-主机使用48位MAC地址创建接口ID,并在地址中间插入fffe这个十六进制值。出于隐私,某些操作系统默认会使用随机生成,因为EUI-64会使用主机的以太网MAC地址来创建接口ID。

注意: Windows、Linux 和 Mac 操作系统允许用户修改生成的接口ID,以随机生成或使用 EUI-64。


在下面的 ipconfig 输出信息中,Windows 10 PC1 主机使用了 R1 RA 中包含的 IPv6 子网信息,并随机生成了输出中阴影部分所示的 64 位接口 ID。

1741671781125-313eef52-a67c-4347-ae57-4a5de7e57f76.png

重复地址检测(DAD)

此过程让主机创建IPv6地址,但不保证其唯一性。

因为SLAAC是无状态过程,所以主机可用首先验证这个新创建的IPv6地址是否唯一,在确定唯一时,才能使用。主机会使用重复地址检测(DAD)进程来确保这个IPv6 GUA是唯一的。

DAD是使用ICMPv6实现的,执行DAD,主机会使用特殊构造的组播地址发送一条ICMPv6邻居请求信息,这个地址叫请求节点组播地址。这个地址会复制主机的最后24位IPv6地址。

如果没有设备回应NA消息,那么这个地址就是唯一的,可以由此设备使用,如果主机收到了NA,那么此地址不唯一,同时操作系统也必须确定一个新的接口 ID

互联网工程任务组(IETF)建议对所以有IPv6单播地址使用DAD,无论此地址是仅SLAAC方式创建的、有状态的DHCPv6获取的、手动配置的。DAD并非强制执行的,因为64位的接口ID提供了1800京(1京为10的16次方)种可能性,并且存在重复的可能性是远程的。但大多数操作系统都会对所有IPv6单播地址执行DAD。


更新: 2025-03-11 13:43:06
原文: https://www.yuque.com/yuhui.net/network/nm4is99h4mvp71vh



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码