手把手帶你設定一個DHCP伺服器

2023-12-07 12:06:18

1 前言

最近部門內部成立一個網路興趣小組,初衷是通過網路知識學習,在遇到網路問題時能夠承擔起一個與網路側同學有效溝通的「連線人」的角色,求學這麼多年其實也陸續學了不少的網路相關課程,本科的計算機網路、碩士的高等計網等,不過當時大多都停留在理論層面,趁此機會對之前學習到的相關理論知識進行實驗。本次的文章主要記錄了利用GNS3網路模擬器搭建一個DHCP伺服器,在兩個DHCP伺服器之前又採用RIP來連線,並在文章中記錄了實驗結果及使用wireshark工具抓取的封包分析....

2 DHCP知識回顧

2.1 什麼是DHCP?

DHCP(Dynamic HostConfigurationProtocol),動態主機設定協定,是一個應用層協定。當我們將客戶主機ip地址設定為動態獲取方式時,DHCP伺服器就會根據DHCP協定給使用者端分配IP,使得客戶機能夠利用這個IP上網。

DHCP前身是BOOTP,在Linux的網路卡設定中也能看到顯示的是BOOTP,DHCP引進一個bootp沒有的概念:租約。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。DHCP分為兩個部分:一個是伺服器端,另一個是使用者端。

2.2 DHCP作用及特點

  • DHCP可以自動分配IP、子網掩碼、閘道器、DNS。
  • DHCP使用者端使用的埠68,伺服器端使用埠67,使用的UDP應用層的協定。
  • DHCP一般不為伺服器分配IP,因為他們要使用固定IP,所以DHCP一般只為辦公環境的主機分配IP。
  • DHCP伺服器和使用者端需要在一個區域網內,在為使用者端分配IP的時候需要進行多次廣播。但DHCP也可以為其他網段內主機分配IP,只要連線兩個網段中間的路由器能轉發DHCP設定請求即可,但這要求路由器設定中繼功能。

2.3 DHCP分配IP方式?

  • 自動分配(Automatic Allocation)(MAC地址與IP繫結)

自動分配是當DHCP使用者端第一次成功地從DHCP伺服器端分配到一個IP地址之後,就永遠使用這個地址。這種方式適用於需要確保每個裝置始終分配到相同IP地址的場景,例如伺服器、印表機或網路裝置。

  • 動態分配(Dynamic Allocation)常用方式

動態分配是當DHCP使用者端第一次從DHCP伺服器分配到IP地址後,並非永久地使用該地址,每次使用完後,DHCP使用者端就得釋放這個IP地址,以給其他使用者端使用。這種方式適用於大量移動裝置連線到網路的場景,如公司辦公室或公共無線網路。

  • 手動分配

手動分配是由DHCP伺服器管理員專門為使用者端指定IP地址。

2.4 DHCP服務工作流程細節?

  • 第一步:搜尋階段

當DHCP使用者端第一次登入網路的時候,計算機發現本機上沒有任何IP地址設定,將以廣播方式傳送DHCP discover發現資訊來尋找DHCP伺服器,即向255.255.255.255傳送特定的廣播資訊。網路上每一臺安裝了TCP/IP協定的主機都會接收這個廣播資訊,但只有DHCP伺服器才會做出響應。(DHCP DISCOVER)

  • 第二步:提供階段

在網路中接收到DHCP discover發現資訊的DHCP伺服器就會做出響應,它從尚未分配的IP地址池中挑選一個分配給DHCP客戶機,向DHCP客戶機傳送一個包含分配的IP地址和其他設定的DHCP offer提供資訊。因為此時使用者端還沒有IP,所以返回資訊也是以廣播的方式返回的。(DHCP OFFER)

  • 第三步:選擇階段

DHCP使用者端接受到DHCP offer提供資訊之後,選擇第一個接收到的提供資訊,然後以廣播的方式回答一個DHCP request請求資訊,該資訊包含向它所選定的DHCP伺服器請求IP地址的內容。(DHCP REQUEST)

  • 第四步:確認階段

當DHCP伺服器收到DHCP使用者端回答的DHCP request請求資訊之後,便向DHCP使用者端傳送一個包含它所提供的IP地址和其他設定的DHCP ack確認資訊,確認租約,並指定租約時長。告訴DHCP使用者端可以使用它提供的IP地址。然後,DHCP客戶機便將其TCP/IP協定與網路卡繫結,另外,除了DHCP客戶機選中的DHCP伺服器外,其他的DHCP伺服器將收回曾經提供的IP地址。(DHCP ACK)

  • 重新登入

以後DHCP使用者端每次重新登入網路時,就不需要再傳送DHCP discover發現資訊了,而是直接傳送包含前一次所分配的IP地址的DHCP request請求資訊。當DHCP伺服器收到這一資訊後,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,並回答一個DHCP ack確認資訊。如果此IP地址已無法再分配給原來的DHCP客戶機使用時,則DHCP伺服器給DHCP客戶機回答一個DHCP nack否認資訊。當原來的DHCP客戶機收到此DHCP nack否認資訊後,它就必須重新傳送DHCP discover發現資訊來請求新的IP地址。

  • 續租(未嘗試)

