1 前言
最近部門內(nèi)部成立一個(gè)網(wǎng)絡(luò)興趣小組,初衷是通過(guò)網(wǎng)絡(luò)知識(shí)學(xué)習(xí),在遇到網(wǎng)絡(luò)問(wèn)題時(shí)能夠承擔(dān)起一個(gè)與網(wǎng)絡(luò)側(cè)同學(xué)有效溝通的 “連接人” 的角色,求學(xué)這么多年其實(shí)也陸續(xù)學(xué)了不少的網(wǎng)絡(luò)相關(guān)課程,本科的計(jì)算機(jī)網(wǎng)絡(luò)、碩士的高等計(jì)網(wǎng)等,不過(guò)當(dāng)時(shí)大多都停留在理論層面,趁此機(jī)會(huì)對(duì)之前學(xué)習(xí)到的相關(guān)理論知識(shí)進(jìn)行實(shí)驗(yàn)。本次的文章主要記錄了利用 GNS3 網(wǎng)絡(luò)模擬器搭建一個(gè) DHCP 服務(wù)器,在兩個(gè) DHCP 服務(wù)器之前又采用 RIP 來(lái)連接,并在文章中記錄了實(shí)驗(yàn)結(jié)果及使用 wireshark 工具抓取的數(shù)據(jù)包分析....
2 DHCP 知識(shí)回顧
2.1 什么是 DHCP?
DHCP (Dynamic HostConfigurationProtocol), 動(dòng)態(tài)主機(jī)配置協(xié)議,是一個(gè)應(yīng)用層協(xié)議。當(dāng)我們將客戶主機(jī) ip 地址設(shè)置為動(dòng)態(tài)獲取方式時(shí),DHCP 服務(wù)器就會(huì)根據(jù) DHCP 協(xié)議給客戶端分配 IP,使得客戶機(jī)能夠利用這個(gè) IP 上網(wǎng)。
DHCP 前身是 BOOTP,在 linux 的網(wǎng)卡配置中也能看到顯示的是 BOOTP,DHCP 引進(jìn)一個(gè) bootp 沒(méi)有的概念:租約。bootp 分配的地址是永久的,而 dhcp 分配的地址是可以有期限的。DHCP 分為兩個(gè)部分:一個(gè)是服務(wù)器端,另一個(gè)是客戶端。
2.2 DHCP 作用及特點(diǎn)
- DHCP 可以自動(dòng)分配 IP、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS。
- DHCP 客戶端使用的端口 68,服務(wù)端使用端口 67,使用的 UDP 應(yīng)用層的協(xié)議。
- DHCP 一般不為服務(wù)器分配 IP,因?yàn)樗麄円褂霉潭?IP,所以 DHCP 一般只為辦公環(huán)境的主機(jī)分配 IP。
- DHCP 服務(wù)器和客戶端需要在一個(gè)局域網(wǎng)內(nèi),在為客戶端分配 IP 的時(shí)候需要進(jìn)行多次廣播。但 DHCP 也可以為其他網(wǎng)段內(nèi)主機(jī)分配 IP,只要連接兩個(gè)網(wǎng)段中間的路由器能轉(zhuǎn)發(fā) DHCP 配置請(qǐng)求即可,但這要求路由器配置中繼功能。

2.3 DHCP 分配 IP 方式?
- 自動(dòng)分配(Automatic Allocation)(mac 地址與 IP 綁定)
自動(dòng)分配是當(dāng) DHCP 客戶端第一次成功地從 DHCP 服務(wù)器端分配到一個(gè) IP 地址之后,就永遠(yuǎn)使用這個(gè)地址。這種方式適用于需要確保每個(gè)設(shè)備始終分配到相同 IP 地址的場(chǎng)景,例如服務(wù)器、打印機(jī)或網(wǎng)絡(luò)設(shè)備。
- 動(dòng)態(tài)分配(Dynamic Allocation)常用方式
動(dòng)態(tài)分配是當(dāng) DHCP 客戶端第一次從 DHCP 服務(wù)器分配到 IP 地址后,并非永久地使用該地址,每次使用完后,DHCP 客戶端就得釋放這個(gè) IP 地址,以給其他客戶端使用。這種方式適用于大量移動(dòng)設(shè)備連接到網(wǎng)絡(luò)的場(chǎng)景,如公司辦公室或公共無(wú)線網(wǎng)絡(luò)。
- 手動(dòng)分配
手動(dòng)分配是由 DHCP 服務(wù)器管理員專門為客戶端指定 IP 地址。
2.4 DHCP 服務(wù)工作流程細(xì)節(jié)?

