ICT应用解决方案05-IPv6地址配置

发布时间 2023-06-10 20:44:17作者: Qurare

ICT应用解决方案05-IPv6地址配置

1 IPv6地址配置方式

IPv6地址配置的方式可以分为静态配置和动态配置。其中,动态地址配置又可以分为无状态地址自动配置(Stateless Address Autoconfiguration,SLAAC)有状态地址自动配置(Stateful Address Autoconfiguration)

image-20230608193028607

1.1 IPv6地址自动配置的分类

除了链路本地地址(手动配置+EUI64)FE80: : /10、全球单播地址2000::/8、私有地址FC00:: /8、FD00: : /10

  • 无状态地址自动配置
    • 不需要IPv6地址分配服务器保存和管理每个节点的状态信息的一种IPv6地址自动配置方式,称之为IPv6无状态地址自动配置。
    • 无状态地址自动配置方式基于NDP来实现(RA)
  • 有状态地址自动配置
    • IPv6地址分配服务器必须保存每个节点的状态信息,并管理这些保存的信息,这种方式称之为IPv6有状态地址自动配置
    • 有状态地址自动配置基于DHCPv6(Dynamic Host Configuration Protocol for IPv6)来实现

2 IPv6地址无状态自动配置

2.1 IPv6地址无状态自动配置过程

image-20230608195344176

  1. PC1根据本地的接口ID自动生成链路本地地址。
  2. PC1对该链路本地地址进行DAD检测(试验地址),如果该地址无冲突则可启用,此时PC1具备IPv6连接能力。
  3. PC1发送RS报文,尝试在链路上发现IPv6路由器。
  4. R1发送RA报文(携带可用于无状态地址自动配置的IPv6地址前缀。路由器在没有收到RS报文时也能够主动发出RA报文)
  5. PC1解析路由器发送的RA报文,获得IPv6地址前缀,使用该前缀加上本地的接口ID生成IPv6单播地址
  6. PC1对生成的IPv6单播地址进行DAD检测,如果没有检测到冲突,则启用该地址

2.2 IPv6地址无状态自动配置示例

IPv6无状态地址配置通过交互RS和RA报文完成

image-20230608195501510

2.3 RA报文中的字段

Flags

image-20230608195617368

地址前缀信息(可选)

image-20230608195750334

分配端的接口上配置no-antoconfig后, A置位为0, 所选地址前缀不参与分配, 命令如下:

int g0/0/0
	ipv6 enable
	ipv6 nd ra prefix 2001:: 64 94967295 967295 
	ipv6 nd ra prefix 3001:: 64 94967295 967295 no-autoconfig
	undo ipv6 nd ra halt

94967295为有效时间(s), 967295为优选时间(s), 3001:: 64地址池不参与自动分配

生存周期

image-20230608195823772

试验地址, RA携带的时间:

  • 优选时间: Preferred lifetime
    • 地址获取后可以正常通信
    • 地址可以主动和对方发起连接建立(如ping未知地址)
  • 有效时间: Valid lifetime
    • 此时也可以正常通信. 但不能主动建立新的通信, 只能被动与建立好的连接进行通信
    • 主要用于无缝切换(漫游), 使得新地址替代旧地址, 此时会有新地址, 这种情况下老设备可以继续与旧地址进行通信,

3 DHCPv6

回顾DHCPv4: DHCP报文是承载于UDP上层的报文, 使用67和68端口

3.1 概述

DHCPv6针对IPv6编址方案设计,支持对客户端分配IPv6前缀、IPv6地址和其他网络配置参数,并记录这些信息,便于网络管理

DHCPv6又分为如下三种:

  • DHCPv6有状态自动配置:DHCPv6服务器自动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。

  • DHCPv6无状态自动配置:主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数,包括DNS服务器等参数。

  • DHCPv6 PD(Prefix Delegation,前缀代理)自动配置:下层网络路由器不需要再手工指定用户侧链路的IPv6地址前缀,它只需要向上层网络路由器提出前缀分配申请,上层网络路由器便可以分配合适的地址前缀给下层路由器,下层路由器把获得的前缀(前缀一般长度小于64)进一步自动细分成64位前缀长度的子网网段,把细分的地址前缀再通过路由通告(RA)至与IPv6主机直连的用户链路上,实现主机的地址自动配置,从而完成整个IPv6网络的层次化布局。

    如2001::1/64分配出2001::1/72

