彭宇雨,郭書軍
(北方工業(yè)大學(xué) 信息工程學(xué)院,北京 100144)
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和普及,網(wǎng)絡(luò)和單機(jī)節(jié)點(diǎn)的數(shù)目急速增長,現(xiàn)有的IPv4地址短缺的情況日益嚴(yán)重,IPv4地址空間的限制已經(jīng)成為未來網(wǎng)絡(luò)技術(shù)發(fā)展的一個(gè)瓶頸。為解決這一問題,用于取代IPv4的下一代互聯(lián)網(wǎng)協(xié)議IPv6隨之誕生。IPv6具有許多新的功能和特性,其中128位的地址空間解決了最為關(guān)鍵的地址不足的問題,任何一個(gè)設(shè)備都可以擁有一個(gè)全球唯一的IPv6地址,這使得任何一個(gè)電子設(shè)備連接到Internet成為了可能[1]。
嵌入式技術(shù)快速發(fā)展,越來越多的嵌入式設(shè)備接入網(wǎng)絡(luò),嵌入式設(shè)備對(duì)于IPv6的支持也成為必然要求,而實(shí)現(xiàn)IPv6地址自動(dòng)配置的DHCPv6服務(wù)卻是IPv6技術(shù)的關(guān)鍵。
IPv4顯然無法滿足未來網(wǎng)絡(luò)發(fā)展的需求,IPv6[2]取代IPv4將是必然。IPv6與IPv4相比主要增加了以下一些新特點(diǎn)。
1)擴(kuò)展地址:IPv6的地址結(jié)構(gòu)中除了把32位地址空間擴(kuò)展到了128位外,還對(duì)IP主機(jī)可能獲得的不同類型地址作了一些調(diào)整。IPv6中取消了廣播地址而代之以任意點(diǎn)播地址。IPv4中用于指定一個(gè)網(wǎng)絡(luò)接口的單播地址和用于指定由一個(gè)或多個(gè)主機(jī)偵聽的組播地址基本不變。IPv6的擴(kuò)展地址意味著IP可以繼續(xù)增長而無需考慮資源的匱乏,該地址結(jié)構(gòu)對(duì)于提高路由效率有所幫助。
2)簡(jiǎn)化的包頭:IPv6中包頭總長為40字節(jié)包括8個(gè)字段,其中兩個(gè)是源地址和目的地。IPv6使用了固定格式的包頭并減少了需要檢查和處理的字段的數(shù)量,這將使得選路的效率更高。
3)對(duì)擴(kuò)展和選項(xiàng)支持的改進(jìn):在IPv4中可以在IP頭的尾部加入選項(xiàng),與此不同,IPv6中把選項(xiàng)加在單獨(dú)的擴(kuò)展頭中。通過這種方法,選項(xiàng)頭只有在必要的時(shí)候才需要檢查和處理。改進(jìn)對(duì)頭擴(kuò)展和選項(xiàng)的支持意味著可以在幾乎不影響普通數(shù)據(jù)包和特殊包選路的前提下適應(yīng)更多的特殊需求。
4)流:IPv6實(shí)現(xiàn)了流概念。流指的是從一個(gè)特定源發(fā)向一個(gè)特定(單播或者是組播)目的地的包序列,源點(diǎn)希望中間路由器對(duì)這些包進(jìn)行特殊處理。路由器需要對(duì)流進(jìn)行跟蹤并保持一定的信息,這些信息在流中的每個(gè)包中都是不變的。這種方法使路由器可以對(duì)流中的包進(jìn)行高效處理。
5)身份驗(yàn)證和保密:IPv6使用了兩種安全性擴(kuò)展,IP身份驗(yàn)證頭(AH)和IP封裝安全性凈荷(ESP)。身份驗(yàn)證和保密方面的改進(jìn)使得IPv6更加適用于那些要求對(duì)敏感信息和資源特別對(duì)待的商業(yè)應(yīng)用。
DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的動(dòng)態(tài)主機(jī)配置協(xié)議)是針對(duì)IPv6編址方案設(shè)計(jì)的,為主機(jī)分配IPv6前綴、IPv6地址和其他網(wǎng)絡(luò)配置參數(shù)的協(xié)議。與其他 IPv6地址分配方式(手工配置、通過路由器公告消息中的網(wǎng)絡(luò)前綴無狀態(tài)自動(dòng)配置等)相比,DHCPv6具有以下優(yōu)點(diǎn):
1)不僅可以分配IPv6地址,還可以分配IPv6前綴,便于全網(wǎng)絡(luò)的自動(dòng)配置和管理。
2)更好地控制地址的分配。通過DHCPv6不僅可以記錄為主機(jī)分配的地址/前綴,還可以為特定主機(jī)分配特定的地址/前綴,以便于網(wǎng)絡(luò)管理。
3)除了 IPv6前綴、IPv6地址外,還可以為主機(jī)分配DNS服務(wù)器、域名等網(wǎng)絡(luò)配置參數(shù)[3]。
DHCPv6的網(wǎng)絡(luò)構(gòu)成包括3部分,分別是DHCPv6客戶端,DHCPv6服務(wù)器和DHCPv6中繼,如圖1所示。
圖1 DHCPv6的網(wǎng)絡(luò)構(gòu)成圖Fig.1 Network structure of DHCPv6
1)DHCPv6客戶端:動(dòng)態(tài)獲取IPv6地址、IPv6前綴或其他網(wǎng)絡(luò)配置參數(shù)的設(shè)備。
2)DHCPv6服務(wù)器:負(fù)責(zé)為DHCPv6客戶端分配IPv6地址、IPv6前綴和其他網(wǎng)絡(luò)配置參數(shù)的設(shè)備。DHCPv6服務(wù)器不僅可以為DHCPv6客戶端分配IPv6地址,還可以為其分配IPv6前綴。DHCPv6服務(wù)器為DHCPv6客戶端分配IPv6前綴后,DHCPv6客戶端向所在網(wǎng)絡(luò)發(fā)送包含該前綴信息的RA消息,以便網(wǎng)絡(luò)內(nèi)的主機(jī)根據(jù)該前綴自動(dòng)配置IPv6地址。
3)DHCPv6中繼:DHCPv6客戶端通過本地鏈路范圍的組播地址與DHCPv6服務(wù)器通信,以獲取IPv6地址和其他網(wǎng)絡(luò)配置參數(shù)。如果服務(wù)器和客戶端不在同一個(gè)鏈路范圍內(nèi),則需要通過DHCPv6中繼來轉(zhuǎn)發(fā)報(bào)文,這樣可以避免在每個(gè)鏈路范圍內(nèi)都部署DHCPv6服務(wù)器,既節(jié)省了成本,又便于進(jìn)行集中管理[4]。
DHCPv6服務(wù)器為客戶端分配地址/前綴的過程則分為兩類:交互兩個(gè)消息的快速分配過程和交互4個(gè)消息的分配過程[5]。
1)交互兩個(gè)消息的快速分配過程:DHCPv6客戶端在發(fā)送的Solicit消息中攜帶Rapid Commit選項(xiàng),標(biāo)識(shí)客戶端希望服務(wù)器能夠快速為其分配地址/前綴和網(wǎng)絡(luò)配置參數(shù)。如果DHCPv6服務(wù)器支持快速分配過程,則直接返回Reply消息,為客戶端分配IPv6地址/前綴和其他網(wǎng)絡(luò)配置參數(shù)。如果DHCPv6服務(wù)器不支持快速分配過程,則采用交互4個(gè)消息的分配過程為客戶端分配IPv6地址/前綴和其他網(wǎng)絡(luò)配置參數(shù),如圖2所示。
2)交互4個(gè)消息的分配過程:DHCPv6客戶端發(fā)送Solicit消息,請(qǐng)求DHCPv6服務(wù)器為其分配IPv6地址/前綴和網(wǎng)絡(luò)配置參數(shù)。如果Solicit消息中沒有攜帶Rapid Commit選項(xiàng),或Solicit消息中攜帶Rapid Commit選項(xiàng),但服務(wù)器不支持快速分配過程,則DHCPv6服務(wù)器回復(fù)Advertise消息,通知客戶端可以為其分配的地址/前綴和網(wǎng)絡(luò)配置參數(shù)。如果DHCPv6客戶端接收到多個(gè)服務(wù)器回復(fù)的Advertise消息,則根據(jù)消息接收的先后順序、服務(wù)器優(yōu)先級(jí)等,選擇其中一臺(tái)服務(wù)器,并向該服務(wù)器發(fā)送Request消息,請(qǐng)求服務(wù)器確認(rèn)為其分配地址/前綴和網(wǎng)絡(luò)配置參數(shù)。DHCPv6服務(wù)器回復(fù)Reply消息,確認(rèn)將地址/前綴和網(wǎng)絡(luò)配置參數(shù)分配給客戶端使用,如圖3所示。
圖2 交互兩個(gè)消息的快速分配過程Fig.2 Rapid distribution process with two messages interaction
圖3 交互4個(gè)消息的分配過程Fig.3 Distribution process with four messages interaction
Linux2.2.0及其以后版本都支持IPv6,按照以下步驟建立IPv6環(huán)境。
1)檢測(cè)安裝IPv6模塊。
查看/proc/net目錄下是否有if_inet6運(yùn)行,如果沒有則執(zhí)行以下命令加載Ipv6模塊[6]。
2)修改網(wǎng)絡(luò)配置文件,使其支持IPv6網(wǎng)絡(luò)。
在其中進(jìn)行如下設(shè)置:
3)修改eth0的配置文件,設(shè)置eth0。
在其中進(jìn)行如下設(shè)置:
4)重新啟動(dòng)網(wǎng)絡(luò)服務(wù)。
#service network restart
按照以上步驟可建立好PC機(jī)上Linux的IPv6環(huán)境,HH6410開發(fā)板上Linux的IPv6環(huán)境的建立步驟大體一致,但是在內(nèi)核編譯時(shí)一定要將IPv6模塊編譯進(jìn)去,然后在開發(fā)板的啟動(dòng)初始化腳本里配置好相關(guān)參數(shù)便可。
ISC DHCP軟件包自從4.0的版本開始就支持IPv6的DHCPv6服務(wù)。該軟件包包含3個(gè)單獨(dú)的程序,分別是dhcpd(DHCP 服務(wù)器),dhclient (DHCP 客戶端)和 dhcrelay(DHCP中繼)。這些程序都能支持IPv4和IPv6,但是在同一時(shí)刻只能在一種協(xié)議下工作。如果需要同時(shí)支持IPv4和IPv6需要以IPv4和IPv6的方式分別啟動(dòng)服務(wù)。
文中使用的是dhcp-4.1.1-P1的版本。首先從網(wǎng)上下載源代碼包dhcp-4.1.1-P1.tar.gz,然后按照以下步驟可以完成安裝:
在PC機(jī)Linux下執(zhí)行以上操作完成安裝,程序會(huì)自動(dòng)將相關(guān)配置文件如dhcpd.conf和dhclient.conf拷貝到/etc目錄下,這兩個(gè)文件分別是DHCP服務(wù)器和客戶端的配置文件,存放相關(guān)的配置信息。[7]可根據(jù)實(shí)際情況對(duì)其中的配置信息進(jìn)行修改。
在PC上啟動(dòng)服務(wù)器前還需要?jiǎng)?chuàng)建一個(gè)文件,執(zhí)行命令:
然后進(jìn)入到dhcp-4.1.1-P1目錄下的server文件夾執(zhí)行以下命令啟動(dòng)DHCP服務(wù)器:
由于本文的客戶端是和服務(wù)器端PC機(jī)連接在一個(gè)網(wǎng)絡(luò)的HH6410開發(fā)板,所以客戶端的安裝和服務(wù)器的安裝有所不同,需要進(jìn)行交叉編譯,將ISC DHCP移植到開發(fā)板的ARM11平臺(tái)下運(yùn)行。
聲明環(huán)境變量:
解壓 dhcp-4.1.1-P1.tar.gz文件:
進(jìn)入目錄執(zhí)行:
執(zhí)行完后會(huì)自動(dòng)生成移植的makefile文件,然后執(zhí)行make交叉編譯。
進(jìn)入client目錄,將其中的編譯完成的客戶端可執(zhí)行文件dhclient拷貝到開發(fā)板的/sbin目錄下,將其中的客戶端配置文件dhclient.conf拷貝到開發(fā)板的/etc目錄下,進(jìn)入到client/scripts目錄下,將其中的Linux文件拷貝為dhclientscript,然后將dhclient-script文件拷貝到開發(fā)板的/etc目錄下??梢愿鶕?jù)實(shí)際情況對(duì)相關(guān)配置文件進(jìn)行修改。
在開發(fā)板環(huán)境下執(zhí)行如下命令:
然后進(jìn)入開發(fā)板的/sbin目錄下執(zhí)行如下命令啟動(dòng)開發(fā)板上的客戶端程序:
#./dhclient-d-6-cf/etc/dhclient.conf-sf/etc/dhclient-script eth0
客戶端程序啟動(dòng),查看打印的調(diào)試信息可以看到服務(wù)器給客戶端分配的IPv6地址。
IPv6取代IPv4在不久的將來就會(huì)必然實(shí)現(xiàn),而手動(dòng)配置分配IPv6地址比較麻煩,尤其是地址規(guī)劃更為困難?,F(xiàn)在,移動(dòng)嵌入式終端設(shè)備數(shù)量急速增加,對(duì)移動(dòng)主機(jī)地址變動(dòng)較多,手動(dòng)的配置方式顯然無法滿足要求。實(shí)現(xiàn)IPv6地址自動(dòng)配置的DHCPv6服務(wù)此時(shí)就顯得極為重要,它不但解決了手動(dòng)配置的費(fèi)時(shí),易出錯(cuò)等缺點(diǎn),還能使主機(jī)不管在何種情況下都能快捷的連入網(wǎng)絡(luò)。未來DHCPv6服務(wù)的應(yīng)用會(huì)越來越廣泛。
[1]樓俊青,潘雪增,平玲娣.Pv6下動(dòng)態(tài)主機(jī)配置協(xié)議的研究與設(shè)計(jì)實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,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].北京:機(jī)械工業(yè)出版社,2002.
[3]曹玖新,張德運(yùn),丁會(huì)寧.新一代協(xié)議IPv6自動(dòng)地址配置的實(shí)現(xiàn)[J].小型計(jì)算機(jī)系統(tǒng),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的自動(dòng)地址配置研究與實(shí)現(xiàn)[J].北京交通大學(xué)學(xué)報(bào),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網(wǎng)絡(luò)管理及應(yīng)用[M].北京:電子工業(yè)出版社,2008.
[7]林慧琛.Red Hat Linux服務(wù)器配置與應(yīng)用[M].北京:人民郵電出版社,2006.