- 第一步:搜索階段
當(dāng) DHCP 客戶端第一次登錄網(wǎng)絡(luò)的時(shí)候,計(jì)算機(jī)發(fā)現(xiàn)本機(jī)上沒(méi)有任何 IP 地址設(shè)定,將以廣播方式發(fā)送 DHCP discover 發(fā)現(xiàn)信息來(lái)尋找 DHCP 服務(wù)器,即向 255.255.255.255 發(fā)送特定的廣播信息。網(wǎng)絡(luò)上每一臺(tái)安裝了 TCP/IP 協(xié)議的主機(jī)都會(huì)接收這個(gè)廣播信息,但只有 DHCP 服務(wù)器才會(huì)做出響應(yīng)。(DHCP DISCOVER)

- 第二步:提供階段
在網(wǎng)絡(luò)中接收到 DHCP discover 發(fā)現(xiàn)信息的 DHCP 服務(wù)器就會(huì)做出響應(yīng),它從尚未分配的 IP 地址池中挑選一個(gè)分配給 DHCP 客戶機(jī),向 DHCP 客戶機(jī)發(fā)送一個(gè)包含分配的 IP 地址和其他設(shè)置的 DHCP offer 提供信息。因?yàn)榇藭r(shí)客戶端還沒(méi)有 IP,所以返回信息也是以廣播的方式返回的。(DHCP OFFER)

- 第三步:選擇階段
DHCP 客戶端接受到 DHCP offer 提供信息之后,選擇第一個(gè)接收到的提供信息,然后以廣播的方式回答一個(gè) DHCP request 請(qǐng)求信息,該信息包含向它所選定的 DHCP 服務(wù)器請(qǐng)求 IP 地址的內(nèi)容。(DHCP REQUEST)

- 第四步:確認(rèn)階段
當(dāng) DHCP 服務(wù)器收到 DHCP 客戶端回答的 DHCP request 請(qǐng)求信息之后,便向 DHCP 客戶端發(fā)送一個(gè)包含它所提供的 IP 地址和其他設(shè)置的 DHCP ack 確認(rèn)信息,確認(rèn)租約,并指定租約時(shí)長(zhǎng)。告訴 DHCP 客戶端可以使用它提供的 IP 地址。然后,DHCP 客戶機(jī)便將其 TCP/IP 協(xié)議與網(wǎng)卡綁定,另外,除了 DHCP 客戶機(jī)選中的 DHCP 服務(wù)器外,其他的 DHCP 服務(wù)器將收回曾經(jīng)提供的 IP 地址。(DHCP ACK)

