dhcp动态主机配置协议
dhcp簡介:
??????? 動態主機設置協議(Dynamic Host Configuration Protocol,DHCP)是一個局域網的網絡協議,使用UDP協議工作,計算機網絡應用層協議。
主要有兩個用途:用于內部網或網絡服務供應商自動分配IP地址;
??????????????????????????????? 給用戶用于內部網管理員作為對所有計算機作中央管理的手段。
主要作用:是集中的管理、分配IP地址,使網絡環境中的主機動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,并能夠提升地址的使用率。
DHCP采用C/S模型,主機地址的動態分配任務由網絡主機驅動。當DHCP服務器接收到來自網絡主機申請地址的信息時,才會向網絡主機發送相關的地址配置等信息,以實現網絡主機地址信息的動態配置。
DHCP具有以下功能:
1. 保證任何IP地址在同一時刻只能由一臺DHCP客戶機所使用。
2. DHCP應當可以給用戶分配永久固定的IP地址。
3. DHCP應當可以同用其他方法獲得IP地址的主機共存(如手工配置IP地址的主機)。
4. DHCP服務器應當向現有的BOOTP客戶端提供服務。
DHCP有三種機制分配IP地址:
1) 自動分配方式(Automatic Allocation),DHCP服務器為主機指定一個永久性的IP地址,一旦DHCP客戶端第一次成功從DHCP服務器端租用到IP地址后,就可以永久性的使用該地址。
2) 動態分配方式(Dynamic Allocation),DHCP服務器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。
3) 手工分配方式(Manual Allocation),客戶端的IP地址是由網絡管理員指定的,DHCP服務器只是將指定的IP地址告訴客戶端主機。
三種地址分配方式中,只有動態分配可以重復使用客戶端不再需要的地址。
理論過程:
DHCP協議采用UDP作為傳輸協議,主機發送請求消息到DHCP服務器的68號端口,DHCP服務器回應應答消息給主機的67號端口。
-
DHCP Client以廣播的方式發出DHCP Discover報文。
-
所有的DHCP Server都能夠接收到DHCP Client發送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client發送一個DHCP Offer報文。
DHCP Offer報文中“Your(Client) IP Address”字段就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”字段中以便DHCP Client區分不同的DHCP Server。DHCP Server在發出此報文后會存在一個已分配IP地址的紀錄。
-
DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。
DHCP Client會發出一個廣播的DHCP Request報文,在選項字段中會加入選中的DHCP Server的IP地址和需要的IP地址。
-
DHCP Server收到DHCP Request報文后,判斷選項字段中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,并在選項字段中增加IP地址的使用租期信息。
-
DHCP Client接收到DHCP ACK報文后,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址并根據IP地址使用租期自動啟動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCPServer發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然后DHCP Client開始新的地址申請過程。
-
DHCP Client在成功獲取IP地址后,隨時可以通過發送DHCP Release報文釋放自己的IP地址,DHCP Server收到DHCP Release報文后,會回收相應的IP地址并重新分配。
在使用租期超過50%時刻處,DHCP Client會以單播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。
在使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client才會向DHCP Server發送DHCP Release報文來釋放這個IP地址,并開始新的IP地址申請過程。
需要說明的是:DHCP客戶端可以接收到多個DHCP服務器的DHCPOFFER數據包,然后可能接受任何一個DHCPOFFER數據包,但客戶端通常只接受收到的第一個DHCPOFFER數據包。另外,DHCP服務器DHCPOFFER中指定 [1]? 的地址不一定為最終分配的地址,通常情況下,DHCP服務器會保留該地址直到客戶端發出正式請求。
正式請求DHCP服務器分配地址DHCPREQUEST采用廣播包,是為了讓其它所有發送DHCPOFFER數據包的DHCP服務器也能夠接收到該數據包,然后釋放已經OFFER(預分配)給客戶端的IP地址。
如果發送給DHCP客戶端的地址已經被其他DHCP客戶端使用,客戶端會向服務器發送DHCPDECLINE信息包拒絕接受已經分配的地址信息。
在協商過程中,如果DHCP客戶端發送的REQUEST消息中的地址信息不正確,如客戶端已經遷移到新的子網或者租約已經過期,DHCP服務器會發送DHCPNAK消息給DHCP客戶端,讓客戶端重新發起地址請求過程。
過程如下圖:
???? server1??????????????????????????????????? client????????????????????????????????????????? server2
搭建過程:
實驗環境:?? server1: 172.25.1.3 ?????????????? dhcp-server
?????????????????????? localhost ? ? ? ? ? ? ? ? ? ? ?????????? ? dhcp-client
服務器端:
[root@server3 ~]# yum install -y dhcp????????????????
[root@server3 ~]# cd /etc/dhcp/
[root@server3 dhcp]# ls
dhcpd6.conf? dhcpd.conf? scripts
[root@server3 dhcp]# cp /usr/share/doc/dhcp-*/dhcpd.conf.example ./dhcpd.conf
cp: overwrite ‘./dhcpd.conf’? y
[root@server3 dhcp]# vim dhcpd.conf
? 1 # dhcpd.conf
? 2 #
? 3 # Sample configuration file for ISC dhcpd
? 4 #
? 5
? 6 # option definitions common to all supported networks...
? 7 option domain-name "example.org";???????????????????????? //域名
? 8 option domain-name-servers 114.114.114.114;???????????? //客戶端可以獲得的DNS
? 9
?10 default-lease-time 600;?????????????? //默認的最短租約期
?11 max-lease-time 7200;???????????????? //最長租約期
?12
?13 # Use this to enble / disable dynamic dns updates globally.
?14 #ddns-update-style none;
?15
?16 # If this DHCP server is the official DHCP server for the local
?17 # network, the authoritative directive should be uncommented.
?18 #authoritative;
?19
?20 # Use this to send dhcp log messages to a different log file (you also
?21 # have to hack syslog.conf to complete the redirection).
?22 log-facility local7;
?23
?24 # No service will be given on this subnet, but declaring it helps the
?25 # DHCP server to understand the network topology.
?26
?27 # This is a very basic subnet declaration.
?28
?29 subnet 172.25.1.0 netmask 255.255.255.0 {??????????????????????? //前者是網絡位,后者為子網掩碼
?30?? range 172.25.1.100 172.25.1.200;?????????????????????? //分配動態IP的IP地址池
?31?? option routers 172.25.1.3;??????????????????? //設置客戶端獲得的網關
?32 }
[root@server3 dhcp]# systemctl start dhcpd??????????????? //開啟dhcp服務
[root@server3 dhcp]# systemctl enable dhcpd??????????? //設置開機自起
[root@server3 dhcp]# systemctl status dhcpd???????????? //查看服務器狀態
客戶端:
注意:獲取IP過程需要斷網,這樣才能看出實驗效果,否則會有干擾
dhcp服務可以應用于我們封裝虛擬機時,這樣就不需要挨個給虛擬機配置ip地址了。
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
ONBOOT=yes
[root@localhost ~]# systemctl restart network
可以看到IP為我們所設置IP池的范圍
當我們另外封裝完一臺虛擬機時在reboot后可以捕捉到:
封裝虛擬機的過程可借鑒:https://blog.csdn.net/weixin_41922887/article/details/82819037
返回server3端:
[root@server3 dhcp]# cat /var/lib/dhcpd/dhcpd.leases??????????????????? //可以看到對應的IP給了誰
文件中hardware ethernet 和localhost中查看到的 link/ether 完全相同,從而說明localhost 的ip就是server3 動態分配的。
到此,dhcp服務已經實現,實驗結束。
總結
以上是生活随笔為你收集整理的dhcp动态主机配置协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zabbix部署onealert云警告平
- 下一篇: 自动化运维工具Ansible