嵌入式Linux环境下DHCPv6服务的实现

2011-10-09 09:45彭宇雨郭书军
电子设计工程 2011年23期
关键词:开发板配置文件消息

彭宇雨,郭书军

(北方工业大学 信息工程学院,北京 100144)

随着网络技术的飞速发展和普及,网络和单机节点的数目急速增长,现有的IPv4地址短缺的情况日益严重,IPv4地址空间的限制已经成为未来网络技术发展的一个瓶颈。为解决这一问题,用于取代IPv4的下一代互联网协议IPv6随之诞生。IPv6具有许多新的功能和特性,其中128位的地址空间解决了最为关键的地址不足的问题,任何一个设备都可以拥有一个全球唯一的IPv6地址,这使得任何一个电子设备连接到Internet成为了可能[1]。

嵌入式技术快速发展,越来越多的嵌入式设备接入网络,嵌入式设备对于IPv6的支持也成为必然要求,而实现IPv6地址自动配置的DHCPv6服务却是IPv6技术的关键。

1 IPv6简介

IPv4显然无法满足未来网络发展的需求,IPv6[2]取代IPv4将是必然。IPv6与IPv4相比主要增加了以下一些新特点。

1)扩展地址:IPv6的地址结构中除了把32位地址空间扩展到了128位外,还对IP主机可能获得的不同类型地址作了一些调整。IPv6中取消了广播地址而代之以任意点播地址。IPv4中用于指定一个网络接口的单播地址和用于指定由一个或多个主机侦听的组播地址基本不变。IPv6的扩展地址意味着IP可以继续增长而无需考虑资源的匮乏,该地址结构对于提高路由效率有所帮助。

2)简化的包头:IPv6中包头总长为40字节包括8个字段,其中两个是源地址和目的地。IPv6使用了固定格式的包头并减少了需要检查和处理的字段的数量,这将使得选路的效率更高。

3)对扩展和选项支持的改进:在IPv4中可以在IP头的尾部加入选项,与此不同,IPv6中把选项加在单独的扩展头中。通过这种方法,选项头只有在必要的时候才需要检查和处理。改进对头扩展和选项的支持意味着可以在几乎不影响普通数据包和特殊包选路的前提下适应更多的特殊需求。

4)流:IPv6实现了流概念。流指的是从一个特定源发向一个特定(单播或者是组播)目的地的包序列,源点希望中间路由器对这些包进行特殊处理。路由器需要对流进行跟踪并保持一定的信息,这些信息在流中的每个包中都是不变的。这种方法使路由器可以对流中的包进行高效处理。

5)身份验证和保密:IPv6使用了两种安全性扩展,IP身份验证头(AH)和IP封装安全性净荷(ESP)。身份验证和保密方面的改进使得IPv6更加适用于那些要求对敏感信息和资源特别对待的商业应用。

2 DHCPv6技术概要

DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的动态主机配置协议)是针对IPv6编址方案设计的,为主机分配IPv6前缀、IPv6地址和其他网络配置参数的协议。与其他 IPv6地址分配方式(手工配置、通过路由器公告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:

1)不仅可以分配IPv6地址,还可以分配IPv6前缀,便于全网络的自动配置和管理。

2)更好地控制地址的分配。通过DHCPv6不仅可以记录为主机分配的地址/前缀,还可以为特定主机分配特定的地址/前缀,以便于网络管理。

3)除了 IPv6前缀、IPv6地址外,还可以为主机分配DNS服务器、域名等网络配置参数[3]。

2.1 DHCPv6的网络构成

DHCPv6的网络构成包括3部分,分别是DHCPv6客户端,DHCPv6服务器和DHCPv6中继,如图1所示。

图1 DHCPv6的网络构成图Fig.1 Network structure of DHCPv6

1)DHCPv6客户端:动态获取IPv6地址、IPv6前缀或其他网络配置参数的设备。

2)DHCPv6服务器:负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他网络配置参数的设备。DHCPv6服务器不仅可以为DHCPv6客户端分配IPv6地址,还可以为其分配IPv6前缀。DHCPv6服务器为DHCPv6客户端分配IPv6前缀后,DHCPv6客户端向所在网络发送包含该前缀信息的RA消息,以便网络内的主机根据该前缀自动配置IPv6地址。

3)DHCPv6中继:DHCPv6客户端通过本地链路范围的组播地址与DHCPv6服务器通信,以获取IPv6地址和其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继来转发报文,这样可以避免在每个链路范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理[4]。

2.2 DHCPv6 地址/前缀分配过程

DHCPv6服务器为客户端分配地址/前缀的过程则分为两类:交互两个消息的快速分配过程和交互4个消息的分配过程[5]。

1)交互两个消息的快速分配过程:DHCPv6客户端在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数。如果DHCPv6服务器支持快速分配过程,则直接返回Reply消息,为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配过程,则采用交互4个消息的分配过程为客户端分配IPv6地址/前缀和其他网络配置参数,如图2所示。

2)交互4个消息的分配过程:DHCPv6客户端发送Solicit消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数。如果Solicit消息中没有携带Rapid Commit选项,或Solicit消息中携带Rapid Commit选项,但服务器不支持快速分配过程,则DHCPv6服务器回复Advertise消息,通知客户端可以为其分配的地址/前缀和网络配置参数。如果DHCPv6客户端接收到多个服务器回复的Advertise消息,则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数。DHCPv6服务器回复Reply消息,确认将地址/前缀和网络配置参数分配给客户端使用,如图3所示。