- 重新登錄
以后 DHCP 客戶端每次重新登錄網(wǎng)絡(luò)時(shí),就不需要再發(fā)送 DHCP discover 發(fā)現(xiàn)信息了,而是直接發(fā)送包含前一次所分配的 IP 地址的 DHCP request 請(qǐng)求信息。當(dāng) DHCP 服務(wù)器收到這一信息后,它會(huì)嘗試讓 DHCP 客戶機(jī)繼續(xù)使用原來(lái)的 IP 地址,并回答一個(gè) DHCP ack 確認(rèn)信息。如果此 IP 地址已無(wú)法再分配給原來(lái)的 DHCP 客戶機(jī)使用時(shí),則 DHCP 服務(wù)器給 DHCP 客戶機(jī)回答一個(gè) DHCP nack 否認(rèn)信息。當(dāng)原來(lái)的 DHCP 客戶機(jī)收到此 DHCP nack 否認(rèn)信息后,它就必須重新發(fā)送 DHCP discover 發(fā)現(xiàn)信息來(lái)請(qǐng)求新的 IP 地址。
- 續(xù)租(未嘗試)
DHCP 服務(wù)器向 DHCP 客戶機(jī)出租的 IP 地址一般都有一個(gè)租借期限,期滿后 DHCP 服務(wù)器便會(huì)收回出租的 IP 地址。如果 DHCP 客戶機(jī)要延長(zhǎng)其 IP 租約,則必須更新其 IP 租約。DHCP 客戶機(jī)啟動(dòng)時(shí)和 IP 租約期限到達(dá)租約的 50% 時(shí),DHCP 客戶機(jī)都會(huì)自動(dòng)向 DHCP 服務(wù)器發(fā)送更新其 IP 租約的信息。
2.5 DHCP 協(xié)議中的報(bào)文?
?DHCP DISCOVER :客戶端開(kāi)始 DHCP 過(guò)程發(fā)送的包,是 DHCP 協(xié)議的開(kāi)始
?DHCP OFFER :服務(wù)器接收到 DHCP DISCOVER 之后做出的響應(yīng),它包括了給予客戶端的 IP(yiaddr)、客戶端的 MAC 地址、租約過(guò)期時(shí)間、服務(wù)器的識(shí)別符以及其他信息
?DHCP REQUEST :客戶端對(duì)于服務(wù)器發(fā)出的 DHCP OFFER 所做出的響應(yīng)。在續(xù)約租期的時(shí)候同樣會(huì)使用。
?DHCP ACK :服務(wù)器在接收到客戶端發(fā)來(lái)的 DHCP REQUEST 之后發(fā)出的成功確認(rèn)的報(bào)文。在建立連接的時(shí)候,客戶端在接收到這個(gè)報(bào)文之后才會(huì)確認(rèn)分配給它的 IP 和其他信息可以被允許使用。
?DHCP NAK :DHCP ACK 的相反的報(bào)文,表示服務(wù)器拒絕了客戶端的請(qǐng)求。
?DHCP RELEASE :一般出現(xiàn)在客戶端關(guān)機(jī)、下線等狀況。這個(gè)報(bào)文將會(huì)使 DHCP 服務(wù)器釋放發(fā)出此報(bào)文的客戶端的 IP 地址
?DHCP INFORM :客戶端發(fā)出的向服務(wù)器請(qǐng)求一些信息的報(bào)文
?DHCP DECLINE : 當(dāng)客戶端發(fā)現(xiàn)服務(wù)器分配的 IP 地址無(wú)法使用(如 IP 地址沖突時(shí)),將發(fā)出此報(bào)文,通知服務(wù)器禁止使用該 IP 地址。
3 DHCP 實(shí)驗(yàn)
3.1 簡(jiǎn)單 DHCP 服務(wù)搭建
該實(shí)驗(yàn)分配的網(wǎng)段是 192.168.1.0/24,將該網(wǎng)段用于分配 PC 的 ip 地址,該實(shí)驗(yàn)主要分為兩個(gè)部分,DHCP 服務(wù)器和單臂路由的配置

- 實(shí)驗(yàn)步驟
?第一步,配置單臂路由。(注意:文中的命令時(shí) Cicso 路由器,不同的網(wǎng)絡(luò)設(shè)備命令存在區(qū)別)
"encapsulation dot1Q 2" 是一個(gè)網(wǎng)絡(luò)命令,用于在以太網(wǎng)中配置 IEEE 802.1Q VLAN 封裝。
int f1/0.1
encapsulation dot1Q 2
ip add 192.168.1.1 255.255.255.0
ex
int f1/0
no sh
ex
?第二步,在交換機(jī)配置 vlan。
conf t
int f1/0
sw t e d
sw m t
ex
?第三步,將交換機(jī)和 PC 相連接的接口設(shè)置為 acess 模式,并制定允許 vlan2 的網(wǎng)絡(luò)通過(guò)。
int f1/1
sw m a
sw a v 2
ex
int f1/2
sw m a
sw a v 2
ex
int f1/3
sw m a
sw a v 2
ex
int f1/4
sw m a
sw a v 2
ex
?第四步,在路由器中配置 DHCP 地址池。
ip dhcp pool mypool
default-router 192.168.1.1
ex
?第五步,測(cè)試 PC 自動(dòng)獲取 ip 的情況。
dhcp

3.2 結(jié)合 wireshark 分析 DHCP 服務(wù)器協(xié)議包
?第一步,在箭頭處抓包。

?第二步,使用 PC 獲取 ip 分配。

