譯

DHCP服務
DHCP的全稱是動態主機配置協議,用來自動給客戶機分配TCP/IP信息的網絡協議。
Dynamic Host Configuration Protocol,前身是BOOTP協議,是一個局域網的網絡協議,使用UDP協議工作,統一使用兩個IANA分配的端口:67(服務器端),68(客戶端)

DHCP實際上是在應用層實現,請求報文分裝在UDP數據報文中,其中UDP是不可靠的,面向無連接的傳輸協議。
DHCP通常被應用于局域網環境,其主要作用是用于集中管理,分配IP地址,客戶端client動態獲得IP地址,Gateway地址,DNS服務器地址等信息,并能夠提升地址的使用率。
簡單來說,DHCP是沒有賬號密碼登錄,自動給內網機器分配IP地址信息的協議。在實際應用上,大大減少了管理員的工作量,避免輸入錯誤的可能,避免ip地址沖突;當更改IP地址段時,不需要重新配置每個用戶IP地址,提高了IP地址的利用率,方便客戶端的配置。

DHCP具體是怎么樣的實現流程?
舉一個生活列子來說
就是快遞員拿著喇叭在樓下喊:
“某某某的快遞下樓拿一下”
然后大家都往樓下看
最后真正的收件人回應:
“是我的快遞”
然后你兩建立連接
當然我這個列子可能不是很恰當,那小編就帶大家以原理干貨的形式來講解。

發現階段,即DHCP客戶機尋找DHCP服務器的階段。DHCP客戶機以廣播方式(因為DHCP服務器的IP地址對于客戶機來說是未知的)發送DHCP discover發現信息來尋找DHCP服務器,即向地址255.255.255.255發送特定的廣播信息。網絡上每一臺安裝了TCP/IP協議的主機都會接收到這種廣播信息,但只有DHCP服務器才會做出響應。
提供階段,即DHCP服務器提供IP地址的階段。在網絡中接收到DHCP discover發現信息的DHCP服務器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其他設置的DHCP offer提供信息。
選擇階段,即DHCP客戶機選擇某臺DHCP服務器提供的IP地址的階段。如果有多臺DHCP服務器向DHCP客戶機發來的DHCP offer提供信息,則DHCP客戶機只接受第一個收到的DHCP offer提供信息,然后它就以廣播方式回答一個DHCP request請求信息,該信息中包含向它所選定的DHCP服務器請求IP地址的內容。之所以要以廣播方式回答,是為了通知所有的DHCP服務器,他將選擇某臺DHCP服務器所提供的IP地址。
確認階段,即DHCP服務器確認所提供的IP地址的階段。當DHCP服務器收到DHCP客戶機回答的DHCP request請求信息之后,它便向DHCP客戶機發送一個包含它所提供的IP地址和其他設置的DHCP ack確認信息,告訴DHCP客戶機可以使用它所提供的IP地址。然后DHCP客戶機便將其TCP/IP協議與網卡綁定,另外,除DHCP客戶機選中的服務器外,其他的DHCP服務器都將收回曾提供的IP地址。
重新登錄。以后DHCP客戶機每次重新登錄網絡時,就不需要再發送DHCP discover發現信息了,而是直接發送包含前一次所分配的IP地址的DHCP request請求信息。當DHCP服務器收到這一信息后,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,并回答一個DHCP ack確認信息。如果此IP地址已無法再分配給原來的DHCP客戶機使用時(比如此IP地址已分配給其它DHCP客戶機使用),則DHCP服務器給DHCP客戶機回答一個DHCP nack否認信息。當原來的DHCP客戶機收到此DHCP nack否認信息后,它就必須重新發送DHCP discover發現信息來請求新的IP地址。
更新租約。DHCP服務器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿后DHCP服務器便會收回出租的IP地址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限過一半時,DHCP客戶機都會自動向DHCP服務器發送更新其IP租約的信息。
客戶端使用續租達到50%,以單播的形式向服務器請求續約。
如果續約失敗,則繼續使用ip,達到續租的87.5%,以廣播的形式向服務器續租。
如果續約失敗,客戶端則使用租約至100%,重新發送DHCP Discover包,重新廣播尋找DHCP服務器。
續

步驟如上圖所示:
1.客戶端廣播DHCP?discover消息
2.服務器端提供地址續租(offer)
3.客戶端選擇并請求地址租用(request)
4.服務器確認地址租用給客戶端(ACK)
?續約的四部曲,在這里就先告一段落
下面是一些名詞解釋,以及每個過程的作用
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地址。
測

實驗環境:
兩臺虛擬機,網絡連接模式定義為VMnet*模式
實驗目的:
客戶端發送請求給服務端,實現DHCP服務的
”客戶端發送數據包“ ? ”服務器接收“ ? “客戶端發出請求” ? “服務端進行接收”
注意事項:
檢查防火墻是否關閉:
關閉防火墻
CentOS 6
chkconfig ?iptables ?off
CentOS 7
systemctl ?disable firewalld
檢查selinux是否關閉:
getenforce ?(Permissive) 顯示關閉
修改配置文件
sed -i '7s/enforcing/disabled/' /etc/selinux/config

關閉vm虛擬機的dhcp功能 ?在網絡適配器中將其勾掉
實驗步驟:
yum -y install dhcp
打開配置文件 ?vim /etc/dchpd.conf

cp-a/usr/share/doc/dhcp4.1.1/dhcpd.conf.sample ./dhcpd.conf
將這個dhcp-4.1.1文件 改名復制到dhcpd.conf中
選擇 yes
vim dhcp.conf?
找到subnet 來分配網段

subnet 192.168.199.0 代表是所有網段的ip
注意!!
客戶端和主機ip 不在同一網段,導致互相無法ping通
所以subnet后面的ip 地址必須是和主機ip 同網段。

使用客戶端的虛擬機來獲取dhcp,在配置文件setup ?勾選dhcp

重啟網絡配置 ?service ?network ?restart
tail -f ?/var/log/messages ?監聽dhcp 服務
圖/ 能能
文/ 能能
97年氣氛組的神