圖解DHCP工程抓包的過(guò)程
對(duì)于DHCP的學(xué)習(xí),我們已經(jīng)開(kāi)展了一段時(shí)間了。那么這里我們就來(lái)講解一下DHCP工程抓包的一些內(nèi)容。這里我們主要DHCP (Dynamic Host Configuration Protocol)是一種動(dòng)態(tài)的向Internet終端提供配置參數(shù)的協(xié)議。在終端提出申請(qǐng)之后,DHCP可以向終端提供IP地址、網(wǎng)關(guān)、DNS服務(wù)器地址等。
它的工作過(guò)程是這樣的:
1,首先要DHCP discover??蛻魴C(jī)(drcom)在本網(wǎng)段內(nèi)廣播DHCPdiscover報(bào)文以發(fā)現(xiàn)網(wǎng)絡(luò)中的DHCP服務(wù)器(T64G),DHCP Relay可將此報(bào)文廣播到其他的網(wǎng)段。
如果client不是***次登陸網(wǎng)絡(luò),他會(huì)把他上次使用過(guò)的ip封裝在option50(windows xp中),如果該地址未被分配,那么DHCP server必須優(yōu)先為client分配該地址。
2,當(dāng) DHCP server監(jiān)聽(tīng)到客戶端發(fā)出的 DHCP discover 廣播后,它會(huì)從那些還沒(méi)有租出的地址范圍內(nèi),選擇最前面的空置 IP ,連同其它 TCP/IP 設(shè)定,響應(yīng)給client一個(gè) DHCP offer 的報(bào)文。
此時(shí)DHCP server還會(huì)ping一下這個(gè)預(yù)分配的地址以確保這個(gè)地址沒(méi)有被使用。否則會(huì)更換另外的地址給client。在這個(gè)DHCP offer中還會(huì)包含其它的TCP/IP的設(shè)定,不過(guò)對(duì)于這些設(shè)定是否使用由 client決定。(192.168.131.254為DHCP網(wǎng)關(guān)地址)
3,如果收到多個(gè)DHCPoffer報(bào)文,DHCPclient會(huì)根據(jù)報(bào)文的內(nèi)容從其中選擇一個(gè)給與響應(yīng)。此時(shí)client還會(huì)發(fā)送一個(gè)免費(fèi)arp報(bào)文再一次檢查網(wǎng)絡(luò)中是否有沖突的地址,
如果有沖突就發(fā)送一個(gè)DHCP decline報(bào)文拒絕DHCP server,并且重新開(kāi)始DHCP進(jìn)程。否則就發(fā)送一個(gè)DHCP request報(bào)文給DHCP server來(lái)確認(rèn)接受該ip地址。
4,當(dāng) DHCP server接收到client的 DHCP request 之后,會(huì)向客戶端發(fā)出一個(gè) DHCPack 響應(yīng),以確認(rèn) IP 租約的正式生效。
這時(shí)client會(huì)進(jìn)行***一次免費(fèi)arp檢查,如果沒(méi)有沖突,也就結(jié)束了一個(gè)完整的 DHCP 工作過(guò)程。
在了解DHCP工程抓包之前,我們?cè)賮?lái)分析一下以下內(nèi)容。如果DHCP server不能滿足DHCP request報(bào)文的要求就必須發(fā)送一個(gè)DHCP nak報(bào)文使client重新DHCP進(jìn)程。一旦client從DHCP server處取得lease,在lease到期50%前都可以使用,當(dāng)lease到了87.5%時(shí)client使用DHCP request報(bào)文來(lái)續(xù)約,DHCP server則用DHCP ack報(bào)文來(lái)確認(rèn)。如果沒(méi)有收到DHCP server的ack報(bào)文,client在lease到期85%時(shí)必須再次使用DHCP request報(bào)文來(lái)續(xù)約,DHCP server則用DHCP ack來(lái)確認(rèn),否則client必須放棄該ip地址。而client想要退約時(shí)直接使用DHCP release報(bào)文通知DHCP server,DHCP server回收該地址以備下次使用。因此如果租約時(shí)間設(shè)置太短,client將會(huì)頻繁想DHCP server續(xù)約,當(dāng)DHCP server來(lái)不及響應(yīng)client的續(xù)約請(qǐng)求后就會(huì)因?yàn)榈刂防匣枰匦逻M(jìn)行DHCP 地址請(qǐng)求過(guò)程,從而出現(xiàn)網(wǎng)絡(luò)中斷,關(guān)于租約時(shí)間太短而出現(xiàn)的網(wǎng)絡(luò)中斷問(wèn)題請(qǐng)參考我的報(bào)告。#p#
通過(guò)上面的分析我們發(fā)現(xiàn)DHCP過(guò)程中的報(bào)文幾乎全是廣播包,只能在同一個(gè)網(wǎng)段中傳播,但是如果網(wǎng)絡(luò)中劃分了數(shù)個(gè)vlan呢?有兩種解決方法:
1, 在每個(gè)vlan中安裝一臺(tái)DHCP server,這種方法適合在特別大型的網(wǎng)絡(luò)中使用。
2, 只安裝一臺(tái)DHCP server,通過(guò)使用DHCP relay來(lái)中繼DHCP報(bào)文。
DHCP relay原理:
DHCP Relay 為在DHCP Server 和DHCP Client 間傳輸DHCP 報(bào)文的設(shè)備。局域網(wǎng)內(nèi)的Client 可以通過(guò)DHCP Relay 與其他子網(wǎng)的DHCP Server 通信,最終取得合法的IP 地址。這樣,多個(gè)網(wǎng)絡(luò)上的DHCP Client 可以使用同一個(gè)DHCP Server,既節(jié)省了成本,又便于進(jìn)行集中管理。以下是DHCP relay的工作過(guò)程。
Client 和Relay 間的所有報(bào)文,從初始狀態(tài)獲取IP 地址時(shí),discover和request都是廣播的,offer 和ack 根據(jù)請(qǐng)求報(bào)文中的廣播標(biāo)志位來(lái)決定廣播還是單播,如果請(qǐng)求標(biāo)注位為廣播,則offer 和ack 就是廣播的,否則就是單播的。所以不能說(shuō)一定就是廣播的。到達(dá)50%lease 續(xù)租時(shí),request 和ack 都是單播的。使用DHCP Relay 進(jìn)行地址申請(qǐng)時(shí)的步驟與直接進(jìn)行地址申請(qǐng)的步驟類似,只是Relay 路由器收到Client 的請(qǐng)求報(bào)文后,將收到該報(bào)文的接口的地址填入該報(bào)文,然后進(jìn)行單播轉(zhuǎn)發(fā)。Server 根據(jù)該接口的地址來(lái)確定分配給Client 地址的網(wǎng)段,即分配的IP 地址與Relay 路由器收到請(qǐng)求報(bào)文的接口的地址屬同一網(wǎng)段。當(dāng)收到來(lái)自Server 單播的DHCPoffer、DHCPack 或DHCPnak 報(bào)文時(shí),DHCPRelay 路由器將會(huì)對(duì)Client 進(jìn)行單播傳送報(bào)文。當(dāng)DHCP Client 啟動(dòng)并進(jìn)行DHCP 初始化時(shí),它在本地網(wǎng)絡(luò)廣播配置請(qǐng)求報(bào)文。如果本地網(wǎng)絡(luò)存在DHCP Server,則可以直接進(jìn)行DHCP 配置,不需要DHCP Relay。如果本地網(wǎng)絡(luò)沒(méi)有DHCP Server,但有DHCP Relay 設(shè)備,此設(shè)備收到該廣播報(bào)文后,進(jìn)行適當(dāng)處理,即將收到報(bào)文的接口的地址填入該報(bào)文,并單播轉(zhuǎn)發(fā)給指定的、其它物理子網(wǎng)的DHCP Server。DHCP Server 根據(jù)Client 提供的信息進(jìn)行相應(yīng)的配置,并通過(guò)DHCPRelay 將配置信息發(fā)送給Client,完成對(duì)Client 的動(dòng)態(tài)配置。
為了更好的學(xué)習(xí)DHCP relay我構(gòu)建了如下試驗(yàn)拓?fù)洌?/p>
如上所示,ROUTER上架設(shè)了DHCP server,地址是192.168.2.1它有兩個(gè)地址池分別是
- ip dhcp server pool fox1
- network 192.168.1.0 255.255.255.0
- default-router 192.168.1.1
- ip dhcp server pool fox2
- network 192.168.3.0 255.255.255.0
- default-router 192.168.3.1
在SW上有兩個(gè)用戶vlan,分別是vlan10 和vlan30,SW(三層交換機(jī))上,地址分別是192.168.1.5和 192.168.3.5 。用SW作DHCP relay#p#
DHCP工程抓包如下:
1,尋找DHCP server,vlan30 client端報(bào)文如下:
server端報(bào)文如下:
2,DHCP server發(fā)送offer給客戶端
vlan30 client截包如下:
DHCP server截包如下:
3,client端決定接受該ip地址,響應(yīng)了DHCP server
client端截包如下:
DHCP server端截包如下:
4,DHCP server確認(rèn)了client端的響應(yīng),正式完成了整個(gè)DHCP過(guò)程。
client端截包如下:
DHCP server端截包如下:
整個(gè)DHCP工程抓包過(guò)程完成了,如上lease是24hours。
當(dāng)vlan30的用戶漫游至vlan10時(shí)會(huì)被分配到vlan10相對(duì)應(yīng)的地址。截包如下: