HCNA Routing&Switching之DHCP服務

  前文我們了解了STP的埠狀態、計時器以及埠狀態切換和網路拓撲變化相關話題,回顧請參考//www.cnblogs.com/qiuhom-1874/p/15140672.html;今天我們來聊一下DHCP相關話題;

  DHCP(Dynamic Host Configure Protocol,動態主機配置協議)是應用層協議,使用UDP封裝,服務端工作在UDP的67號埠,客戶端工作在68號埠;它是BOOTP(Bootstrap Protocol)協議發展而來;主要作用是動態分配TCP/IP資訊(ip地址,子網掩碼,網關,DNS等等),分配出去的資訊是由一個時間使用期限,這個期限我們叫租期;我們知道在大型網路環境中,會有大量的主機和設備需要獲取ip地址等網路參數;如果採用手工配置,工作量大且容易出錯,導致ip地址衝突;使用DHCP來分配ip地址等網路參數,可以極大減少網路管理員的工作量,同時也用戶手動配置網路參數時導致的ip地址衝突等問題;

  提示:主機A和主機B要動態獲取ip地址等網路參數,首先它會向dhcp伺服器發送ip地址分配的請求,服務收到請求,就分配ip地址,然後對應主機就會收到對應的ip地址等網路參數;

  DHCP系統組成

  提示:DHCP Client (客戶端) ,需要動態獲取ip地址的主機;DHCP Server(伺服器)是能提供DHCP功能的伺服器或網路設備;DHCP Relay (中繼),一般為路由器或三層交換機等網路設備,中繼設備的主要作用是arp代理和dhcp資訊轉發;

  DHCP報文結構 

  先來看一個實驗,如下拓撲主機A和主機B分別使用DHCP動態獲取ip地址資訊,我們抓包看看對應數據包長什麼樣?

  配置s1

sys
sys s1
vlan batch 10 20
int eth0/0/1
p l a 
p d v 10
int eth0/0/2
p l a
p d v 20
int eth0/0/3
p l t
p t a v 10 20

View Code

  配置s2

sys
sys s2
vlan batch 10 20
dhcp en
int g0/0/1
p l t
p t a v 10 20 
int vlanif 10
ip add 192.168.10.254 24
dhcp select interface
int vlanif 20
ip add 192.168.20.254 24
dhcp select interface