?第三步,觀測(cè) wireshark 抓包情況

3.3 太平洋大學(xué)課程實(shí)驗(yàn) 6-DHCP 實(shí)驗(yàn)
實(shí)驗(yàn)地址鏈接:https://cyberlab.pacific.edu/courses/comp177/labs/lab-6-dhcp

- 實(shí)驗(yàn)步驟
?按照上面的簡(jiǎn)單 dhcp 服務(wù)器命令配置完成兩個(gè)不同的 dhcp 服務(wù)器
?在 R1 和 R2 之間開(kāi)啟 RIP,操作命令如下:
conf t
int f0/1
ip add 192.168.0.1 255.255.255.252
no sh
ex
router rip
version 2
network 192.168.0.0
network 10.0.1.0
conf t
int f0/1
ip add 192.168.0.2 255.255.255.252
no sh
ex
router rip
version 2
network 192.168.0.0
network 10.0.1.0
- 實(shí)驗(yàn)結(jié)果
?兩個(gè)網(wǎng)段的 PC 都能夠正常的通過(guò) dhcp 服務(wù)器獲取 ip 地址。

?不同網(wǎng)段的 PC 可以相互 ping 通

3.4 接下來(lái)待完成實(shí)驗(yàn)?
- DHCP 服務(wù)器跨網(wǎng)段提供服務(wù)?
如果 DHCP 服務(wù)器要跨網(wǎng)段提供服務(wù),一樣是四步請(qǐng)求,只不過(guò)是每一步中間都多了一個(gè)路由器和 DHCP 服務(wù)器之間的單播通信。
1)客戶端廣播方式發(fā)送報(bào)文,搜索 DHCP 服務(wù)器。所有機(jī)器包括路由器都收到報(bào)文,路由器配置了中繼,知道搜索消息后單播給 DHCP 服務(wù)器;
2)DHCP 服務(wù)器單播返回信息給路由器,路由器再?gòu)V播給客戶端;
3)客戶端選擇 DHCP 服務(wù)器提供的 IP,并廣播信息告訴它我選好了,路由器單播給 DHCP 服務(wù)器;
4)DHCP 服務(wù)器收到信息將確認(rèn)信息單播給路由器,路由器單播給客戶端。
- 實(shí)現(xiàn)租約?
DHCP 服務(wù)器向 DHCP 客戶機(jī)出租的 IP 地址一般都有一個(gè)租借期限,期滿后 DHCP 服務(wù)器便會(huì)收回出租的 IP 地址。如果 DHCP 客戶機(jī)要延長(zhǎng)其 IP 租約,則必須更新其 IP 租約。DHCP 客戶機(jī)啟動(dòng)時(shí)和 IP 租約期限到達(dá)租約的 50% 時(shí),DHCP 客戶機(jī)都會(huì)自動(dòng)向 DHCP 服務(wù)器發(fā)送更新其 IP 租約的信息。
4 總結(jié)
也算是利用這次調(diào)研的機(jī)會(huì)把 DHCP 理論知識(shí)和實(shí)踐進(jìn)行了下結(jié)合,期間還是遇到很多問(wèn)題,不過(guò)最后通過(guò)一步步的搭建,看到最終 PC 能夠正常的通過(guò) DHCP 服務(wù)器獲得 ip 地址確實(shí)還是很有成就感的。搭建簡(jiǎn)單的 DHCP 服務(wù)器場(chǎng)景因?yàn)椴簧婕暗铰酚善鹘换ィ@塊還是比較順利的,在進(jìn)行太平洋大學(xué)的實(shí)驗(yàn)課程時(shí),在路由交互這塊一直無(wú)法正常交互,導(dǎo)致兩個(gè)網(wǎng)段的 PC 無(wú)法 ping 通,最終排查發(fā)現(xiàn)除了需要在 R1 上啟用 rip 后配置 168.1.0.0/24 網(wǎng)段外,還需要添加 10.0.1.0/24,R2 上面同理。ok,后面會(huì)對(duì)這次遺留的兩個(gè)待辦問(wèn)題進(jìn)行探究,以上......
作者:京東科技 宋慧超
來(lái)源:京東云開(kāi)發(fā)者社區(qū) 轉(zhuǎn)載請(qǐng)注明來(lái)源






