IPv6系列-彻底弄明白有状态与无状态配置IPv6地址

在今天的数字世界中,互联网连接无处不在,而IPv6作为下一代互联网协议,已经逐渐取代了IPv4,以满足不断增长的互联网设备需求。IPv6不仅为我们带来更多的IP地址,还引入了新的方式来分配这些地址。本教程将深入研究IPv6地址分配中的两种主要方式:Stateless(无状态)和Stateful(有状态),以及与之相关的RA报文和DHCPv6协议。

IPv6地址分配方式详解

IPv6地址分配涉及两个主要方面:Link-Local地址和Global地址。Link-Local地址用于在同一链路上的设备间通信,而Global地址用于互联网上的全球通信。让我们逐一了解这两种地址生成方式:

一. Link-Local地址的生成方式

生成"链路本地地址"有两种方式:

  • 手动配置
  • 自动配置

其中,自动配置又可以分为以下三种算法:

  • eui64:根据MAC地址计算生成
  • stable_secret:随网络环境的变化而变化,但在固定网络环境下保持不变
  • random:随机生成

这些方式允许设备在同一链路上自动配置Link-Local地址,无需手动干预。

二. Global地址的生成方式

生成"全球单播地址"(或者"唯一本地地址")也有两种方式:

  • 手动配置
  • 自动配置

自动配置又根据获取方式分为两种:

  • 无状态(Stateless):根据路由通告报文RA(Router Advertisement)中包含的prefix前缀信息自动配置IPv6地址,通常采用Prefix + (EUI64或随机)的方式。无状态配置也可以称为SLAAC(Stateless Address Autoconfiguration)。

  • 有状态(Stateful):通过DHCPv6协议获得IPv6地址。有状态配置又分为两种:

    • 有状态DHCPv6(Stateful DHCPv6):IPv6地址和其他参数(如DNS)均通过DHCPv6获取。
    • 无状态DHCPv6(Stateless DHCPv6):IPv6地址仍然通过RA报文方式生成,但其他参数(如DNS)通过DHCPv6获取。

要注意,有状态和无状态仅针对IPv6地址分配方式,不包括其他参数。有状态分配是可控、可管理的,通常由网络中的IP地址管理者(DHCPv6 Server)进行管理,而无状态分配则不可控,每个设备根据RA报文自行配置IPv6地址。

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

RA报文中包含三个关键的Flag位:

  • Autonomous flag(A flag):表示是否配置无状态IP。在RA报文中,每个prefix可以独立配置A flag。

    • 当A flag为on(对应bit位为1)时,客户端会自动生成IPv6地址,并配置子网路由条目和网关。
    • 当A flag为off(对应bit位为0)时,客户端不会生成IPv6地址,但仍然可以配置子网路由和网关。
  • Managed flag(M flag):表示是否配置有状态IP。M flag是RA报文的全局参数,一个RA报文只有一个M flag。

    • 当M flag为on(对应bit位为1)时,客户端可以通过DHCPv6获得IPv6地址和其他参数(如DNS列表)。
    • 当M flag为off(对应bit位为0)时,客户端不会通过DHCPv6获得IPv6地址。
  • Other flag(O flag):表示是否通过DHCPv6获得除IP以外的其他参数(如DNS列表)。O flag也是RA报文中的全局参数,一个RA报文只有一个O flag。注意:仅当M flag为off时,该参数才会被读取。

    • 当O flag为on(对应bit位为1)时,客户端在M flag为on或至少有一个A flag为on的情况下,将通过DHCPv6获得其他参数。
    • 当O flag为off(对应bit位为0)时,客户端不会通过DHCPv6获得其他参数。

四. 流程示意图

无状态和有状态IPv6地址分配方式并不相互对立,它们可以同时存在于同一网络设备上。下面的流程示意图展示了这一过程:

  1. Stateless自动配置链路本地地址
  2. Stateless自动配置全球地址(或唯一本地地址)
  3. Stateful自动配置全球地址(或唯一本地地址)和其他参数,包括Stateful DHCPv6或Stateless DHCPv6。

需要注意的是,一些客户端操作系统或网络管理器在Stateless阶段未收到RA报文时可能结束,不会继续Stateful阶段,例如CentOS 7和Ubuntu 17的默认逻辑,而Windows Server 2012则会继续Stateful阶段。

五. 测试获得IP效果

我们进行了一系列测试,测试环境基于CentOS 7和NetworkManager进行搭建。以下是测试内容和结果:

  • 测试M、O、A flag在所有排列组合的情况下,客户端是否会通过RA报文配置无状态IP。
  • 客户端是否会通过RA报文配置prefix子网路由和网关。
  • 客户端是否会通过RA报文配置无状态IPv6地址。
  • 客户端是否会通过DHCPv6获得有状态IPv6地址。
  • 客户端是否会通过DHCPv6获得

DNS。

测试结果如下表所示:

M flag O flag A flag Stateless IP Prefix Subnet Route Gateway Configuration Stateful IP DHCPv6 DNS
on on on Yes Yes Yes No No
on on off Yes Yes Yes No No
on off on Yes Yes Yes No No
on off off Yes Yes Yes No No
off on on Yes Yes Yes Yes Yes
off on off Yes Yes Yes Yes Yes
off off on Yes Yes Yes Yes No
off off off Yes Yes Yes No No

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

何时采用无状态或有状态取决于具体的应用场景。关键在于是否需要控制IPv6地址。如果需要控制地址,例如保持地址不变,那么应该选择有状态IPv6地址分配方式;如果不需要控制,可以选择无状态IPv6地址分配方式。

  • 在服务端领域,需要对外提供服务,通常需要采用有状态IPv6地址,因为业务IP地址的突然变化容易导致业务中断,除非有良好的服务发现机制。
  • 在客户端领域,如移动设备或办公室内的PC机,通常只需要连接到IPv6互联网,不需要对外提供服务,因此可以采用无状态IPv6地址分配方式。

七. 后续内容

由于篇幅限制,本文未提供详细的配置信息。我们将在后续的IPv6系列文章中提供完整的实验配置,包括RA和DHCPv6的配置,以及客户端的配置。请继续关注我们的系列文章以获取更多信息。

附. 参考文档

  1. IPv6 Autoconfiguration Mechanisms
  2. DHCPv6基础

本教程深入研究了IPv6地址分配的Stateless和Stateful方式,以及与之相关的RA报文和DHCPv6协议。了解这些方式和参数对于构建和管理IPv6网络至关重要。希望本教程能帮助您更好地理解IPv6地址分配,并根据实际需求选择合适的方式。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

python实现简单的智能合约示例

2023-1-22 1:01:58

指数词

Ubuntu-server-22.04 lts下部署samba共享文件服务

2023-1-22 16:47:27

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索