View Code

  在pc1上開啟dhcp,並在pc1上抓包

  提示:可以看到在pc1開啟dhcp以後,對應在pc上就能抓到4個DHCP的包;從上面的抓包資訊可以看到,在pc1啟動dhcp客戶端時,首先它會發送DHCP discover包,該包的員源ip是0.0.0.0(原因是pc1目前沒有ip地址)源埠是68,目標ip是255.255.255.255(全網廣播),目標埠是67;這種類型的DHCP包主要作用是尋找DHCP服務端;如果有DHCP服務端收到此類消息,那麼DHCP服務端會向該客戶端發送DHCP offer類型的包,該包主要作用就是給客戶端ip地址等網路參數資訊;隨後,客戶端收到服務端的offer以後,又會廣播發送dchp request類型的包,該類型包的主要作用是告訴其他服務端(可能不止一個服務端)有服務端給我發offer,你們發的offer我就不要了;除此之外,也告訴發offer服務端,我就要使用這個ip地址等網路資訊;最後當服務端收到客戶端發送的廣播dhcp request包以後,服務端發送ACK,意思就是告訴客戶端,服務端已經知曉這個事情,你把地址拿去使用吧;

  DHCP報文類型

  DHCP工作流程

  提示:首先客戶端發送DHCP discover類型的包,作用就是尋找DHCP服務端;如果有服務端響應客戶端,此時服務端就會發送DHCPoffer類型的包,就是告訴客戶端,我是DHCP服務端,我這裡有ip地址等等資訊;如果沒有服務端響應客戶端,則客戶端會一直發送DHCP discover類型的包;當服務端響應客戶端並發送DHCP offer 以後,對應客戶端收到服務端發送的offer,此時客戶端會發送DHCP request類型的包,其目的是告訴其他dhcp服務端,有服務端給我發offer,你們就不要再發送offer給我了;其次就是告訴服務端,我要用這個ip地址等網路資訊;如果其他dhcp服務端收到此類消息,一看報文里的dhcp server identifier 不是自己的ip地址,此時該服務端就不會再回應客戶端;只有報文里的dhcp server identifier 是自己ip地址的服務端會發送ack,表示確認客戶端資訊;

  DHCP租期更新

  提示:DHCP動態獲取的IP 地址等網路資訊是有租期的,華為默認是1天;這個租期還剩下50%時,客戶端會想服務端請求續租;如果服務端收到,此時服務端就會恢復一個ack,表示同意續租;此後,該客戶端的租期就會向後延續對應租期的一半;

  實驗:如下拓撲,我們把上述拓撲橋接在物理迴環網卡上,然後把對應dhcp服務端租期修改為1分鐘,在雲上抓包,看看對應續租的過程

  橋接cloud1到本地loop網卡

  把s1的eth0/0/4口加入到vlan 20里

  修改DHCP服務端的租期為1分鐘

  提示:租期最小單位是分鐘,如果租期是day 0 hour 0 minute 0 表示無限期;

  驗證:查看loop網卡的是否獲取到ip地址,看看租期是多少?

  提示:可以看到對應物理loop網卡獲取到對應的ip地址,並且租期也是一分鐘;

  在雲上抓包

  提示:可以看到在雲上抓包,可以抓到很多dhcp requset和ack的包;這些包就是客戶端向服務端申請續租的報文,每當租期還剩下租期的一半時,客戶端就會向服務端發起續租請求,只有服務端回復確認ack,對應租期又會往後延期租期的一半;

  驗證:再次查看loop網卡的租期情況

  提示:可以看到經過一段時間以後,租期結束時間從14:26:11變成了14:31:12,這意味著客戶端續租了的;

  DHCP重綁定

  提示:如果在租期還剩下50%時,客戶端向服務端發送續租請求,如果服務端沒有響應,此時對於客戶端來說,它的ip地址等網路資訊還是可以正常使用的;如果租期還剩下租期的1/8時,如果此時還是沒有服務端響應,此時客戶端就會申請重新綁定ip地址;重新綁定ip地址,客戶端又會發送dhcp discover報文,和最開始的流程一樣;

  IP地址釋放

  提示:如果ip租約到期前都沒有服務端響應客戶端的續租請求,客戶端會停止使用此ip地址;如果DHCP客戶端不再使用分配的ip地址,也可以主動向DHCP服務端發送DHCP RELEASE報文,告訴服務端釋放該ip地址;這裡注意一點主動釋放ip地址是客戶端告知服務端,讓服務端做好記錄對於ip地址已經釋放,可再分配給其他客戶端;服務端並不會發送什麼報文給客戶端;

  DHCP地址池(Pool)

  什麼是地址池?所謂地址池就是所有能分配地址的集合;在DHCP中我們可以建立地址池,讓DHCP客戶端,在地址池中獲取任意ip地址進行使用;

  提示:介面地址池的優先順序高於全局地址池;默認介面地址池會把對應介面地址當作網關資訊發送給客戶端;全局地址池一般用於對應網關不是自己介面地址的場景,比如專用的DHCP伺服器;

  DHCP配置命令

  1、全局開啟dhcp功能

[s2]dhcp en
Info: The operation may take a few seconds. Please wait for a moment.done.
[s2]

  2、關聯介面和介面地址池

  提示:DHCP必須在三層介面上關聯地址池;

  3、配置介面地址池的DNS伺服器地址

  提示:dns可以是多個;

  4、配置介面地址池的租期,默認1天

  提示:租期最小時長單位為秒;配置永不過期就是0天0小時0秒;

  5、配置介面地址池的排除地址範圍

  提示:如果要排除一個範圍的ip地址,必須前邊開始地址小於後面結束地址;該命令可以運行多次,如果排除單個ip地址,直接後面接ip地址即可;

  6、創建全局地址池

  7、配置全局地址池的可分配的網段地址

  8、配置全局地址池的網關地址

  9、配置全局地址池的DNS伺服器地址

  10、配置全局地址池下的租期,默認1天

 

  11、配置全局地址池下的排除地址範圍

  12、關聯介面和全局地址池

  提示:對應三層介面必須要有一個同dhcp分配地址里同網段的地址;否則對應三層介面起不來;

  13、查看地址池的屬性

  提示:該命令用於查看一個設備上的所有地址池資訊,不區分介面地址池和全局地址池;

  14、查看指定介面地址池資訊

  查看指定全局地址池資訊

  提示:不管是查看介面地址池還是全局地址池,後面都可以跟過濾條件,如下

  提示:如果後面接一個ip地址,是用於查詢對應地址所屬地址池相關資訊;all表示顯示對應地址池所有ip地址分配情況;expired用於過濾過期的ip地址,used用於過濾已經使用的ip地址;conflict用於過濾衝突的ip地址;

  15、在介面地址池下靜態綁定ip地址

  提示:後面的mac地址必須是4位一組;這樣綁定以後,對應mac地址的設備來拿ip,此時就會把對於ip地址分配出去況且沒有租期限制;

  16、在全局地址池下靜態綁定ip地址