图2 交互两个消息的快速分配过程Fig.2 Rapid distribution process with two messages interaction

图3 交互4个消息的分配过程Fig.3 Distribution process with four messages interaction

3 DHCPv6在Linux下的实现

3.1 IPv6环境的建立

Linux2.2.0及其以后版本都支持IPv6,按照以下步骤建立IPv6环境。

1)检测安装IPv6模块。

查看/proc/net目录下是否有if_inet6运行,如果没有则执行以下命令加载Ipv6模块[6]。

2)修改网络配置文件,使其支持IPv6网络。

在其中进行如下设置:

3)修改eth0的配置文件,设置eth0。

在其中进行如下设置:

4)重新启动网络服务。

#service network restart

按照以上步骤可建立好PC机上Linux的IPv6环境,HH6410开发板上Linux的IPv6环境的建立步骤大体一致,但是在内核编译时一定要将IPv6模块编译进去,然后在开发板的启动初始化脚本里配置好相关参数便可。

3.2 ISC DHCP服务器的安装和配置

ISC DHCP软件包自从4.0的版本开始就支持IPv6的DHCPv6服务。该软件包包含3个单独的程序,分别是dhcpd(DHCP 服务器),dhclient (DHCP 客户端)和 dhcrelay(DHCP中继)。这些程序都能支持IPv4和IPv6,但是在同一时刻只能在一种协议下工作。如果需要同时支持IPv4和IPv6需要以IPv4和IPv6的方式分别启动服务。

文中使用的是dhcp-4.1.1-P1的版本。首先从网上下载源代码包dhcp-4.1.1-P1.tar.gz,然后按照以下步骤可以完成安装:

在PC机Linux下执行以上操作完成安装,程序会自动将相关配置文件如dhcpd.conf和dhclient.conf拷贝到/etc目录下,这两个文件分别是DHCP服务器和客户端的配置文件,存放相关的配置信息。[7]可根据实际情况对其中的配置信息进行修改。

在PC上启动服务器前还需要创建一个文件,执行命令:

然后进入到dhcp-4.1.1-P1目录下的server文件夹执行以下命令启动DHCP服务器:

3.3 ISC DHCP的客户端应用

由于本文的客户端是和服务器端PC机连接在一个网络的HH6410开发板,所以客户端的安装和服务器的安装有所不同,需要进行交叉编译,将ISC DHCP移植到开发板的ARM11平台下运行。

声明环境变量:

解压 dhcp-4.1.1-P1.tar.gz文件:

进入目录执行:

执行完后会自动生成移植的makefile文件,然后执行make交叉编译。

进入client目录,将其中的编译完成的客户端可执行文件dhclient拷贝到开发板的/sbin目录下,将其中的客户端配置文件dhclient.conf拷贝到开发板的/etc目录下,进入到client/scripts目录下,将其中的Linux文件拷贝为dhclientscript,然后将dhclient-script文件拷贝到开发板的/etc目录下。可以根据实际情况对相关配置文件进行修改。

在开发板环境下执行如下命令:

然后进入开发板的/sbin目录下执行如下命令启动开发板上的客户端程序:

#./dhclient-d-6-cf/etc/dhclient.conf-sf/etc/dhclient-script eth0

客户端程序启动,查看打印的调试信息可以看到服务器给客户端分配的IPv6地址。

4 结束语

IPv6取代IPv4在不久的将来就会必然实现,而手动配置分配IPv6地址比较麻烦,尤其是地址规划更为困难。现在,移动嵌入式终端设备数量急速增加,对移动主机地址变动较多,手动的配置方式显然无法满足要求。实现IPv6地址自动配置的DHCPv6服务此时就显得极为重要,它不但解决了手动配置的费时,易出错等缺点,还能使主机不管在何种情况下都能快捷的连入网络。未来DHCPv6服务的应用会越来越广泛。

[1]楼俊青,潘雪增,平玲娣.Pv6下动态主机配置协议的研究与设计实现[J].计算机应用,2003,23(9):79-81.

LOU Jun-qing,PAN Xue-zeng, PING Ling-di.Study and implementation of dynamic host configuration protocol for IPv6[J].Computer Applications,2003,23(9):79-81.

[2]Ldshin P.沙斐等译.IPv6详解[M].北京:机械工业出版社,2002.

[3]曹玖新,张德运,丁会宁.新一代协议IPv6自动地址配置的实现[J].小型计算机系统,2002,23(4):424-426.

CAO Jiu-xin,ZHANG De-yun,DING Hui-ning.Implementation of IPv6 address autoconfiguration[J].Mini-micro Systems,2002,23(4):424-426.

[4]Droom R,Bound J,Volz B,et al.Dynamic Host Configuration Protocol for IPv6(DHCPv6)[S].draft-ietf-dhc-dhcpv6-28.txt,2002.

[5]刘小刚,张思东.基于嵌入式IPv6的自动地址配置研究与实现[J].北京交通大学学报,2005,29(2):54-57.

LIU Xiao-gang,ZHANG Si-dong.Research and implementation of address auto-configuration based on embedded IPv6[J].Journal of Beijing Jiaotong University, 2005,29(2):54-57.

[6]胡维华.Linux网络管理及应用[M].北京:电子工业出版社,2008.

[7]林慧琛.Red Hat Linux服务器配置与应用[M].北京:人民邮电出版社,2006.

猜你喜欢
开发板配置文件消息
一张图看5G消息
互不干涉混用Chromium Edge
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
为View桌面准备父虚拟机
浅析单片机开发板的设计与制作
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
消息
消息
消息