爱收集资源网

深入研究自动分配IPv6地址的Stateless(无状态)与Stateful

网络整理 2022-05-14 06:04

对自动分配IPv6地址的Stateless(无状态)和Stateful(有状态)方法的深入研究

萧慢哥原创,欢迎转载

目录

▪ 一.如何生成链接本地地址

▪ 二.如何生成全局地址

▪ 三. RA 数据包中的 3 个关键标志

▪ 四. 流程图

▪ 五.测试获取IP效果

▪ 六. 应用场景(选择无状态或有状态)

▪ 七.关注内容

▪ 附件。参考文件

一.如何生成链接本地地址

有两种方法可以生成“链接本地地址”

▷ 手动配置

p>

▷ 自动配置

“自动配置”分为

▷ eui64:根据算法从mac地址转换

▷ stable_secret:随着网络环境的变化,其值在固定的网络环境中是固定的

▷ random:随机生成

二.全局地址生成方法

p>

生成“全球单播地址”(或“唯一本地地址”),有两种方式

▷ 手动配置

▷ 自动配置

“自动配置”分为

▷ Stateless:根据RA(Router Advertisement)消息中包含的前缀信息,自动配置IPv6地址。是前缀 +(EUI64 或随机)。 Stateless 也可以称为 SLAAC(Stateless address autoconfiguration)

▷有状态:通过DHCPv6获取IPv6地址

有两种类型的“有状态”

p>

▷ Stateful DHCPv6(Stateful DHCPv6):IPv6地址,其他参数(如DNS)通过DHCPv6获取

▷ Stateless DHCPv6 (Stateless DHCPv6) : IPv6地址仍然是通过路由通告RA生成,其他参数(如DNS)通过DHCPv6获取

为了避免混淆,本说明中stateful和stateless是什么意思:首先请明确,stateful和stateless只用于IPv6地址分配,不包含其他参数。

▷ 有状态:可控和可管理。网络中有IP地址管理器,可以识别客户端根据不同的客户端,分配对应的IPv6地址,客户端和服务器之间需要维护IP地址的租用期和更新。目前使用DHCPv6协议来实现这个效果,IP地址管理器就是DHCPv6 Server。

▷ 无状态:无法控制且难以管理。网络中只有一个网关,没有 IP 地址管理器。所以没有人可以识别客户端,每个客户端根据网关内容发送相同的RA报文,自己配置IPv6地址

三. RA 消息中的 3 个关键标志

RA 消息中有 3 个密钥标志位:

▷Autonomous flag(简称a flag):表示是否配置了无状态IP。一个RA报文中可以有多个前缀,例如2401::/6 4、2402::/64、2403::/64,每个前缀可以独立配置A标志

▪ 开启时(对应位为1):表示客户端应自动生成前缀范围内的IPv6地址(客户端确保该地址通过DAD可用),并配置子网路由入口和网关

▪ 关闭时(对应位为0):表示客户端不应自动生成前缀范围内的IPv6地址,但可以配置子网路由条目和网关

▷Managed flag(简称M flag):表示配置是否有Status IP。 M标志是RA消息的全局参数,一个RA消息只有一个M标志

▪ 开启时(对应位为1):表示有状态进程在无状态进程结束后开始,即告诉客户端可以获取IPv6地址等参数(如作为 DNS 列表)

▪ 关闭时(对应位为0):表示不是通过DHCPv6获取IPv6地址。

▷Other flag(简称O flag):表示是否通过DHCPv6获取IP以外的参数(如DNS列表)。 O标志也是RA消息中的全局参数。 RA 消息只有一个 O 标志。注意:该参数只有在 M 标志关闭时才会被读取。

▪ 开启时(对应位为1):当M标志开启时可用于本地测试的ip地址是,或者当M标志关闭且至少有一个A标志开启时,会通过DHCPv6获取其他参数

▪ 关闭时(对应位为0):当M标志开启时,其他参数仍会通过DHCPv6获取;当M标志也关闭时,其他参数将不会通过DHCPv6获取DHCPv6 参数

四. 流程图

无状态和有状态不是相互排斥的,它们可以同时存在,即一个网卡可以同时出现,并且通过RA产生通过DHCPv6获得的IP和通过DHCPv6获得的IP。从下面作者绘制的流程图就可以知道其中的奥妙。

从图中可以看出,序列为:

1️⃣无状态自动配置“链接本地地址”

2️⃣无状态自动配置“全局地址”(或“唯一本地地址”)

3️⃣ Stateful 自动配置“全局地址”(或“唯一本地地址”)等参数,其中 Stateful DHCPv6 或 Stateless DHCPv6 存在于 Stateful 阶段

注意:有些客户端操作系统或网络管理员处于Stateless阶段,如果没有收到RA消息,就结束了,不会进入Stateful阶段。比如centos的默认逻辑7、Ubuntu 17也是一样,windows server 2012会继续进入Stateful阶段。

五.测试获取IP效果

测试环境:客户端基于CentOS 7+NetworkManager(即系统默认的网络管理方式)进行测试

▪ 网关将发送 RA 消息,包括前缀

▪ DHCPv6 服务器将分配 IP、DNS

测试内容:测试M、O、A标志的所有排列组合

▪ 客户端是否会通过 RA 包配置无状态 IP

▪ 客户端是否会通过 RA 数据包配置前缀子网路由

▪ 客户端是否会通过RA消息配置网关

▪ 客户端是否会通过 DHCPv6 获取有状态 IP

▪ 客户端是否会通过 DHCPv6 获取 DNS

测试结果:

六. 应用场景(选择无状态或有状态)

什么时候用stateless,什么时候用state,关键要看应用场景。核心是IP地址是否需要控制,比如保持IP不变。如果需要控制,则使用有状态;如果不需要控制,则使用无状态。

▷ 服务器域:如果对外提供服务,通常需要使用有状态IP。因为业务IP的突然变化很容易导致业务中断(除非做了服务发现)

▷ 客户端领域:如移动设备、办公PC,只需要连接IPv6互联网,不需要对外提供服务,可以使用无状态IP

七.以下内容

由于篇幅有限可用于本地测试的ip地址是,本文没有贴出实验的详细配置。在“IPv6系列”的后续文章中,将贴出完整的实验信息,包括RA、DHCPv6的配置,以及客户端的配置,敬请期待。

附件。参考文件

http://www.6deploy.eu/tutorials/080-6deploy_ipv6_autoconfiguration_mechs_v0_4.pdf
https://cshihong.github.io/2018/02/01/DHCPv6基础/

ipv6 stateless prefix