3.2 DHCPv6网络构成

image-20230608195957210

DHCPv6基本协议架构中,主要包括以下三种角色

  • DHCPv6 Clinet: DHCPv6客户端, 通过DHCP服务器进行报文交互,获取IPv6地址/前缀和其他网络配置参数,完成自身的网络配置
  • DHCPv6 Server:DHCPv6服务器,负责处理来自客户端或中继的地址分配、地址续租、地址释放等请求,为客户端分配IPv6地址/前缀和其他网络配置参数
  • DHCPv6 Relay: DHCPv6中继,负责转发来自客户端或服务器的DHCPv6报文, 协助DHCPv6客户端和DHCPv6服务器完成地址配置功能

3.3 DHCPv6中的常用概念

概念 含义
Valid Lifetime,有效时间 地址/前缀的生命周期, 大于优选时间
Preferred Lifetime, 优选时间 用于计算续租时间和重绑定时间
T1 IPv6地址的续租(Renew)时间,默认是Preferred Lifetime0.5倍, Clinet单播寻找之前的DHCP服务器
T2 IPv6地址的重绑定(Rebind)时间,默认是Preferred Lifetime0.875倍, Clinet组播会去寻找其他DHCP服务器
Identity Association,IA, 身份联盟,是使得服务器和客户端能够识别、分组和管理一系列相关IPv6地址的结构,又分为IA_NA(非临时地址身份联盟)和IA_PD(代理前缀身份联盟)。
DHCP Unique Identifier,DUID 即DHCP设备唯一标识符。用来唯一标志一台设备,每个客户端、服务器、中继都有自己的DUID
报文类型 Solicit、Advertise、Request、Reply、Information-Request、Renew、Rebind、Release、Confirm、Decline、Reconfigure、Relay-Forward、Relay-Reply等

3.4 DHCPv6有状态自动配置

3.4.1 四步交互(正常)

四步交互是指DHCPv6客户端与服务器交互四次来完成前缀/地址等参数获取的过程

image-20230608200528958

  1. DHCPv6客户端组播发送Solicit(相当于DISCOVER)消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数
  2. DHCPv6服务器组播回复Advertise(相当于OFFER)消息,通知客户端可以为其分配的地址/前缀和网络配置参数
  3. 如果DHCPv6客户端接收到多个服务器回复的Advertise消息则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向所有服务器组播发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数。
  4. DHCPv6服务器单播回复Reply(相当于ACK)消息,确认将地址/前缀和网络配置参数分配给客户端使用

注: Advertise报文中的网关存在优先级概念: LOW低级、中级(默认)、高级

3.4.2 两步交互(快速)

DHCPv6客户端可以在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数

image-20230608200702440

  1. DHCPv6客户端发送Solicit报文,携带Rapid Commit选项
  2. DHCPv6服务器接收到Solicit报文后,将会判断,如果DHCPv6服务器支持快速分配,则直接返回Reply报文, 为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配,则将采用四步交互方式。

3.4.3 地址/前缀租约更新

DHCPv6服务器分配的IPv6地址/前缀具有有效时间。地址/前缀的租借时间超过有效时间后,DHCPv6客户端不能再使用该地址/前缀。因此,在有效时间超时之前,如果DHCPv6客户端希望继续使用该地址/前缀则需要更新地址/前缀的租约

image-20230608202240809

  1. DHCPv6客户端在T1时刻(默认为Preferred Lifetime的1/2)发送Renew报文进行地址/前缀租约更新请求
  2. 如果DHCPv6客户端可以继续使用该地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约。否则,DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约

