最近部門內部成立一個網路興趣小組,初衷是通過網路知識學習,在遇到網路問題時能夠承擔起一個與網路側同學有效溝通的「連線人」的角色,求學這麼多年其實也陸續學了不少的網路相關課程,本科的計算機網路、碩士的高等計網等,不過當時大多都停留在理論層面,趁此機會對之前學習到的相關理論知識進行實驗。本次的文章主要記錄了利用GNS3網路模擬器搭建一個DHCP伺服器,在兩個DHCP伺服器之前又採用RIP來連線,並在文章中記錄了實驗結果及使用wireshark工具抓取的封包分析....
DHCP(Dynamic HostConfigurationProtocol),動態主機設定協定,是一個應用層協定。當我們將客戶主機ip地址設定為動態獲取方式時,DHCP伺服器就會根據DHCP協定給使用者端分配IP,使得客戶機能夠利用這個IP上網。
DHCP前身是BOOTP,在Linux的網路卡設定中也能看到顯示的是BOOTP,DHCP引進一個bootp沒有的概念:租約。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。DHCP分為兩個部分:一個是伺服器端,另一個是使用者端。
自動分配是當DHCP使用者端第一次成功地從DHCP伺服器端分配到一個IP地址之後,就永遠使用這個地址。這種方式適用於需要確保每個裝置始終分配到相同IP地址的場景,例如伺服器、印表機或網路裝置。
動態分配是當DHCP使用者端第一次從DHCP伺服器分配到IP地址後,並非永久地使用該地址,每次使用完後,DHCP使用者端就得釋放這個IP地址,以給其他使用者端使用。這種方式適用於大量移動裝置連線到網路的場景,如公司辦公室或公共無線網路。
手動分配是由DHCP伺服器管理員專門為使用者端指定IP地址。
當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租約的資訊。
◦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地址。
該實驗分配的網段是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
◦第一步,在箭頭處抓包。
◦第二步,使用PC獲取ip分配。
◦第三步,觀測wireshark抓包情況
實驗地址連結: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通
如果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租約的資訊。
也算是利用這次調研的機會把DHCP理論知識和實踐進行了下結合,期間還是遇到很多問題,不過最後通過一步步的搭建,看到最終PC能夠正常的通過DHCP伺服器獲得ip地址確實還是很有成就感的。搭建簡單的DHCP伺服器場景因為不涉及到路由器互動,這塊還是比較順利的,在進行太平洋大學的實驗課程時,在路由互動這塊一直無法正常互動,導致兩個網段的PC無法ping通,最終排查發現除了需要在R1上啟用rip後設定168.1.0.0/24網段外,還需要新增10.0.1.0/24,R2上面同理。ok,後面會對這次遺留的兩個待辦問題進行探究,以上......
作者:京東科技 宋慧超
來源:京東雲開發者社群 轉載請註明來源