IPv6 地址自动分配方式的Stateless(无状态)与Stateful(有状态)

一. Link-Local Address 的生成方式

生成 “链路本地地址”,有 2 种方式

▷ 手动配置

▷ 自动配置

其中 “自动配置” 根据算法,又分为

eui64:根据 mac 地址换算而来

stable_secret:跟随网络环境的变化而变化,处于固定网络环境时其值将固定

random:随机生成

二. Global Address 的生成方式

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

手动配置

自动配置

其中 “自动配置” 根据获取方式,又分为

无状态(Stateless)

根据路由通告报文 RA(Router Advertisement)包含的 prefix 前缀信息自动配置 IPv6 地址,组成方式是 Prefix + (EUI64 or 随机)。Stateless 也称为 SLAAC(Stateless address autoconfiguration)

有状态(Stateful)

通过 DHCPv6 方式获得 IPv6 地址

其中 “有状态” 又分为 2 种

有状态 DHCPv6(Stateful DHCPv6)

IPv6 地址、其他参数(如 DNS)均通过 DHCPv6 获取

无状态 DHCPv6(Stateless DHCPv6)

IPv6 地址依然通过路由通告 RA 方式生成,其他参数(如 DNS)通过 DHCPv6 获取

为了避免混淆,在此解释下有状态、无状态到底是什么。

首先,请明确一点,有状态、无状态仅针对于 IPv6 地址分配方式,并不包含其他参数.

有状态:可控、可管理

在网络中存在一个 IP 地址管理者,它能够识别客户端,根据不同的客户端,分配对应的 IPv6 地址,客户端与服务端之间需要维护 IP 地址的租期及续约。目前实现这种效果的,就是 DHCPv6 协议,IP 地址管理者就是 DHCPv6 Server

无状态:不可控、难管理

在网络中只有网关,没有 IP 地址管理者。因此无人去识别客户端,每个客户端根据网关发送的相同的 RA 报文内容,自行配置 IPv6 地址

三. RA 报文中 3 个关键的 Flag

在这里插入图片描述
RA 报文中存在 3 个关键的 flag bit:

flag type状态置位(bit)含义
Autonomous flag(A flag)
表示是否配置无状态 IP。
在一个 RA 报文中,可存在多个 prefix,比如 2401::/64、2402::/64、2403::/64,每个 prefix 都可以独立配置 A flag。
on1表示客户端应当在该 prefix 范围内自动生成 IPv6 地址(客户端通过 DAD 自行保证地址可用),并配置子网路由条目、网关。
off0表示客户端不应当在该 prefix 范围内自动生成 IPv6 地址,但是可以配置子网路由条目、网关。
Managed flag(M flag)
表示是否配置有状态 IP。
M flag 是 RA 报文的全局参数,一个 RA 报文只有一个 M flag。
on1表示在 stateless 流程结束后开始 stateful 流程,也就是告诉客户端可以通过 DHCPv6 来获得 IPv6 地址和其他参数(如 DNS 列表)
off0表示不通过 DHCPv6 来获得 IPv6 地址。
Other flag( O flag)
表示是否通过 DHCPv6 获得除 IP 以外的其他参数(如 DNS 列表)。
O flag 也是 RA 报文中的全局参数,一个 RA 报文只有一个 O flag。
注意:仅当 M flag 为 off 时,该参数才会被读取。
on1当 M flag 为 on,或者 M flag 为 off 且至少有一个 A flag 为 on 时,将通过 DHCPv6 获得其他参数。
off0当 M flag 为 on 时,依然将通过 DHCPv6 获得其他参数;当 M flag 也为 off 时,将不通过 DHCPv6 获得其他参数。

四. 流程示意图

无状态和有状态并不是相互对立的,可以同时存在,也就是一张网卡上可以同时出现通过 RA 生成的 IP 以及通过 DHCPv6 获得的 IP。通过下面这张笔者绘制的流程图可知晓其中奥秘。

在这里插入图片描述

从图中可以看到,顺序为:

1️⃣ Stateless 自动配置“链路本地地址”

2️⃣ Stateless 自动配置“全球地址”(或“唯一本地地址”)

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

注意:
部分客户端操作系统或网络管理器当 Stateless 阶段没有收到 RA 报文后,就到此结束,不会走 Stateful 阶段,比如 CentOS 7、Ubuntu 17 的默认逻辑都是这样,而 windows server 2012 就会继续走 Stateful 阶段。

五. 测试获得 IP 效果

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

▪ 网关会发送 RA 报文,包含一个 prefix

▪ DHCPv6 Server 会分配 IP、DNS

测试内容:测试 M、O、A flag 在所有排列组合的情况下

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

▪ 客户端是否会通过 RA 报文配置 prefix 子网路由

▪ 客户端是否会通过 RA 报文配置 gateway

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

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

测试结果:
在这里插入图片描述

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

何时采用无状态、何时采用有状态,关键看应用场景。核心在于是否需要控制IP地址,比如保持IP不变,如果需要控制,就采用有状态;如果无需控制,就采用无状态。

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

▷ 客户端领域:如移动设备、办公室内PC机,只需要上IPv6互联网,并不需要对外提供服务,可以采用无状态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基础/


via:IPv6系列-彻底弄明白有状态与无状态配置IPv6地址-有状态和无状态ipv6 作者:小慢哥本人
2019-10-09 08:29:30

https://www.51cto.com/article/603898.html

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值