文/朱寶林 沈富可
校園網(wǎng)中DHCP的部署研究
文/朱寶林 沈富可
對于有大量主機(jī)的校園網(wǎng)內(nèi)網(wǎng),一般采用DHCP動態(tài)地址分配方案。本文描述了三種常見的DHCP實(shí)施方案,并比較了其優(yōu)缺點(diǎn),同時結(jié)合校園網(wǎng)的實(shí)際情況找出一種最適合的方案。
早期的保障服務(wù)器穩(wěn)定運(yùn)行方案是配置兩臺以上的DHCP服務(wù)器,保證有一定的冗余度,假如其中的一臺DHCP服務(wù)器出現(xiàn)故障,另外一臺DHCP服務(wù)器就會承擔(dān)分配IP地址的任務(wù),但用戶并不會察覺到DHCP服務(wù)器的變化。部署另一臺服務(wù)器來提供不重復(fù)的IP地址服務(wù),如果一臺服務(wù)器出了故障,用戶可以從另一臺服務(wù)器接收地址。在這種方案下,可以設(shè)定主次服務(wù)器地址范圍比80:20或者50:50。DHCP協(xié)議有一種內(nèi)在的冗余格式:如果IP地址租用12天,那么與服務(wù)器的連接每6天驗證一次。這樣,如果服務(wù)器出了故障,客戶還有至少6天的時間使設(shè)備恢復(fù)正常,以保證租用不受影響。故障只會影響新部署工作站的IP地址。
這種解決方案使得地址范圍增加,并且由于服務(wù)器之間沒有交流,因此也不能預(yù)測從哪一臺服務(wù)器上指派地址租用。由此引入改進(jìn)的冗余備份實(shí)現(xiàn)方式是:安裝一臺次服務(wù)器指派與原服務(wù)器地址范圍相同。任何添加或遷移只需從次服務(wù)器獲得地址。當(dāng)暫時租用時限過半時,將更新到主服務(wù)器。另外,還有一臺在主服務(wù)器失效時啟動的DHCP備用服務(wù)器,減少主服務(wù)器宕機(jī)帶來的影響。
采用DHCP冗余備份會存在以下問題:第一,IP地址空間不足。當(dāng)有一個DHC服務(wù)器發(fā)生故障時,只有另外一個服務(wù)器的地址空間提供服務(wù),但是為了防止IP地址沖突,兩個服務(wù)器地址池一定不一樣,因此另外一個地址空間只能分配給一個網(wǎng)段的一半。第二,主機(jī)的連接不能永遠(yuǎn)提供在線連接,可能會中斷后再連接。當(dāng)有一個DHCP服務(wù)器發(fā)生故障后,當(dāng)從此服務(wù)器獲的客戶端的IP地址到期時,它不能得到新的I P地址續(xù)用,就會中斷連接,重啟動DISCOVERY 過程,造成一定時間的網(wǎng)絡(luò)連接中斷。
由此可見,簡單的DHCP冗余解決服務(wù)器安全運(yùn)行的問題的代價是付出較多的資源。隨著時間的發(fā)展,出現(xiàn)的針對服務(wù)器運(yùn)行安全的DHCP故障恢復(fù)草案(RFC2131),允許兩臺或多臺服務(wù)器指派相同的地址范圍,定義了主次服務(wù)器之間的交流信號,有效地解決了IP地址浪費(fèi)的問題。
DHCP服務(wù)器故障恢復(fù)最新草案是相對于方案一的DHCP冗余備份進(jìn)步,使主服務(wù)器和備份服務(wù)器之間有了更多的交流。本方案允許兩臺或多臺服務(wù)器指派相同的地址范圍。主服務(wù)器分發(fā)租用,次服務(wù)器監(jiān)視主服務(wù)器的狀態(tài)。兩臺服務(wù)器在所有時間彼此共享租用信息。為防止復(fù)制IP地址的可能性,次服務(wù)器有自己的地址庫,以備主服務(wù)器失效時使用。主服務(wù)器和次服務(wù)器使用同步,以保證冗余度。
DHCP故障恢復(fù)草案定義了三種類型的服務(wù)器到服務(wù)器的信號:服務(wù)器租用同步信號、操作狀態(tài)信號及“我回來了”信號來同步地址租用信息,以便任何簽約用戶能用任一臺服務(wù)器更新。服務(wù)器租用同步信號用于主次服務(wù)器間交流主服務(wù)器地址池內(nèi)地址租用狀況;操作狀態(tài)信號,是主次服務(wù)器間傳送的問候包;“我回來了”信號是在主服務(wù)器死機(jī)恢復(fù)后向接管主服務(wù)器分發(fā)地址的次服務(wù)器發(fā)出的信號,用于協(xié)調(diào)收回地址分發(fā)角色。這些信號都以標(biāo)準(zhǔn)DHCP包編碼。
冗余DHCP服務(wù)器遵循DHCP故障恢復(fù)草案,通過服務(wù)器租用同步信號彼此交流租用信息。當(dāng)兩臺服務(wù)器工作正常時,主次服務(wù)器間會有連續(xù)的信息流用來交流租用信息:當(dāng)有客戶端請求IP地址租用時,由主服務(wù)器分發(fā)出一個新租約,主服務(wù)器發(fā)送添加信號到次服務(wù)器,當(dāng)租用期到達(dá)更新狀態(tài)時,租約會有變化,服務(wù)器發(fā)送刷新信號;當(dāng)租約期滿,服務(wù)器收回地址,地址又成為可用的了,服務(wù)器發(fā)送刪除信號。在所有情況下,接收方服務(wù)器以肯定或否定的認(rèn)可信號來響應(yīng)。這些信號只有在請求DHCP客戶處理完畢后才發(fā)送給另一臺服務(wù)器。
除了和主服務(wù)器同步維護(hù)當(dāng)前的租用信息數(shù)據(jù)庫外,次服務(wù)器通過監(jiān)視兩臺服務(wù)器的TCP連接來實(shí)現(xiàn)來留意主服務(wù)器,以便得知何時取代租用的分發(fā)。次服務(wù)器使用三個標(biāo)準(zhǔn)以確定它和主服務(wù)器的連接是否滿意:一,必須能建立TCP連接;二,必須接收到主服務(wù)器發(fā)送的連接信號,并以連接認(rèn)可響應(yīng);三,必須接收到主服務(wù)器發(fā)出的狀態(tài)信號,用它來確定自己的操作狀態(tài)。
當(dāng)主服務(wù)器出故障復(fù)活了,想收回次服務(wù)器的控制權(quán),只需要向次服務(wù)器發(fā)送信號,啟動三個信號序列:控制請求、控制恢復(fù)初始和控制恢復(fù)完成。
DHCP負(fù)載平衡算法(RFC3074)最初用來支持特定的DHCP失敗請求協(xié)議的負(fù)載平衡優(yōu)化,后來推廣到用來優(yōu)化多個合作的DHCP服務(wù)器。
由于客戶機(jī)采用UDP廣播來聯(lián)系DHCP 服務(wù)器,客戶機(jī)的DHCPDISCOVER報文可以被多臺服務(wù)器接收到。所有接收到這條廣播的服務(wù)器會對客戶機(jī)做出響應(yīng),于是客戶機(jī)會收到多個服務(wù)器發(fā)送DHCPOFFER報文,每個響應(yīng)報文都帶有客戶配置信息,以及服務(wù)器向客戶提供的IP地址,由客戶端決定選擇接受哪一臺服務(wù)器提供的響應(yīng)。
在DHCP負(fù)載平衡算法中建議了一種實(shí)現(xiàn)服務(wù)器的負(fù)載均衡方法:它讓多個合作的服務(wù)器使用散列算法,根據(jù)服務(wù)器端散列存儲的客戶機(jī)MAC 地址,將不同的MAC地址的DHCP請求發(fā)送給不同的DHCP服務(wù)器,由算法決定哪一個服務(wù)器來為客戶提供IP地址,而不必在初始設(shè)置時作任何信息交換。本方案中,參與服務(wù)的服務(wù)器都擁有一個SID(可以是服務(wù)器的IP地址或者DNS名字),通過散列算法找出響應(yīng)服務(wù)器,直接將客戶端的請求報文送達(dá)響應(yīng)服務(wù)器,這種一對一的響應(yīng)協(xié)商,減少了客戶端選擇服務(wù)器的步驟,進(jìn)而提高了DHCP工作效率。
DHCP負(fù)載平衡算法能夠在現(xiàn)有多個服務(wù)器之間實(shí)現(xiàn)請求的合理分配,避免服務(wù)器處理來自客戶端請求的不均衡。為了在主次服務(wù)器之間實(shí)現(xiàn)負(fù)載均衡算法,兩個服務(wù)器都必須能夠決定響應(yīng)哪些客戶端的DHCPDISCOVER,因此要求服務(wù)器能夠通過客戶端的請求報文快速決定是否為此客戶端服務(wù)。此外,DHCP負(fù)載平衡算法還能夠配置主次服務(wù)器服務(wù)客戶端數(shù)量的百分比,由于客戶機(jī)請求的隨機(jī)性難以預(yù)測,對短期而言,實(shí)際的客戶機(jī)得到的請求百分比會偏離期望的百分比,但是隨著請求次數(shù)的增加,服務(wù)器的負(fù)載百分比就會達(dá)到設(shè)定值,因此很好地實(shí)現(xiàn)了DHCP服務(wù)器的負(fù)載均衡。隨后將使用支持DHCP負(fù)載平衡算法和故障恢復(fù)草案的CNR7.1來進(jìn)行部署實(shí)驗。
我們準(zhǔn)備了兩個裝有CNR7.1的Linux主機(jī)當(dāng)作拓?fù)渲械姆?wù)器,一個交換機(jī)和四臺客戶機(jī)。
具體測試過程如下:
第1步,為兩個服務(wù)器設(shè)置IP地址Click DHCP , then Failover to open the List DHCP Failover Pairs page.創(chuàng)建 。服務(wù)器1的地址192.168.27.2;服務(wù)器2的地址192.168.27.102,兩服務(wù)器地址池范圍相同:192.168.27.10-192.168.27.100
第 2步,用CNR提供的負(fù)載均衡功能配置 DHCP 負(fù)載均衡對:CNR提供了配置負(fù)載均衡對的功能,需要服務(wù)器的地址、登錄用戶名及密碼,設(shè)置服務(wù)器負(fù)載百分比為50:50,在網(wǎng)絡(luò)連接通暢的情況下,所設(shè)置成負(fù)載均衡對的服務(wù)器之間就可以使用CNR進(jìn)行交流,從而由CNR經(jīng)過DHC負(fù)載平衡算法,決定將客戶端的請求送給哪個DHCP服務(wù)器。
客戶端PC1和PC4從服務(wù)器2(IP地址為:192.168.27.102)獲得地址,PC2和PC3從服務(wù)器1(IP地址為:192.168.27.2)獲得地址,這里可以看到服務(wù)器負(fù)載百分比正好是50:50和設(shè)定值一樣,但是由于前面所提到的客戶機(jī)請求的隨機(jī)性,DHCP負(fù)載平衡算法并不能保證少量客戶端請求的正確性,但是這個結(jié)果可以證明在使用DHCP負(fù)載平衡算法的CNR上進(jìn)行服務(wù)器的負(fù)載平衡設(shè)置是可行的。
第3步,設(shè)置故障轉(zhuǎn)移服務(wù)器對,主DHCP服務(wù)器地址為Server 1,次服務(wù)器為Server 2。當(dāng)主服務(wù)器從網(wǎng)絡(luò)斷開是,通過CNR的,次服務(wù)器會收到主服務(wù)器宕機(jī)消息,快速接管主服務(wù)器的角色,為其它主機(jī)分配地址。
在主次服務(wù)器故障轉(zhuǎn)移中,主服務(wù)器宕機(jī)后,次服務(wù)器(IP地址為:192.168.27.102)能夠快速順利地為環(huán)境中的四個客戶機(jī)分配地址。由此可見,采用負(fù)載均衡算法的CNR7.1能夠很好地將來自客戶端的請求分布到兩個或者多個DHCP服務(wù)器上,實(shí)現(xiàn)了地址分配的負(fù)載均衡。
當(dāng)一個DHCP工作不正常的時候,次服務(wù)器能夠快速、正確地為所有客戶端分配地址,提高了DHCP服務(wù)器的工作可靠性。由此可見,故障恢復(fù)草案能實(shí)現(xiàn)快速的故障轉(zhuǎn)移,減少了校園網(wǎng)絡(luò)中DHCP服務(wù)器非正常停機(jī)帶來的危害。
由實(shí)驗結(jié)果可以發(fā)現(xiàn)故障恢復(fù)草案的優(yōu)點(diǎn)是,它更好地解決了大量IP地址浪費(fèi)問題。在多個承擔(dān)相同任務(wù)的服務(wù)器之間的交流信號的定義,讓服務(wù)器之間聯(lián)系更加緊密。主次服務(wù)器地址租用的同步,使得次服務(wù)器在主服務(wù)器出現(xiàn)故障時能夠安全快速接管工作,已經(jīng)分配IP地址的客戶機(jī),可以在需要的時候直接續(xù)租地址,從而減輕租用新地址帶來的網(wǎng)絡(luò)負(fù)擔(dān)。
DHCP負(fù)載平衡算法的優(yōu)點(diǎn)是能夠在多臺對等的服務(wù)器之間實(shí)現(xiàn)自定百分比的負(fù)載平衡,可自由設(shè)定服務(wù)器負(fù)載百分比,也保障了校園網(wǎng)中DHCP安全可靠運(yùn)行。同時使用故障恢復(fù)草案和DHCP負(fù)載平衡算法,可以最好地保障校園網(wǎng)的DHCP服務(wù)器的安全運(yùn)行。
對于高校來說,下一步的工作要從IPv6下的校園網(wǎng)DHCP分配和無線AP與控制器的快速聯(lián)系兩個方面入手,尋找建立安全、快速的校園網(wǎng)動態(tài)地址分配方法。
(作者單位為華東師范大學(xué))