前言
在大型企業網絡中,會有大量的主機或設備需要獲取IP地址等網絡參數。如果採用手工配置,工作量大且不好管理,如果有用戶擅自修改網絡參數,還有可能會造成IP地址衝突等問題。使用動態主機配置協議DHCP(Dynamic Host Configuration Protocol)來分配IP地址等網絡參數,可以減少管理員的工作量,避免用戶手工配置網絡參數時造成的地址衝突。
DHCP應用場景
DHCP服務器能夠爲大量主機分配IP地址,並能夠集中管理
- 在大型企業網絡中,一般會有大量的主機等終端設備。每個終端都需要配置IP地址等網絡參數才能接入網絡。在小型網絡中,終端數量很少,可以手動配置IP地址。但是在大中型網絡中,終端數量很多,手動配置IP地址工作量大,而且配置時容易導致IP地址衝突等錯誤。
- DHCP可以爲網絡終端動態分配IP地址,解決了手工配置IP地址時的各種問題。
DHCP報文類型
- DHCP客戶端初次接入網絡時,會發送DHCP發現報文(DHCP Discover),用於查找和定位DHCP服務器。
- DHCP服務器在收到DHCP發現報文後,發送DHCP提供報文(DHCP Offer),此報文中包含IP地址等配置信息。
- 在DHCP客戶端收到服務器發送的DHCP提供報文後,會發送DHCP請求報文(DHCP Request),另外在DHCP客戶端獲取IP地址並重啓後,同樣也會發送DHCP請求報文,用於確認分配的IP地址等配置信息。DHCP客戶端獲取的IP地址租期快要到期時,也發送DHCP請求報文向服務器申請延長IP地址租期。
- 收到DHCP客戶端發送的DHCP請求報文後,DHCP服務器會回覆DHCP確認報文(DHCP ACK)。客戶端收到DHCP確認報文後,會將獲取的IP地址等信息進行配置和使用。
- 如果DHCP服務器收到DHCP-REQUEST報文後,沒有找到相應的租約記錄,則發送DHCP-NAK報文作爲應答,告知DHCP客戶端無法分配合適IP地址。
- DHCP客戶端通過發送DHCP釋放報文(DHCP Release)來釋放IP地址。收到DHCP釋放報文後,DHCP服務器可以把該IP地址分配給其他DHCP客戶端。
DHCP地址池
兩種地址池:全局地址池和接口地址池
接口地址池爲連接到同一網段的主機或終端分配IP地址。
- 可以在服務器的接口下執行dhcp select interface命令,配置DHCP服務器採用接口地址池的DHCP服務器模式爲客戶端分配IP地址。
- 全局地址池爲所有連接到DHCP服務器的終端分配IP地址。可以在服務器的接口下執行dhcp select global命令,配置DHCP服務器採用全局地址池的DHCP服務器模式爲客戶端分配IP地址。
- 接口地址池的優先級比全局地址池高。配置了全局地址池後,如果又在接口上配置了地址池,客戶端將會從接口地址池中獲取IP地址。在X7系列交換機上,只能在VLANIF邏輯接口上配置接口地址池。
DHCP工作原理
爲了獲取IP地址等配置信息,DHCP客戶端需要和DHCP服務器進行報文交互
- 首先,DHCP客戶端發送DHCP發現報文來發現DHCP服務器。DHCP服務器會選取一個未分配的IP地址,向DHCP客戶端發送DHCP提供報文。此報文中包含分配給客戶端的IP地址和其他配置信息。如果存在多個DHCP服務器,每個DHCP服務器都會響應。
- 如果有多個DHCP服務器向DHCP客戶端發送DHCP提供報文,DHCP客戶端將會選擇收到的第一個DHCP提供報文,然後發送DHCP請求報文,報文中包含請求的IP地址。收到DHCP請求報文後,提供該IP地址的DHCP服務器會向DHCP客戶端發送一個DHCP確認報文,包含提供的IP地址和其他配置信息。
- DHCP客戶端收到DHCP確認報文後,會發送免費ARP報文,檢查網絡中是否有其他主機使用分配的IP地址。如果指定時間內沒有收到ARP應答,DHCP客戶端會使用這個IP地址。如果有主機使用該IP地址,DHCP客戶端會向DHCP服務器發送DHCP拒絕報文,通知服務器該IP地址已被佔用。然後DHCP客戶端會向服務器重新申請一個IP地址。
DHCP租期更新
IP租約期限到達50%時,DHCP客戶端會請求更新IP地址租約
申請到IP地址後,DHCP客戶端中會保存三個定時器,分別用來控制租期更新,租期重綁定和租期失效。DHCP服務器爲DHCP客戶端分配IP地址時會指定三個定時器的值。
如果DHCP服務器沒有指定定時器的值,DHCP客戶端會使用缺省值,缺省租期爲1天。默認情況下,還剩下50%的租期時,DHCP客戶端開始租約更新過程,DHCP客戶端向分配IP地址的服務器發送DHCP請求報文來申請延長IP地址的租期。DHCP服務器向客戶端發送DHCP確認報文,給予DHCP客戶端一個新的租期。
DHCP重綁定
DHCP客戶端在租約期限到達87.5%時,還沒收到服務器響應,會申請重綁定IP
DHCP客戶端發送DHCP請求報文續租時,如果DHCP客戶端沒有收到DHCP服務器的DHCP應答報文。默認情況下,重綁定定時器在租期剩餘12.5%的時候超時,超時後,DHCP客戶端會認爲原DHCP服務器不可用,開始重新發送DHCP請求報文。網絡上任何一臺DHCP服務器都可以應答DHCP確認或DHCP非確認報文。
如果收到DHCP確認報文,DHCP客戶端重新進入綁定狀態,復位租期更新定時器和重綁定定時器。如果收到DHCP非確認報文,DHCP客戶端進入初始化狀態。此時,DHCP客戶端必須立刻停止使用現有IP地址,重新申請IP地址。
IP地址釋放
如果IP租約到期前都沒有收到服務器響應,客戶端停止使用此IP地址。
如果DHCP客戶端不再使用分配的IP地址,也可以主動向DHCP服務器發送DHCP RELEASE報文,釋放該IP地址
租期定時器是地址失效進程中的最後一個定時器,超時時間爲IP地址的租期時間。如果DHCP客戶端在租期失效定時器超時前沒有收到服務器的任何迴應,DHCP客戶端必須立刻停止使用現有IP地址,發送DHCP Release報文,並進入初始化狀態。然後,DHCP客戶端重新發送DHCP發現報文,申請IP地址。
DHCP接口地址池配置
[Huawei]dhcp enable
[Huawei]interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0]dhcp select interface
[Huawei-GigabitEthernet0/0/0]dhcp server dns-list 10.1.1.2
[Huawei-GigabitEthernet0/0/0]dhcp server excluded-ip-address 10.1.1.2
[Huawei-GigabitEthernet0/0/0]dhcp server lease day 3
DHCP支持配置兩種地址池,包括全局地址池和接口地址池。
dhcp enable命令用來使能DHCP功能。在配置DHCP服務器時,必須先執行dhcp enable命令,才能配置DHCP的其他功能並生效。
dhcp select interface命令用來關聯接口和接口地址池,爲連接到接口的主機提供配置信息。在本示例中,接口GigabitEthernet 0/0/0被加入接口地址池中。
dhcp server dns-list命令用來指定接口地址池下的DNS服務器地址。
dhcp server excluded-ip-address命令用來配置接口地址池中不參與自動分配的IP地址範圍。
dhcp server lease命令用來配置DHCP服務器接口地址池中IP地址的租用有效期限功能。缺省情況下,接口地址池中IP地址的租用有效期限爲1天。
####驗證配置
[Huawei]display ip pool
Pool-name : GigabitEthernet0/0/0
Pool-No : 0
Position : Interface Status : Unlocked
Gateway-0 : 10.1.1.1
Mask : 255.255.255.0
VPN instance : --
IP address Statistic
Total :253
Used :1 Idle :252
Expired :0 Conflict :0 Disable :1
DHCP全局地址池配置
[Huawei]dhcp enable
[Huawei]ip pool pool2
Info: It's successful to create an IP address pool.
[Huawei-ip-pool-pool2]network 1.1.1.0 mask 24
[Huawei-ip-pool-pool2]gateway-list 1.1.1.1
[Huawei-ip-pool-pool2]lease day 10
[Huawei-ip-pool-pool2]quit
[Huawei]interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1]dhcp select global
ip pool命令用來創建全局地址池。
network命令用來配置全局地址池下可分配的網段地址。
gateway-list命令用來配置DHCP服務器全局地址池的出口網關地址。
lease命令用來配置DHCP全局地址池下的地址租期。缺省情況下,IP地址租期是1天。
dhcp select global命令用來使能接口的DHCP服務器功能。
###查看配置
[Huawei]display ip pool
-------------------------------------------------------------
Pool-name : pool2
Pool-No : 0
Position : Local Status : Unlocked
Gateway-0 : 1.1.1.1
Mask : 255.255.255.0
VPN instance : --
IP address Statistic
Total :253
Used :1 Idle :252
Expired :0 Conflict :0 Disable :0