(参考华为官网资料)
IPv6地址配置有两种:
- 无状态地址自动配置
- 有状态地址自动配置协议 -- DHCPv6协议
无状态地址自动配置的过程
- IPv6主机首先通过路由器发现功能来获取地址前缀信息
- 通过向接口已有的48bitMAC地址中插入16bit的FFFE生成接口ID
- 在生成了IPv6地址后会通过重复地址检测来确认地址是否唯一
无状态地址自动配置
- 主机可通过路由器获取到IPv6前缀并自动生成接口ID。
- 实现流程:
- 网络节点向相连的路由器发送RS,请求地址前缀信息。
- 路由器通过发送路由器通告RA,回复地址前缀信息。
- RA报文:
- 每台路由器为了让二层网络上的主机和其他路由器知道自己的存在,定期以组播方式发送携带网络配置参数的RA报文。
- RA报文的Type字段值为134.
- RS报文:
- 主机接入网络后可以主动发送RS报文。
- RA报文是由路由器定期发送的,但是如果主机希望能够尽快收到RA报文,他可以立刻主动发送RS报文给路由器。
- 网络上的路由器收到该RS报文后会立即向相应的主机单播回应RA报文,告知主机该网段的默认路由器和相关配置参数。
- RS报文的Type字段值为133.
无状态地址DAD检查
- DAD:重复地址检测
- 试验地址:一个IPv6单播地址在分配给一个接口之后,还未通过DAD的地址
- Solicited-node组播组:由单播或任播地址的后24位加上地址前缀FF02:0:0:0:0:1:FF00::/104组成。
- 例如本示例中配置的试验地址为2000::1,该地址被加入Solicited-node组播组FF02::1:FF00:1。
- 当为接口配置IPv6地址时,DAD在本地链路范围内检测将要使用的IPv6地址是否唯一。
- 节点使用的自己的试验地址,并向所在的Solicited-node组播组发送一个请求,该请求是以该试验地址为目标地址的邻居请求( NS) 报文。
- 如果收到某个其它站点回应的邻居通告( NA)报文, 就证明该地址已被网络上使用, 节点将不能使用该试验地址进行通信。
- 这种情况下, 网络管理员需要手动为该节点分配另外一个地址。
EUI-64规范
- 获取有效IPv6地址有三种方式可以用来配置IPv6地址的接口ID
- 网络管理员手动配置
- 通过系统软件生成
- 采用扩展唯一标识符(EUI-64)格式生成,也是最常用的方式
- IEEE EUI-64标准采用接口的MAC地址生成IPv6接口ID。
- MAC地址只有48位,而接口ID却要求64。
- MAC地址的前24位代表厂商ID,后24位代表制造商分配的唯一扩展标识。
- MAC地址的第七高位是一个U/L位
- 值为1时表示MAC地址全局唯一
- 值为0时表示MAC地址本地唯一
- 接口ID和路由分配的网络前缀一起组成IPv6地址。
- MAC地址向EUI-64格式转换过程
- MAC地址的前24位和后24位之间插入了16bit的FFFE
- 将U/L位的值从0变成了1
- 这样就成了一个64bit的接口ID,且接口ID的值全局唯一。
IPv6地址: fe80::1c4b:b8ff:fe16:91c4 mac地址: 1e4b:b816:91c4 --> 1e4b:b8ff:fe16:91c4 (在中间插入fffe) --> 1c4b:b8ff:fe16:91c4 (更改第七位1为0)
有状态地址自动配置协议 -- DHCPv6协议
- 无状态地址自动配置
- 路由器并不记录主机的IPv6地址信息, 可管理性差
- IPv6主机无法获取DNS服务器地址等网络配置信息
- 有状态地址自动配置协议 -- DHCPv6协议
- DHCPv6服务器为主机分配一个完整的IPv6地址
- 并提供DNS服务器地址等其他配置信息
- 对已经分配的IPv6地址和客户端进行集中管理
- DHCPv6服务器与客户端之间使用UDP协议来交互DHCPv6报文
- 客户端使用的UDP端口号是546
- 服务器使用的UDP端口号是547。
DHCPv6基本协议架构
- DHCPv6客户端
- 通过与DHCPv6服务器进行交互,获取IPv6地址前缀和网络配置信息,完成自身的地址配置功能。
- DHCPv6中继
- 负责转发来自客户端方向或服务器方向的DHCPv6报文
- 协助DHCPv6客户端和DHCPv6服务器完成地址配置功能。
- 只有当DHCPv6客户端和DHCPv6服务器不在同一链路范围内,或者DHCPv6客户端和DHCPv6服务器无法单播交互的情况下,才需要DHCPv6中继的参与。
- DHCPv6服务器
- 负责处理来自客户端或中继的地址分配、地址续租、地址释放等请求
- 为客户端分配IPv6地址/前缀和其他网络配置信息。
- 客户端发送DHCPv6请求报文来获取IPv6地址等网络配置参数,使用的源地址为客户端接口的链路本地地址,目的地址为ff02::1:2。
- ff02::1:2表示的是所有DHCPv6服务器和中继, 这个地址是链路范围的。
DUID
- DHCPv6 Unique Identifier
- 标识一台DHCPv6服务器或客户端
- DUID采用以下两种方式生成:
- 基于链路层地址(LL)--即采用链路层地址方式来生成DUID。
- 基于链路层地址与时间组合(LLT)--即采用链路层地址和时间组合方式来生成DUID。
DHCPv6分配地址
- DHCPv6有状态自动分配
- DHCPv6服务器为客户端分配IPv6地址及其他网络配置参数
- DHCPv6无状态自动分配
- 主机的IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数。
- DHCPv6客户端在向DHCPv6服务器发送请求报文之前,会发送RS报文,在同一链路范围的路由器接收到此报文后会回复RA报文。
- 在RA报文中包含管理地址配置标记M和有状态配置标记O。
- 当M取值为1时,启用DHCPv6有状态地址配置,
- 当M取值为0时,则启用IPv6无状态地址自动分配方案。
- 当O取值为1时,用来定义客户端需要通过有状态的DHCPv6来获取其它网络配置参数,如DNS、NIS、SNTP服务器地址等,
- 当O取值为0时,启用IPv6无状态地址自动分配方案。
DHCPv6有状态自动分配
DHCPv6四步交互地址分配过程如下:
- DHCPv6客户端发送Solicit报文,请求DHCPv6服务器为其分配IPv6地址和网络配置参数。
- DHCPv6服务器回复Advertise报文,该报文中携带了为客户端分配的IPv6地址以及其它网络配置参数。
- DHCPv6客户端如果接收到了多个服务器回复的Advertise报文,则会根据Advertise报文中的服务器优先级等参数来选择优先级最高的一台服务器,并向所有的服务器发送Request组播报文。
- 被选定的DHCPv6服务器回复Reply报文,确认将IPv6地址和网络配置参数分配给客户端使用。
DHCPv6无状态自动分配
DHCPv6无状态工作过程如下: 1. DHCPv6客户端以组播方式向 DHCPv6服务器发送 InformationRequest报文。该报文中携带 Option Request选项, 用来指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数 1. DHCPv6服务器收到Information-Request报文后, 为DHCPv6客户端分配网络配置参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。 1. DHCPv6客户端根据收到的Reply报文中提供的参数,完成DHCPv6客户端无状态配置。
IPv6二进制转换表
十进制 | 二进制 | 十进制 | 二进制 |
0 | 0000 | 8 | 1000 |
1 | 0001 | 9 | 1001 |
2 | 0010 | a | 1010 |
3 | 0011 | b | 1011 |
4 | 0100 | c | 1100 |
5 | 0101 | d | 1101 |
6 | 0110 | e | 1110 |
7 | 0111 | f | 1111 |