DHCP伺服器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿後DHCP伺服器便會收回出租的IP地址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限到達租約的50%時,DHCP客戶機都會自動向DHCP伺服器傳送更新其IP租約的資訊。

2.5 DHCP協定中的報文?

◦DHCP DISCOVER :使用者端開始DHCP過程傳送的包,是DHCP協定的開始

◦DHCP OFFER :伺服器接收到DHCP DISCOVER之後做出的響應,它包括了給予使用者端的IP(yiaddr)、使用者端的MAC地址、租約過期時間、伺服器的識別符以及其他資訊

◦DHCP REQUEST :使用者端對於伺服器發出的DHCP OFFER所做出的響應。在續約租期的時候同樣會使用。

◦DHCP ACK :伺服器在接收到使用者端發來的DHCP REQUEST之後發出的成功確認的報文。在建立連線的時候,使用者端在接收到這個報文之後才會確認分配給它的IP和其他資訊可以被允許使用。

◦DHCP NAK :DHCP ACK的相反的報文,表示伺服器拒絕了使用者端的請求。

◦DHCP RELEASE :一般出現在使用者端關機、下線等狀況。這個報文將會使DHCP伺服器釋放發出此報文的使用者端的IP地址

◦DHCP INFORM :使用者端發出的向伺服器請求一些資訊的報文

◦DHCP DECLINE :當用戶端發現伺服器分配的IP地址無法使用(如IP地址衝突時),將發出此報文,通知伺服器禁止使用該IP地址。

3 DHCP實驗

3.1 簡單DHCP服務搭建

該實驗分配的網段是192.168.1.0/24,將該網段用於分配PC的ip地址,該實驗主要分為兩個部分,DHCP伺服器和單臂路由的設定

  • 實驗步驟

◦第一步,設定單臂路由。(注意:文中的命令時Cicso路由器,不同的網路裝置命令存在區別)

"encapsulation dot1Q 2" 是一個網路命令,用於在乙太網中設定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

◦第二步,在交換機設定vlan。

conf t
int f1/0
sw t e d
sw m t
ex



◦第三步,將交換機和PC相連線的介面設定為acess模式,並制定允許vlan2的網路通過。

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
network 192.168.1.0 255.255.255.0
default-router 192.168.1.1
ex



◦第五步,測試PC自動獲取ip的情況。

dhcp


3.2 結合wireshark分析DHCP伺服器協定包

◦第一步,在箭頭處抓包。

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

◦第三步,觀測wireshark抓包情況

3.3 太平洋大學課程實驗6-DHCP實驗

實驗地址連結:https://cyberlab.pacific.edu/courses/comp177/labs/lab-6-dhcp

  • 實驗步驟

◦按照上面的簡單dhcp伺服器命令設定完成兩個不同的dhcp伺服器

◦在R1和R2之間開啟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



  • 實驗結果

◦兩個網段的PC都能夠正常的通過dhcp伺服器獲取ip地址。

◦不同網段的PC可以相互ping通

3.4 接下來待完成實驗?

  • DHCP伺服器跨網段提供服務?

如果DHCP伺服器要跨網段提供服務,一樣是四步請求,只不過是每一步中間都多了一個路由器和DHCP伺服器之間的單播通訊。

1)使用者端廣播方式傳送報文,搜尋DHCP伺服器。所有機器包括路由器都收到報文,路由器設定了中繼,知道搜尋訊息後單播給DHCP伺服器;

2)DHCP伺服器單播返回資訊給路由器,路由器再廣播給使用者端;

3)使用者端選擇DHCP伺服器提供的IP,並廣播資訊告訴它我選好了,路由器單播給DHCP伺服器;

4)DHCP伺服器收到資訊將確認資訊單播給路由器,路由器單播給使用者端。

  • 實現租約?

DHCP伺服器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿後DHCP伺服器便會收回出租的IP地址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限到達租約的50%時,DHCP客戶機都會自動向DHCP伺服器傳送更新其IP租約的資訊。

4 總結

也算是利用這次調研的機會把DHCP理論知識和實踐進行了下結合,期間還是遇到很多問題,不過最後通過一步步的搭建,看到最終PC能夠正常的通過DHCP伺服器獲得ip地址確實還是很有成就感的。搭建簡單的DHCP伺服器場景因為不涉及到路由器互動,這塊還是比較順利的,在進行太平洋大學的實驗課程時,在路由互動這塊一直無法正常互動,導致兩個網段的PC無法ping通,最終排查發現除了需要在R1上啟用rip後設定168.1.0.0/24網段外,還需要新增10.0.1.0/24,R2上面同理。ok,後面會對這次遺留的兩個待辦問題進行探究,以上......

作者:京東科技 宋慧超

來源:京東雲開發者社群 轉載請註明來源