1關(guān)于DHCP服務(wù)器的沖突檢測(cè)的總結(jié)
2取證DHCP中繼代理的工作原理與IP地址沖突(因?yàn)椴辉谝粋(gè)子網(wǎng),所以gratuitous ARP肯定不行老)
關(guān)于DHCP服務(wù)器的沖突檢測(cè)
業(yè)內(nèi)常有工程師提出這樣一個(gè)問題:當(dāng)在一個(gè)子網(wǎng)內(nèi)為了提高DHCP的冗余,同時(shí)架設(shè)了兩臺(tái)DHCP服務(wù)器而且配置了相同的地址池范圍(比如都是分配192.168.2.1-192.168.2.254/24);那么,兩臺(tái)DHCP服務(wù)器會(huì)把同一個(gè)IP地址作兩次分配給不同的主機(jī)嗎?,比如:DHCP服務(wù)器A分配一個(gè)192.168.2.5的IP;DHCP服務(wù)器B又分配一個(gè)192.168.2.5的IP,這樣就會(huì)在網(wǎng)絡(luò)上造成IP地址沖突。答案是不會(huì)造成IP地址沖突,因?yàn)楝F(xiàn)在的DHCP多數(shù)都采取了沖突檢測(cè)特征,就是說,在DHCP服務(wù)器準(zhǔn)備向網(wǎng)絡(luò)上的某臺(tái)主機(jī)提供IP地址之前,做沖突檢測(cè),檢測(cè)的方式大致有兩種:一是DHCP服務(wù)器向網(wǎng)絡(luò)上發(fā)送一個(gè)關(guān)于機(jī)會(huì)IP(準(zhǔn)備分配給DHCP客戶端的IP地址)的ARP請(qǐng)求,無應(yīng)答就表示地址沒有被使用,當(dāng)然也不希望得到ARP的回應(yīng),如果得到回應(yīng)則表示該地址已被使用,那么DHCP不會(huì)把該地址分配出去;另一種方案是DHCP服務(wù)器在分配某個(gè)IP地址之前向網(wǎng)絡(luò)上發(fā)送一個(gè)ICMP的回顯報(bào)文,如果沒有主機(jī)應(yīng)答,證明該IP地址沒有被使用,可以被分配出去,相反之則不能。
DHCP是基于廣播和單播工作的,至少客戶端發(fā)出的discover消息肯定是廣播,因?yàn)樗獙ふ揖W(wǎng)絡(luò)中的DHCP服務(wù)器,都知道路由器是隔斷網(wǎng)絡(luò)廣播的三層設(shè)備,那么,位于路由器不同接口上的DHCP服務(wù)器與客戶端將無法進(jìn)行正常工作,因?yàn)榭蛻舳说腄iscover消息被路由器給切斷。此時(shí),在這種跨網(wǎng)段的DHCP部署環(huán)境中,提出一種概念叫做中繼代理(Relay Agent),在思科的IOS中叫幫助地址(Helper address)它能幫助DHCP客戶端跨越路由器申請(qǐng)IP地址及其它TCP/IP參數(shù),從而解決由于廣播域的分隔,導(dǎo)致DHCP不能正常工作的問題。關(guān)于DHCP中繼代理的工作原理如下圖9.23所示。
第一步:DHCP客戶端發(fā)送DHCP的Discover廣播尋找本地子網(wǎng)上的DHCP服務(wù)器,毫無疑問,這個(gè)尋找將失敗,因?yàn)楸镜刈泳W(wǎng)上根本沒有部署DHCP服務(wù)器,但是,此時(shí)DHCP的中繼代理路由器R1的E1/0(192.168.5.1)會(huì)收到這個(gè)Discover廣播消息。
第二步:中繼代理路由器會(huì)幫助DHCP客戶端到指定的DHCP服務(wù)器去申請(qǐng)IP地址,這里所謂指定的DHCP服務(wù)器,事實(shí)上,就是在中繼路由器上申明了誰是DHCP服務(wù)器,比如申明192.168.4.1為DHCP服務(wù)器,那么DHCP的中繼路由器會(huì)將Discover消息單播到DHCP服務(wù)器(192.168.4.1),注意,此時(shí)中繼使用單播的方式把Discover消息發(fā)送到DHCP服務(wù)器,因?yàn)橹欣^明確的知道它該向哪臺(tái)DHCP服務(wù)器進(jìn)行申請(qǐng),
第三步:DHCP服務(wù)器會(huì)以單播的方式回應(yīng)中繼的Discover消息,并發(fā)送Offer消息,該消息中包括了DHCP可以給中繼提供的機(jī)會(huì)IP(192.168.5.2),關(guān)于DHCP服務(wù)器提供給中繼的Offer消息如下圖9.24所示,這個(gè)Offer消息以單播的形式發(fā)送,因?yàn),DHCP服務(wù)器知道中繼是誰,并且在該消息中包括了中繼的IP地址,值得提出的是,DHCP服務(wù)器向中繼提供機(jī)會(huì)IP(192.168.5.2)之前,它還是會(huì)做一個(gè)IP地址沖突檢測(cè),它需要知道192.168.5.2這個(gè)IP地址,在網(wǎng)絡(luò)上是否有主機(jī)正在使用它,它的檢測(cè)方式是發(fā)送一個(gè)目標(biāo)地址為192.168.5.2的ICMP回顯消息,如果沒有回應(yīng),說明該地址沒有被使用,可以被分配出去,反之則不能;DHCP服務(wù)器還會(huì)檢測(cè)與中繼的連通性,確保中繼能成功的得到這個(gè)Offer消息,關(guān)于這個(gè)過程可以通過如下圖9.25所示的數(shù)據(jù)幀證實(shí)。在這里DHCP服務(wù)器為什么不使用ARP進(jìn)行IP地址沖突探測(cè)?原因很簡(jiǎn)單,因?yàn)樵谕ㄟ^中繼申請(qǐng)IP地址的DHCP環(huán)境中,DHCP提供的IP地址通常都不是本地子網(wǎng)的IP地址范圍,ARP不能穿越路由器工作。
第四步:中繼向DHCP服務(wù)器發(fā)起DHCP的Request請(qǐng)求消息,該消息仍然以單播的方式發(fā)送,這與本地子網(wǎng)上DHCP的工作原理不同,在本地子網(wǎng)上的這個(gè)過程應(yīng)該是以廣播的形式進(jìn)行發(fā)送,而在中繼的環(huán)境中,中繼以單播發(fā)送,因?yàn)樵谶@種情況下,通信雙方是很明確的,不可能存在有其它的DHCP服務(wù)器向中繼提供IP,兩個(gè)原因:第一個(gè)原因是中繼設(shè)備上會(huì)明確指示它該向哪臺(tái)DHCP服務(wù)器申請(qǐng)IP;第二個(gè)原因是中繼發(fā)起DHCP的Discover消息時(shí),就是單播發(fā)送的,不會(huì)有第二臺(tái)DHCP服務(wù)器來為中繼提供IP,因?yàn)樗粫?huì)自作多情。
第五步:DHCP服務(wù)器收到中繼的單播Request消息后,會(huì)回應(yīng)一個(gè)ACK消息給中繼,指示IP地址的租期正式生效,注意該消息仍然是以單播的形式發(fā)送,前面已經(jīng)描述了原因,這里不再重復(fù)描述。
第六步:事實(shí)上述第二步到第五步對(duì)于DHCP客戶端而言是完全透明的,它看不見中繼為它完成IP地址申請(qǐng)的過程。它只能看見中繼與自己的DHCP消息交互過程,當(dāng)DHCP的中繼成功的從DHCP服務(wù)器獲得地址后,中繼會(huì)給DHCP客戶端發(fā)送一個(gè)DHCP的Offer消息,告訴DHCP的客戶端可以提供給它的IP地址,注意,此時(shí)中繼就無需再檢測(cè)該IP地址在網(wǎng)絡(luò)上是否有沖突的可能性了,因?yàn)檫@個(gè)過程在上述的第三步中已經(jīng)做了檢測(cè)。
第七步:DHCP客戶端在收到DHCP中繼所提供的Offer消息后,會(huì)向DHCP的中繼發(fā)送一個(gè)DHCP的Request消息,正式請(qǐng)求IP地址。該消息以廣播的形式發(fā)送,為什么是會(huì)以廣播形式發(fā)送,在標(biāo)準(zhǔn)的DHCP環(huán)境已經(jīng)有明確說明。
第八步:DHCP中繼收到客戶端的Request消息后,會(huì)回應(yīng)一個(gè)ACK消息給DHCP客戶端,申明租約正式生效,然后DHCP客戶端在得到ACK消息后,會(huì)將DHCP中繼頒發(fā)給它的IP地址使用“免費(fèi)的ARP(請(qǐng)求的目標(biāo)IP和源IP地址一樣,它不希望得到任何回應(yīng))”做一個(gè)最終的地址沖突檢測(cè)。然后正式使用該IP地址。
注意:DHCP中繼,就其本身而言,它沒有任何資格頒發(fā)IP地址及其它TCP/IP屬性,它只是代理DHCP客戶端向DHCP服務(wù)器做申請(qǐng),中繼與DHCP服務(wù)器交互DHCP消息的過程對(duì)于DHCP客戶端而言是透明的。