DHCPv6在Linux环境下的实现
2017-03-17邓荣
邓荣
摘要:随着互联网的不断发展,IPv6地址被设计用来解决IPv4地址空间不足的問题。本文介绍了IPv6和DHCPv6的基本概念,给出了Linux环境下一种DHCPv6服务器的配置方法,并在客户端上进行了验证。
关键词:IPv6; IPv6动态主机配置协议; Linux
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)32-0020-02
1 IPv6概述
互联网协议版本6(IPv6)是因特网协议(IP)的最新版本,是为网络上的计算机和路由器提供识别和定位系统的通信协议。IPv6由互联网工程任务组(IETF)开发,用于处理IPv4地址耗尽的长期预期问题。 IPv6旨在最终替代IPv4。
1.1 IPv6地址和地址前缀的表示法
1)X:X:X:X:X:X:X:X
IPV6地址长128比特,每一个X代表4位的16进制数,可以表示成由:隔开的8个16比特段。例如:FEDC:BA98:7654:FEDC:BA98:7654:3210
2)压缩表示法
::标识一组或多组16进制的0,如下例所示:
1080:0:0:0:8:800:200C:417A == 1080::8:800:200C:417A
FF01:0:0:0:0:0:0:101 == FF01::101
0:0:0:0:0:0:0:1 == ::1
0:0:0:0:0:0:0:0 == ::
3)当处理IPV6和IPV4混合环境的时候,可以有另一种便利的表示法:
X:X:X:X:X:X:d.d.d.d
X代表16进制数(用于嵌入在IPV6中的IPV4数据的表示),d代表10进制,4个d表示标准的IP地址格式。
4)地址前缀的文本表述
前缀是地址中具有固定值的位数部分或表示网络标识的位数部分。IPv6的子网标识、路由器和地址范围前缀表示法与IPv4采用的CIDR标记法相同,其前缀可书写为:地址/前缀长度。
1.2 地址类型
在IPv6地址类型中,有很多更具体的,更丰富的地址类型,这也是它具有更多性能的基础。IPv6地址中的前导位用来定义具体的IPv6地址类型,有一段变长字段包含了这些前导位,它们被称作格式前缀(FP)。
具体的地址类型有:
1)全局单播IPv6地址:用于标识单个接口。 这些是IPv4中的标准全局唯一单播地址(公共IPv4地址),每个主机接口一个。全球单播IPv6地址是互联网可路由的IPv6地址。
2)链路本地IPv6地址:链路本地IPv6地址允许本地链路上的设备之间的通信。链路本地IPv6地址不可路由,它们在子网上使用。普通链路本地IPv6地址前缀为fe80::/10。
3)组播地址:组播地址标识相同或不同主机上的零个或多个接口。IPv6组播地址以FF开头。
4)任播地址:任播地址标识多个接口。任播传输仅向与地址相关联的接口中的一个发送分组,而不是向所有接口发送分组。该接口通常是由路由协议定义的最接近的接口。
5)环回地址:由节点用于向其自身发送IPv6数据包。IPv6环回地址的功能与IPv4环回地址相同。IPv6环回地址为0000:0000:0000:0000:0000:0000:0000:0001/128,也可以表示为:: 1。
2 DHCPv6协议概述
2.1 DHCPv6概念
动态主机配置协议版本6(DHCPv6)是用于配置具有IP地址、IP前缀以及在IPv6网络中操作所需的其它配置数据的因特网协议版本6(IPv6)主机的网络协议。和IPv4中的DHCP一样,DHCPv6所有的协议报文都是基于UDP的。但是由于在IPv6中没有广播报文,因此DHCPv6使用组播报文,客户端也无需配置服务器的IPv6地址。
2.2 DHCPv6地址分配过程
DHCPv6属于应用层通讯协议,使用UDP 来交换消息。它需要通过DHCPv6 协议来获取IP位址或其它参数的node。客户端会以client的角色来向DHCPv6 server发出请求,而DHCPv6 server会依据client的相关信息以及server的相关策略来配置client适当的参数值。
DHCPv6 客户端和服务器端的信息交换分为4个消息和2个消息两种类型:
1)4个消息类型
为了请求1个或多个IP位址以及其他参数,首先客户端发送Solicit message到All_DHCP_Relay_Agents_and_Servers address来寻找可用的DHCP servers。任何服务器只要能符合客户端的请求,会将配置的IP位址以及其他参数通过Advertise message来回应客户端。客户端从收到的Advertise messages中选择最符合自己需求的配置,并将配置到的IP位址通过发送Request message要求服务器的确认。服务器通过Reply message将确认配置的IP位址以及其他参数回应客户端。此时即完成客户端和服务器之间的信息交换,客户端可以开始使用配置到的IP位址以及其他参数。 服务器分配给客户端的每个IP位址都指定了preferred lifetime以及valid lifetime。为了能持续使用分配到的IP位址,客户端可以在lifetime到期之前发送Renew message来要求延长lifetime。服务器将新的lifetime通过Reply message回应客户端,允许客户端继续使用该IP位址而不会被中断。
2)2个消息类型
当客户端不需要服务器为其分配IP位址时,它可以使用2个消息的信息交换方式来获取其他的配置参数。首先客户端发送Information-Requestmessa到All_DHCP_Relay_Agents_and_Servers multicast address,服务器将配置给客户端的参数值通过Reply message回应客户端。此外,客户端也可以使用2个messages即Sloicit-Reply的交换方式来同时获取IP位址以及其他配置参数。在此情况下,客户端会在Solicit message中使用Rapid Commit option表明希望直接收到服务器即时分配且确认的Reply message。此种做法可加快客户端获取IP位址以及其他参数的速度。
3 DHCPv6在Linux环境下的实现
本文使用安装Fedora操作系统的一台服务器作为DHCPv6服务器,服务器的地址为2001:250:6001::1,服务器分配的IPv6网段地址为:2001:250:6001::2至2001:250:6001::10。服务器配置步骤如下:
1)安装DHCPv6软件包
#yum -y install dhcpv6
2)安装IPv6模块
#yum -y install dhcpv6
3)在服务器上启用IPv6网络
#cd /etc/sysconfig
#vi network
增加配置语句:
IPv6_DEFAULTDEV=eth0
NETWORKING_IPV6=yes
4)给服务器网卡配置IPv6地址
#vi /etc/sysconfig/network-script/ifcfg-eth0
增加配置语句:
IPV6INIT=yes
IPV6ADDR=2001:250:6001::1/64
5)配置服务器主配置文件
#vi /etc/dhcpv6s.conf
新建配置文件dhcpv6s.conf的内容为:
interface eth0 {
server-preference 255;
renew-time 80;
rebind-time 100;
prefer-life-time 150;
valid-life-time 210;
allow rapid-commit;
link AAA {
range 2001:250:6001::2 to 2001:250:6001::10/64;
prefix 2001:250:6001::/64;
};
};
6)启动DHCPv6服务
#service dhcp6s start
4 DHCPv6客户端验证
本文使用一台安装Fedora操作系统的PC作为DHCPv6客户端进行测试。配置步骤如下:
1)安装DHCPv6软件包
#yum -y install dhcpv6
2)编辑配置文件
#cd /etc
#vi dhcp6c.conf
增加配置语句:
interface eth0 {
send rapid-commit;
};
3)启动DHCPv6客户端
# dhcp6c -f eth0
通过以上配置,客户端可以通过DHCPv6服务器获得一个指定范围内的IPv6的地址。
5 总结
本文提出了一种Linux环境下通过DHCPv6服务器动态分配IPv6地址的方法,并在客户端上进行了验证。在客户端使用手工输入IPv6地址容易出错,使用DHCPv6协议不仅可以很好地解决这一问题,而且可以分配IPv6前缀等参数,更便于网络运维管理人员对IPv6网络进行管理和自动配置。
参考文献:
[1] 范小雨, 郑红霞, 谢高岗. DHCPv6协议一致性测试集的设计和实现[J]. 计算机工程, 2007(19).
[2] 胡光武, 陈文龙, 徐恪. 一種基于IPv6的物联网分布式源地址验证方案[J]. 计算机学报, 2012(3).
[3] 王霞, 高飞. 基于DHCPv6的大规模无线传感器网络地址管理协议的设计[J]. 云南民族大学学报(自然科学版), 2016(1).