IPv6 无状态地址自动配置 (SLAAC) 侦听
了解 SLAAC 侦听
动态地址分配是 IPv6 的一个重要功能,因为 IPv4 的地址空间大幅增加。除了静态寻址之外,IPv6 还为客户端提供了两个动态获取地址的选项:DHCPv6(有状态)和无状态地址自动配置 (SLAAC)。
SLAAC 提供即插即用的 IP 连接,无需手动配置主机,从而简化了 IPv6 地址管理。SLAAC 使 IPv6 客户端能够结合使用本地可用信息和路由器通过邻居发现协议 (NDP) 通告的信息,生成自己的地址。
NDP 消息不安全,这使得 SLAAC 容易受到涉及欺骗(或伪造)链路层地址的攻击。您必须配置 SLAAC 侦听以使用 SLAAC 验证 IPv6 客户端,然后才能允许它们访问网络。
SLAAC 流程
客户端通过为启用 IPv6 的接口生成链路本地地址来开始自动配置。这是通过将播发的链路本地前缀(前 64 位)与接口标识符(后 64 位)组合来实现的。地址按照以下格式生成:[fe80(10 位)+ 0(54 位)] + interface ID (64 位)。
在将链路本地地址分配给其接口之前,客户端会通过运行重复地址检测 (DAD) 来验证地址。DAD 发送发往新地址的邻居请求消息。如果有回复,则地址重复,进程停止。如果地址是唯一的,则会将其分配给接口。
要生成全局地址,客户端会发送路由器请求消息,提示链路上的所有路由器发送路由器通告 (RA) 消息。启用支持 SLAAC 的路由器会发送包含子网前缀的 RA,以供相邻主机使用。客户端将接口标识符附加到子网前缀以形成全局地址,并再次运行 DAD 以确认其唯一性。
SLAAC 侦听
SLAAC 受到 NDP 中发现的相同安全漏洞的影响。您可以将 SLAAC 侦听配置为使用 SLAAC 进行动态地址分配来保护来自 IPv6 客户端的流量。有关 NDP 的详细信息,请参阅 IPv6 邻居发现检查。
SLAAC 侦听类似于 DHCP 侦听,因为它侦听数据包以构建 IP-MAC 地址绑定表。SLAAC 侦听从 SLAAC 过程中交换的 DAD 数据包中提取地址信息,以构建 SLAAC 侦听表。此表中的地址绑定用于检查和验证使用 SLAAC 的 IPv6 客户端发送的 NDP/IP 数据包。
配置 SLAAC 侦听
SLAAC 侦听是基于每个 VLAN 启用的。默认情况下,对所有 VLAN 禁用 SLAAC 侦听。
要启用 SLAAC,请使用以下命令:
配置自动 DAD
如果在客户端禁用了 DAD,或者由于流量拥塞导致 DAD 数据包被丢弃,SLAAC 侦听将代表客户端执行自动 DAD。客户端生成的地址处于暂定状态,直到 DAD 过程完成。
Auto-DAD 以客户端生成的地址为目标发送邻居请求消息,并等待邻居通告作为响应。如果有响应,则地址是重复的,无法分配给客户端。如果没有响应,则确认地址。
默认情况下,自动 DAD 等待响应的时间量为 1 秒,不会重试。您可以配置重试次数和传输间隔的长度。
在 MAC 移动期间,第一个邻居请求数据包将导致 SLAAC 条目从旧端口刷新,第二个数据包将导致为新端口创建 SLAAC 条目。
要配置自动 DAD 参数的重试次数,请使用以下命令:
要配置自动 DAD 传输之间的间隔,请使用以下命令:
对于特定接口:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name auto-dad retrans-interval seconds
对于所有接口:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface all auto-dad retrans-interval seconds
配置链路本地地址过期时间
SLAAC 获知的链路本地地址的默认有效期为 1 天。当地址租约到期时,侦听设备会发送一条 DAD 消息,以客户端地址为目标。如果客户端仍可访问,则续订租约。
要配置过期时间的长度,请使用以下命令:
[edit] user@switch# set forwarding-options access-security slaac-snooping link-local expiry interval seconds
配置允许的 DAD 争用
您可以为接口配置 DAD 争用(邻居请求或邻居通告)消息的最大数量。如果在允许的时间间隔内超过最大争用数,则接口被视为无效,并且不会使用该客户端的任何绑定更新 SLAAC 侦听表。
允许的最大争用数基于每个接口进行配置,以允许属于多个 VLAN 的接口。
若要配置 DAD 争用的最大数量和允许的时间间隔,请使用以下命令:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name max-allowed-contention count integer duration seconds
将接口配置为可信接口以进行 SLAAC 侦听
将接口配置为受信任时,该接口的绑定条目将使用与不受信任接口相同的过程添加到 SLAAC 侦听表中。
当在不受信任端口上已存在的 IP/MAC 条目的可信端口上收到 DAD 请求时,SLAAC 侦听会向不受信任的端口发送单播 DAD,以查看主机是否处于活动状态。
如果主机在不受信任的端口上响应 NA 消息,则会为现有绑定条目续订租用时间。
如果不受信任的端口上没有响应 (NA),则会删除相应的绑定条目。
如果删除了不受信任端口的条目,则不会立即创建受信任端口的绑定。当可信端口开始发送数据流量时,它将发送 NS 消息。此时,SLAAC 侦听会在受信任端口上添加新绑定。
在可信端口上收到的路由器通告数据包将泛洪到该 VLAN 中的所有端口,而不考虑接收端口的 SLAAC 条目。
DAD 争用的最大数量不适用于受信任的接口。
要将接口配置为受信任的 SLAAC 侦听接口,请使用以下命令:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name mark-interface trusted
配置持久 SLAAC 侦听绑定
DHCP 侦听数据库文件中的 IP-MAC 绑定不是永久性的。如果交换机重新启动,绑定将丢失。可以通过为 SLAAC 侦听数据库文件的存储位置指定本地路径名或远程 URL 来配置持久绑定。
若要为 SLAAC 侦听配置持久绑定,请使用以下命令:
[edit] user@switch# set system processes slaac-snooping persistent-file (local-pathname | remote-url) write-interval seconds