IPv6 的地址配置方式
IPv6 是没有广播寻址模式的,所以ARP在 IPv6 中已被弃用。代而替之的,IPv6 支持 3 种地址配置方式:
- 手动配置
- 基于 ICMPv6 NDP 协议的自动配置
- 基于 DHCPv6 协议的自动配置
在IPv6自动配置IP的过程中支持三种配置方式:
- SLAAC:即无状态自动配置。主机可以通过RA(Router-Advertisement)消息ICMP type134中携带的前缀得到地址的前缀部分,同时通过该接口自动生成接口ID部分,从而得到一个完整的128位的IPV6地址,该消息默认情况下每200S发送一次。当然主机(或路由器)也可以主动发送RS(Router Solicit)消息ICMP Type=133来主动请求该前缀。
- Stateful DHCPv6:即有状态DHCP v6地址分配。通过DHCPv6向主机下发相关前缀、地址、DNS等参数。同时在Stateful DHCPv6又可根据RA报文等配置分为
- Stateless DHCPv6:Stateless 和 Stateful 并不完全冲突,可以同时部署,协同使用。利用 NDP 下发网关和子网前缀等信息,主机根据子网前缀自动生成 IPv6 地址。同时,利用 DHCPv6 配置 DNS Server 等其他信息。
模式 | DHCPv6 | NDP |
---|---|---|
SLAAC | - | 网关、子网前缀、MTU、主机根据子网前缀自动生成 IPv6 地址、DNS等 |
Stateful | MTU、主机IP、DNS | 子网前缀、网关 |
子网前缀、MTU、主机IP、DNS | 网关 | |
Stateless | DNS | 子网前缀、网关、MTU、主机IP、DNS |
ICMPv6 NDP 协议
IPv6 引入了 ICMPv6 NDP(Neighbor Discovery Protocol,邻居发现协议)来替代 IPv4 的 ARP(Address Resolution Protocol,地址解析协议)。NDP 基于 ICMPv6(Internet Control Message Protocol Version 6,网络控制消息协议第六版)实现,ICMPv6 报文(作为 IPv6 扩展头部)封装在 L3 报文中,可视为 3 层协议。
NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。
NDP 控制了 IPv6 本地链路上的以下主要活动:
功能 | 解释 |
---|---|
邻居发现(Router Discovery) | 帮助节点确定相邻节点的链路本地地址 |
前缀发现(Prefix Discovery) | 使节点能够搜索已分配给链路的已知子网前缀。节点通过子网前缀来区分位于本地链路上的目标、以及其他链路上的目标 |
路由器发现 | 帮助主机查找本地链路上的路由器 |
参数(Parameter Discovery) | 节点能够发现所在链路的参数,像链路的 MTU 和跳数限制等 |
地址自动配置(Address Auto Configuration) | 使节点能够为其接口自动配置 IPv6 地址 |
邻居状态跟踪 | 可达性 |
地址解析(Address Resolution) | 节点不需要通过 ARP 就能够获取链路上其它节点的 MAC 地址 |
确定下一跳(Next-Hop Determination) | 能够确定到达目的节点的下一跳链路层节点,或者所在链路的目的节点,或是到达目的节点的路由器 |
邻居不可达检测(Neighbor Unreachability Detection) | 节点上能够检测到链路上的邻居何时不可达,邻居有可能是主机,也可能是路由器 |
重复地址检测(Duplicate Address Detection) | 使节点能够确定其要使用的地址是否尚未被使用 |
路由重定向(Redirect) | 使路由器能够通知主机要用于到达特定目标的较好(优选)的下一个跃点节点 |
ICMPv6 NDP 协议的消息类型
NDP协议中一共有五种ICMPv6报文类型,分别是RS,RA,NS,NA和Redirect报文。
ICMPv6 | 消息名称 | 作用 |
---|---|---|
Type=133 | RS(Router Solicitation,路由器请求) | 地址自动配置 |
Type=134 | RA(Router Advertisement,路由器公告) | |
Type=135 | NS(Neighbor Solicitation,邻居请求) | 地址解析 |
Type=136 | NA(Neighbor Advertisement,邻居公告) | |
Type=137 | Redirect(重定向报文) | 路由器重定向 |
IPv6地址自动分配流程
IPv6自动配置地址 RA里的A、M、O标记位
在ICMPv6 RA(Router Advertisement)包里面的标识位,标识位可以表示你自动获得地址的方式,发过来的RA默认的标识位是A=1 M=0 O=0 代表SLAAC方式(SLAAC就是通过RA包来生成地址),我们可以通过去改标识位来改变ipv6的地址自动分配方式,具体标识位的使用如下:
A flag标识位(Address Autoconfiguration) 在RA的前缀字段 其实代表有无状态 A=1,使用RA里面的前缀字段生成GUA(全球单播地址)地址 A=0 则不通过RA前缀生成,说白了就是:你的GUA是怎么来的,是通过DHCP 还是SLAAC?
M flag标识位(Managed Address Configuration)在flag字段里 代表使不使用DHCPv6 M=1,使用DHCP分配GUA地址, M=0 不使用DHCP分配地址,事实上 当你配完M=1 就不用管O了 因为M的意思就是无论是地址还是其他信息 都是通过DHCP去分配
O flag标识位 (Other Configuration)和M在同一字段,代表其他的信息,O=1 使用DHCP获取其他信息(如:DNS地址)这里可以理解为DNS信息 O=0 从RA获取其他信息,其实RA里是没有DNS信息的,所以SLAAC的获取地址方式是没有DNS信息的
IPV6 SLAAC地址分配过程
主机可以通过RA(Router-Advertisement)消息ICMP type134中携带的前缀得到地址的前缀部分,同时通过该接口自动生成接口ID部分,从而得到一个完整的128位的IPV6地址,该消息默认情况下每200S发送一次。当然主机(或路由器)也可以主动发送RS(Router Solicit)消息ICMP Type=133来主动请求该前缀。
序号 | 动作 | |
---|---|---|
1 | 根据接口标识产生链路本地地址。 | |
2 | 主机发送RS报文前缀地址,Type类型133 | 为配置接口,主机需要前缀信息(类似于IPV4地址的网络部分),因此它会发送一条路由器请求(RouterSolicitation,RS)消息。该消息以组播方式发送给所有路由器。这实际上是一种ICMP消息,并用编号进行标识。PC发送RS(Router Solicitation)给到本地节点,所有路由器组播地址FF02::2。 |
3 | 路由设备回复RA,Type类型134 | 路由器使用一条路由器通告(Router-Advertisement,RA)消息进行应答,其中包含请求的前级信息。RA消息也是组播分组,被发送到表示所有节点的组播地址,其ICMP类型为134。RA消息是定期发送的,但主机发送RS消息后,可立即得到响应,因此无需等待下一条定期发送的RA消息,就能获得所需的信息。 |
4 | 路由分配地址发送NS,消息类型Type=135 | 路由器发送NS,Type=135,给主机分配具体IPv6地址 |
5 | 主机回复NA,消息类型Type=136 | 主机回复NA,Type=136,主机回复确认使用NS发分配的地址 |
6 | 针对IPv6单播地址执行DAD检测 |
IPv6 DHCP分配地址
DHCPv6地址分配又分为两种:有状态DHCPv6和无状态DHCPv6
Stateful DHCPv6 | 地址、前缀和其他参数如DNS通过DHCP发送 |
Stateless DHCPv6 | 地址通过RA通告获取,其他参数如DNS通过DHCPv6发送 |
Stateful DHCPv6地址自动分配过程
在有状态地址配置过程中,DHCPv6服务器为主机分配一个完整的IPv6地址,并提供DNS服务器地址等其他配置信息。此外,DHCPv6服务器还可以对已经分配的IPv6地址和客户端进行集中管理。
序号 | 动作 | |
---|---|---|
1 | 根据接口标识产生链路本地地址。 | |
2 | 主机发送RS报文前缀地址,Type类型133 | 主机在向DHCPv6服务器发送请求报文之前,会发送RS报文,在同一链路范围的路由器接收到此报文后会回复RA报文。在RA报文中包含前缀地址标识位(A=0)管理地址配置标记(M=1)和有状态配置标记(O=1)。 |
3 | 主机发送Solicit报文 | 请求DHCPv6服务器为其分配IPv6地址和网络配置参数 |
4 | 路由设备将主机请求通过中继转发给DHCPv6服务器 | 转发来自主机方向DHCPv6请求报文,协助DHCPv6客户端和DHCPv6服务器完成地址配置功能。 |
5 | DHCPv6服务器 | 回复Advertise报文,该报文中携带了为客户端分配的IPv6地址以及其它网络配置参数。 |
6 | DHCPv6客户端 | 根据收到的Advertise报文中的服务器优先级等参数来选择优先级最高的一台服务器,并向所有的服务器发送Request组播报文。 |
7 | DHCPv6服务器 | 被选定的DHCPv6服务器回复Reply报文,确认将IPv6地址和网络配置参数分配给客户端使用。 |
Stateless DHCPv6地址自动分配过程
DHCPv6无状态工作过程如下:
DHCPv6客户端以组播方式向DHCPv6服务器发送Information-Request报文,该报文中携带Option Request选项,用来指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数。
DHCPv6服务器收到Information-Request报文后,为DHCPv6客户端分配网络配置参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。
DHCPv6客户端根据收到的Reply报文中提供的参数完成DHCPv6客户端无状态配置