如果DHCPv6服务器未响应T1时刻DHCPv6客户端发出的Renew请求,则客户端会在T2(默认为Preferred Lifetime的0.8倍)向所有DHCPv6服务器组播发送Rebind请求更新租约

image-20230608202411087

  1. DHCPv6客户端在T1时刻发送Renew请求更新租约但是没有收到DHCPv6服务器的回应报文。

  2. DHCPv6客户端在T2时刻,向所有DHCPv6服务器组播发送Rebind报文请求更新租约。

  3. 如果DHCPv6客户端可以继续使用该地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约。

    否则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。

3.5 DHCPv6无状态自动配置

DHCPv6服务器为已经具有IPv6地址/前缀的客户端分配除地址/前缀以外的其他网络配置参数,该过程称为DHCPv6无状态自动配置

image-20230608202525848

  1. DHCPv6客户端以组播的方式向DHCPv6服务器发送Information-request报文,该报文中携带OptionRequest选项,指定客户端需要从服务器获取的配置参数。
  2. 服务器收到该报文后,为客户端分配网络配置参数,并单播发送Reply报文将网络配置参数返回给客户端。客户端检查Reply报文中提供的信息,如果与Information-request报文中请求的配置参数相符,则按照Reply报文中提供的参数进行网络配置;否则,忽略该参数

3.6 PD自动配置

在一个层次化的网络结构中,不同层次的IPv6地址配置一般是手工指定的。手工配置IPv6地址扩展性不佳,不利于IPv6地址的统一规划管理。DHCPv6 PD可以解决这个问题

image-20230608200845832

  1. DHCPv6客户端发送Solicit报文,请求DHCPv6服务器为其分配IA_NA地址和IA_PD前缀
  2. DHCPv6服务器回复Advertise报文,通知客户端可以为其分配的IPv6地址和前缀
  3. 如果客户端接收到多个服务器回复的Advertise报文,则根据Advertise报文中的服务器优先级等参数,选择优先级最高的一台服务器(若服务器优先级一样,则选择带有该客户端需要的配置参数的Advertise报文),并向其发送Request报文,请求为其分配地址/前缀
  4. DHCPv6服务器回复Reply报文,确认将IPv6地址/前缀分配给DHCPv6客户端
  5. DHCPv6客户端在收到PD前缀后,与终端进行RS/RA报文交互,在RA报文中将携带获取到的PD前缀下发至终端

3.7 DHCPv6报文总结

报文类型 报文作用
Solicit DHCPv6客户端发送该消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数
Advertise DHCPv6服务器发送Advertise消息,通知客户端可以为其分配的地址/前缀和网络配置参数
Request 如果DHCPv6客户端接收到多个服务器回复的Advertise消息,则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数
Reply DHCPv6服务器发送Reply消息,确认将地址/前缀和网络配置参数分配给客户端使用
Information-Request 客户端向DHCPv6服务器发送Information-request报文,该报文中携带OptionRequest选项,指定客户端需要从服务器获取的配置参数
Renew 地址/前缀租借时间到达时间T1时,DHCPv6客户端会向为它分配地址/前缀的DHCPv6服务器单播发送Renew报文, 以进行地址/前缀租约的更新
Rebind 如果在T1时发送Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文,则DHCPv6客户端会在T2时,向所有DHCPv6服务器组播发送Rebind报文请求更新租约
Confirm 当有断电、掉线、漫游等情况发生时,客户端会发送Confirm报文确认自己的IP地址是否可用
Decline 当客户端发现地址冲突时,发送Decline通知服务器释放分配给本机的地址

3.8 DHCPv6工作过程

3.8.1 地址确认过程

当客户端有断电、掉线、漫游等情况发生时,客户端会发送Confirm报文确认自己的IPv6地址是否可用。如果客户端确认的地址是合法的,则服务器回应;如果没有回应,则客户端需要重新启动地址申请流程

image-20230608202912974

3.8.2 DHCPv6地址冲突检测过程

客户端完成地址申请后,会在开始使用该地址前发起DAD探测。如果DAD检测到地址存在冲突,则客户端发送Decline(释放)消息通知服务器,并不再使用该地址

