本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,具體是一種控制多DHCP Server動(dòng)態(tài)分配主機(jī)地址的方法。
背景技術(shù):
在傳統(tǒng)的存在多DHCP服務(wù)器的局域網(wǎng)中,DHCP的工作原理為:
1.當(dāng)DHCP客戶機(jī)以廣播形式發(fā)送DHCPDiscover時(shí),所有的DHCP服務(wù)器都會(huì)做出回應(yīng),但DHCP客戶機(jī)只處理第一個(gè)收到的DHCPOffer報(bào)文;
2.DHCP客戶機(jī)仍會(huì)以廣播形式發(fā)送DHCPRequest報(bào)文給所有DHCP服務(wù)器,并在可項(xiàng)字段中會(huì)加入選中的DHCP Server的IP地址和需要的IP地址。目的是為了告訴其他沒(méi)被選中的DHCP服務(wù)器清除各自已生成的相應(yīng)IP地址分配記錄。
因而,傳統(tǒng)的存在多DHCP服務(wù)器的情況下,為了響應(yīng)DHCP客戶端,各DHCP服務(wù)器都需要回復(fù)請(qǐng)求消息,但只有其中一臺(tái)回復(fù)的消息會(huì)被使用,大大浪費(fèi)了帶寬。同時(shí),因?yàn)楦鱀HCP服務(wù)器之間沒(méi)有驗(yàn)證消息的存在,使得不懷好意的入侵者可以很容易的冒充成一臺(tái)DHCP服務(wù)器接入此局域網(wǎng),破壞用戶之間的正常通信。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明提供了一種控制多DHCP Server動(dòng)態(tài)分配主機(jī)地址的方法,即使局域網(wǎng)中的多臺(tái)DHCP服務(wù)器之間相互認(rèn)證,并選舉出一臺(tái)主服務(wù)器來(lái)完成動(dòng)態(tài)地址分配的工作。
本發(fā)明是以如下技術(shù)方案實(shí)現(xiàn)的:一種控制多DHCP Server動(dòng)態(tài)分配主機(jī)地址的方法其特征在于:在保證原DHCP報(bào)文不變的情況下,DHCP Server之間增加了兩個(gè)報(bào)文,分別是:
DHCPHello報(bào)文:用來(lái)驗(yàn)證DHCP服務(wù)器并組建DHCP服務(wù)器小組;
DHCPConsult報(bào)文:用來(lái)在DHCP Server之間選舉主、從DHCP服務(wù)器。
優(yōu)選的,當(dāng)局域網(wǎng)內(nèi)有多個(gè)DHCP Server時(shí),各DHCP Server之間的工作流程為:
(1)各DHCP服務(wù)器以廣播的形式發(fā)送DHCPHello報(bào)文,里面攜帶驗(yàn)證字段;
(2)局域網(wǎng)中的DHCPC客戶端收到這一報(bào)文后,不做任何處理,直接丟棄;
(3)各DHCP Server收到其他服務(wù)器發(fā)送的DHCPHello包后,將會(huì)打開(kāi)并查看里面的驗(yàn)證字段,如果與自身發(fā)送的DHCPHello包中的驗(yàn)證字段相符,則認(rèn)證成功并加入組中;如果驗(yàn)證失敗,則加組失??;
(4)DHCP服務(wù)器小組建成之后,各組成員在小組內(nèi)發(fā)送DHCPConsult報(bào)文,里面攜帶自身地址池中可用地址數(shù)目字段和本地環(huán)回地址;
(5)各DHCP Server收到其他組成員的DHCPConsult包后,將會(huì)拆開(kāi)并查看其中的地址池中可用地址數(shù)目字段和環(huán)回地址;
(6)各DHCP Server比較過(guò)后,地址池中可用地址數(shù)目最多的服務(wù)器將成為主服務(wù)器;如果有多個(gè)服務(wù)器地址池中可用地址數(shù)目相同,則比較各自的環(huán)回地址,環(huán)回地址大的成為主服務(wù)器,其余的成為從服務(wù)器;
(7)主DHCP服務(wù)器選定后,將由主DHCP Server完成地址分配的工作。
優(yōu)選的,主DHCP Server和DHCP Client之間的工作流程為:
(1)DHCP Client以廣播的方式發(fā)出DHCP Discover報(bào)文;
(2)所有的DHCP Server在收到DHCP Client發(fā)送的DHCPDiscover時(shí),只有主DHCP Server會(huì)給出響應(yīng),向DHCP Client發(fā)送一個(gè)DHCPOffer報(bào)文,其余的從DHCP Server都將會(huì)忽略此報(bào)文;
(3)DHCPOffer報(bào)文中會(huì)包含一個(gè)主DHCP Server能夠提供給DHCP Client使用的IP地址的字段,主DHCP Server在發(fā)出此報(bào)文后會(huì)存在一個(gè)已分配IP地址的記錄;
(4)DHCP Client收到主DHCP Server發(fā)送的DHCPOffer報(bào)文后,開(kāi)始處理;
(5)處理后,DHCP Client會(huì)以單播形式發(fā)送一個(gè)DHCPRequest報(bào)文給主 DHCP SERVER,在選項(xiàng)字段中會(huì)加入自己所需要的IP地址;
(6)主DHCP Server收到DHCPRequest報(bào)文后,會(huì)向DHCP Client響應(yīng)一個(gè)DHCPACK報(bào)文,并在選項(xiàng)字段中增加IP地址的使用租期信息;
(7)DHCP Client接收到DHCPACK報(bào)文后,檢查主DHCP Server分配的IP地址是否能夠使用;如果可以使用,則DHCP Client成功獲得IP地址并根據(jù)IP地址使用租期自動(dòng)啟動(dòng)續(xù)延過(guò)程;如果DHCP Client發(fā)現(xiàn)分配的IP地址已經(jīng)被使用,則DHCP Client向主DHCPServer發(fā)出DHCPDecline報(bào)文,通知主DHCP Server禁用這個(gè)IP地址,然后DHCP Client開(kāi)始新的地址申請(qǐng)過(guò)程,重復(fù)執(zhí)行步驟(1)—(6);
(8)DHCP Client在成功獲取IP地址后,隨可以通過(guò)發(fā)送DHCPRelease報(bào)文釋放自己的IP地址,主DHCP Server收到DHCP Release報(bào)文后,會(huì)回收相應(yīng)的IP地址并重新分配。
優(yōu)選的,步驟(3)中主DHCP Server將自己的IP地址放在option字段中。
優(yōu)選的,DHCPHello和DHCPConsult報(bào)文都是周期性發(fā)送。
工作原理:
(1)當(dāng)局域網(wǎng)內(nèi)存在多個(gè)DHCP服務(wù)器時(shí),各服務(wù)器之間通過(guò)發(fā)送DHCPHello報(bào)文進(jìn)行互相驗(yàn)證,驗(yàn)證通過(guò)后組成一個(gè)DHCP Server小組;
(2)小組建立后,各DHCP Server繼續(xù)發(fā)送DHCPConsult報(bào)文進(jìn)行主DHCP服務(wù)器的選舉,選舉規(guī)則為:地址池中地址數(shù)多者優(yōu)先,若數(shù)目相同,則環(huán)回地址最大的成為主服務(wù)器,其余DHCP Server成為從服務(wù)器,只有主服務(wù)器響應(yīng)客戶端的請(qǐng)求消息。
本發(fā)明的有益效果是:在保持原DHCP報(bào)文基本不變的情況下,解決了DHCP服務(wù)中出現(xiàn)的DHCP欺騙攻擊和多臺(tái)DHCP Server同時(shí)響應(yīng)DHCP Client浪費(fèi)帶寬的問(wèn)題。
附圖說(shuō)明
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
圖1為發(fā)明中網(wǎng)絡(luò)架構(gòu)整體示意圖;
圖2為各DHCP Server之間溝通示意圖;
圖3為主DHCP Server和DHCP Client之間溝通示意圖。
具體實(shí)施方式
如圖1所示,存在三個(gè)DHCP服務(wù)器,在為DHCP客戶端提供服務(wù)之前,三者需要進(jìn)行相互認(rèn)證,認(rèn)證成功后會(huì)建立一個(gè)服務(wù)器小組。進(jìn)而小組成員之間進(jìn)行協(xié)商,最終選定一臺(tái)為主DHCP服務(wù)器,另外兩臺(tái)為從DHCP服務(wù)器。主DHCP服務(wù)器選定后,就開(kāi)始為DHCP客戶端進(jìn)行服務(wù)了。DHCP客戶端只需要與主DHCP服務(wù)器之間溝通,便可以得到想要的IP地址。
如圖2所示,當(dāng)局域網(wǎng)內(nèi)有多個(gè)DHCP Server時(shí),各DHCP Server之間協(xié)商的具體步驟為:
(1)各DHCP服務(wù)器以廣播的形式發(fā)送DHCPHello報(bào)文,里面攜帶驗(yàn)證字段;
(2)局域網(wǎng)中的DHCPC客戶端收到這一報(bào)文后,不做任何處理,直接丟棄;
(3)各DHCP Server收到其他服務(wù)器發(fā)送的DHCPHello包后,將會(huì)打開(kāi)并查看里面的驗(yàn)證字段。如果與自身發(fā)送的DHCPHello包中的驗(yàn)證字段相符,則認(rèn)證成功并加入組中;如果驗(yàn)證失敗,則加組失敗;
(4)DHCP服務(wù)器小組建成之后,各組成員在小組內(nèi)發(fā)送DHCPConsult報(bào)文,里面攜帶自身地址池中可用地址數(shù)目字段和本地環(huán)回地址;
(5)各DHCP Server收到其他組成員的DHCPConsult包后,將會(huì)拆開(kāi)并查看其中的地址池中可用地址數(shù)目字段和環(huán)回地址;
(6)各DHCP Server比較過(guò)后,地址池中可用地址數(shù)目最多的服務(wù)器將成為主服務(wù)器;如果有多個(gè)服務(wù)器地址池中可用地址數(shù)目相同,則比較各自的環(huán)回地址,環(huán)回地址大的成為主服務(wù)器,其余的成為從服務(wù)器;
(7)主DHCP服務(wù)器選定后,將由主DHCP Server完成地址分配的工作;
(8)DHCPHello和DHCPConsult報(bào)文都是周期性發(fā)送的,因此主DHCP Server的身份會(huì)隨著地址池中可用地址數(shù)的變化而變化。
值得注意的是,主DHCP Server并不是一成不變的,會(huì)隨著地址池中可用地址數(shù)的變化而發(fā)生改變,這樣也可以使每一個(gè)DHCP Server不止與過(guò)早枯竭。
如圖3所示,主DHCP Server和主機(jī)群(DHCP Client)之間溝通的具體步驟如下:
(1)DHCP Client以廣播的方式發(fā)出DHCP Discover報(bào)文;
(2)所有的DHCP Server都能夠收到DHCP Client發(fā)送的DHCPDiscover報(bào)文,但只有主DHCP Server會(huì)給出響應(yīng),向DHCP Client發(fā)送一個(gè)DHCPOffer報(bào)文。其余的從DHCP Server都將會(huì)忽略此報(bào)文;
(3)DHCPOffer報(bào)文中會(huì)包含一個(gè)主DHCP Server能夠提供給DHCP Client使用的IP地址的字段,并將自己的IP地址放在“option”字段中。主DHCP Server在發(fā)出此報(bào)文后會(huì)存在一個(gè)已分配IP地址的記錄;
(4)DHCP Client收到主DHCP Server發(fā)送的DHCPOffer報(bào)文后,開(kāi)始處理;
(5)處理后,DHCP Client會(huì)以單播形式發(fā)送一個(gè)DHCPRequest報(bào)文給主DHCP SERVER,在選項(xiàng)字段中會(huì)加入自己所需要的IP地址;
(6)主DHCP Server收到DHCPRequest報(bào)文后,會(huì)向DHCP Client響應(yīng)一個(gè)DHCPACK報(bào)文,并在選項(xiàng)字段中增加IP地址的使用租期信息;
(7)DHCP Client接收到DHCPACK報(bào)文后,檢查主DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址并根據(jù)IP地址使用租期自動(dòng)啟動(dòng)續(xù)延過(guò)程;如果DHCP Client發(fā)現(xiàn)分配的IP地址已經(jīng)被使用,則DHCP Client向主DHCPServer發(fā)出DHCPDecline報(bào)文,通知主DHCP Server禁用這個(gè)IP地址,然后DHCP Client開(kāi)始新的地址申請(qǐng)過(guò)程。重復(fù)執(zhí)行步驟(1)—(6);
(8)DHCP Client在成功獲取IP地址后,隨時(shí)可以通過(guò)發(fā)送DHCPRelease報(bào)文釋放自己的IP地址,主DHCP Server收到DHCP Release報(bào)文后,會(huì)回收相應(yīng)的IP地址并重新分配。