手把手帶你配置一個DHCP服務器 | 京東雲技術團隊

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,後面會對這次遺留的兩個待辦問題進行探究,以上......

作者:京東科技 宋慧超

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章