image-20230608202934005

3.8.3 DHCPv6中继工作过程

服务器和客户端不在一个网段时,需要使用到DHCPv6中继来完成IPv6地址/前缀和其他网络配置参数的获取

image-20230608203052984

  1. DHCPv6客户端向所有DHCPv6服务器和DHCPv6中继的**组播地址FF02::1:2****发送请求报文
  2. DHCPv6中继收到客户端的报文后,将其封装在Relay-Forward报文的中继消息选项中,并将Relay-Forward报文发送给DHCPv6服务器或下一跳中继
  3. DHCPv6服务器从Relay-Forward报文中解析出DHCPv6客户端的请求,为DHCPv6客户端选取IPv6地址和其他配置参数,并将Relay-Reply报文发送给DHCPv6中继
  4. DHCPv6中继从Relay-Reply报文中解析出DHCPv6服务器的应答,转发给DHCPv6客户端

注: Relay-Reply(中继-回复)

3.8.4 地址释放过程

当客户端不需要再使用某地址时,将发送Release消息至服务器,发起释放地址的交互流程

image-20230608203338308

3.9 地址自动比较

地址配置 基于DHCPv6 基于NDP
地址管理 有状态。服务器端存储用户地址或前缀的分配和释放信息 无状态。不保存用户地址分配信息
部署价值 支持128bit地址和不同长度的前缀分配,扩展性强 只支持64bit前缀配置,扩展性差
实现难度 配置复杂 配置简单
安全性 应用层协议,安全性强 安全性较差

4 IPv6地址自动配置实现

配置命令

首先得在全局和对应接口开启ipv6

  1. 手工配置接口的链路本地地址

    ipv6 address ipv6-address link-local
    
  2. 自动配置接口的链路本地地址

    ipv6 address auto link-local
    
  3. 手工配置接口的全球单播地址

    ipv6 ddress {ipv6-address prefix-length | ipv6-address/prefix-length}
    
  4. 自动配置接口的全球单播地址

    ipv6 address auto {global | dhcp}
    
  5. 查看接口的IPv6信息

    display ipv6 interface[interface-type interface-number | brief]
    
  6. 查看邻居表项信息

    display ipv6 neighbors
    
  7. 使能接口发布RA报文功能

    undo ipv6 nd ra halt
    

    默认情况下,华为路由器接口抑制ICMPv6RA报文的发送。

配置举例

image-20230608205143624

配置需求

  1. R1的GE0/0/0和GE0/0/1接口采用手工方式配置IPv6地址
  2. R2的GE0/0/0接口通过无状态地址自动配置的方式获取IPv6地址
  3. R3的GE0/0/0接口通过DHCPv6的方式获取IPv6地址

配置命令-静态配置

  1. 在R1、R2、R3使能IPv6,并且让接口自动生成链路本地地址(以R1为例)

    ipv6
    int g0/0/0
    	ipv6 enable
    	ipv6 address auto link-local
    
  2. 在R1的接口上配置IPv6全球单播地址

    int g0/0/0
    	ipv6 address 2001:DB8:13::164
    	int g0/0/1
    	ipv6 address 2001:DB8:12::164
    

配置命令-无状态自动配置

  1. 在R1使能发布RA报文的功能

    int g0/0/1
    	undo ipv6 nd ra halt
    
  2. 配置R2的GE0/0/0接口自动获取IPv6地址

    int g0/0/0
    	ipv6 address auto global
    

配置命令-DHCPv6

  1. 在R1上配置DHCPv6服务器功能

    dhcp enable
    dhcpv6 pool pool1
        address prefix 2001:DB8:13::/64	
        excluded-address 2001:DB8:13::1
        qu
    g0/0/0
    	dhcpv6 server pool1
    
  2. 配置R3的GE0/0/0接口通过DHCPv6的方式获取IPv6地址

    dhcp enable
    int g0/0/0
    	ipv6 address auto dhcp
    	qu
    

结果验证

R2

display ipv6 int g0/0/0

R3

display dhcpv6 client