彭宇雨,郭書軍
(北方工業大學 信息工程學院,北京 100144)
隨著網絡技術的飛速發展和普及,網絡和單機節點的數目急速增長,現有的IPv4地址短缺的情況日益嚴重,IPv4地址空間的限制已經成為未來網絡技術發展的一個瓶頸。為解決這一問題,用于取代IPv4的下一代互聯網協議IPv6隨之誕生。IPv6具有許多新的功能和特性,其中128位的地址空間解決了最為關鍵的地址不足的問題,任何一個設備都可以擁有一個全球唯一的IPv6地址,這使得任何一個電子設備連接到Internet成為了可能[1]。
嵌入式技術快速發展,越來越多的嵌入式設備接入網絡,嵌入式設備對于IPv6的支持也成為必然要求,而實現IPv6地址自動配置的DHCPv6服務卻是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更加適用于那些要求對敏感信息和資源特別對待的商業應用。
DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的動態主機配置協議)是針對IPv6編址方案設計的,為主機分配IPv6前綴、IPv6地址和其他網絡配置參數的協議。與其他 IPv6地址分配方式(手工配置、通過路由器公告消息中的網絡前綴無狀態自動配置等)相比,DHCPv6具有以下優點:
1)不僅可以分配IPv6地址,還可以分配IPv6前綴,便于全網絡的自動配置和管理。
2)更好地控制地址的分配。通過DHCPv6不僅可以記錄為主機分配的地址/前綴,還可以為特定主機分配特定的地址/前綴,以便于網絡管理。
3)除了 IPv6前綴、IPv6地址外,還可以為主機分配DNS服務器、域名等網絡配置參數[3]。
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]。
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
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模塊編譯進去,然后在開發板的啟動初始化腳本里配置好相關參數便可。
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服務器:

由于本文的客戶端是和服務器端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地址。
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.