码迷,mamicode.com
首页 > 其他好文 > 详细

02-IPv6地址配置

时间:2018-07-27 22:26:40      阅读:462      评论:0      收藏:0      [点我收藏+]

标签:dns   通信   配置   一起   技术分享   情况下   height   ima   配置信息   

(参考华为官网资料)

IPv6地址配置有两种:

  • 无状态地址自动配置
  • 有状态地址自动配置协议 -- DHCPv6协议


无状态地址自动配置的过程

  1. IPv6主机首先通过路由器发现功能来获取地址前缀信息
  2. 通过向接口已有的48bitMAC地址中插入16bit的FFFE生成接口ID
  3. 在生成了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四步交互地址分配过程如下:

  1. DHCPv6客户端发送Solicit报文,请求DHCPv6服务器为其分配IPv6地址和网络配置参数。
  2. DHCPv6服务器回复Advertise报文,该报文中携带了为客户端分配的IPv6地址以及其它网络配置参数。
  3. DHCPv6客户端如果接收到了多个服务器回复的Advertise报文,则会根据Advertise报文中的服务器优先级等参数来选择优先级最高的一台服务器,并向所有的服务器发送Request组播报文。
  4. 被选定的DHCPv6服务器回复Reply报文,确认将IPv6地址和网络配置参数分配给客户端使用。

DHCPv6无状态自动分配

技术分享图片
DHCPv6无状态工作过程如下:

  1. DHCPv6客户端以组播方式向 DHCPv6服务器发送 InformationRequest报文。该报文中携带 Option Request选项, 用来指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数
  2. DHCPv6服务器收到Information-Request报文后, 为DHCPv6客户端分配网络配置参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。
  3. 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

02-IPv6地址配置

标签:dns   通信   配置   一起   技术分享   情况下   height   ima   配置信息   

原文地址:https://www.cnblogs.com/liangjingfu/p/9379788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!