DHCP:Dynamic Host Configuration Protocol(動态主機配置協定)
伺服器端監聽在UDP/67進行用戶端的響應
用戶端監聽在UDP/68向伺服器端進行請求
當一個區域中有多個DHCP-Server時,則用戶端發起請求後誰先響應就用誰的IP,具體過程如下:
用戶端發起廣播,向區域内所有DHCP伺服器請求擷取一個IP(依靠MAC位址進行表示自己)
DHCP伺服器收到後以單點傳播響應給用戶端一個IP、DNS、Gateway(這是用戶端還沒有IP,依靠MAC位址進行識别)
用戶端使用最先給它響應的DHCP伺服器分發的位址,并以廣播的形式通知區域内所有DHCP伺服器,用了誰的IP
用戶端使用了哪個DHCP伺服器的IP,哪個DHCP伺服器就給予确認一下
具體的四個封包如下
client-->DHCPDISCOVERY 發現封包(廣播)
server-->DHCPOFFER 提供封包(單點傳播)
client-->DHCPREQUEST 請求封包(廣播)
server-->DHCPACK 确認封包(單點傳播)
而一般來說如果DHCP伺服器分發的IP都是有時間限定的,比如定義IP有效時間為6小時,則用戶端使用到隻剩3小時時就必須進行IP續租,但是如果去續租的時候伺服器沒有給予響應,則會在等一半時間,到了隻剩1.5小時是再去續租,如果一直到時間結束還沒有續租成功則用戶端會釋放此IP(發一個release封包),重新申請一個IP
注:續租是以單點傳播形式進行的
如果DHCP伺服器和用戶端沒有在一個網段(中間有路由器相隔),則就不能直接分發IP,因為路由器不傳遞廣播封包,這時可以将路由器配置成為一個DHCP中繼器,讓中繼器收到用戶端的廣播後以單點傳播的形式轉發給DHCP伺服器便可
用戶端已廣播形式發起請求(discovery)
路由器(有中繼功能)收到廣播後以單點傳播形式轉發請求
DHCP伺服器收到請求後以單點傳播進行響應(offset)
路由器收到DHCP的響應後以廣播形式轉發給client
client以廣播形式确認用了哪個DHCP伺服器的IP(request)
路由器以單點傳播形式轉發client的确認給DHCP伺服器
DHCP伺服器以單點傳播形式進行ACK确認(ACK)
路由器以單點傳播形式将ACK确認發送給client
一般來說一個DHCP伺服器可以為多個網段的客戶機提供DHCP服務,但必須有一個位址池中的IP與DHCP伺服器的網卡IP處在一個網段(表示為本地用戶端提供DHCP服務)
此外DHCP伺服器還能以标示MAC位址的方式,為某個特定主機提供特定的IP(此IP必須不在位址池中)
比如為你老闆的主機單獨分發IP
[root@node1 ~]# yum install dhcp -y
[root@node1 ~]# rpm -ql dhcp
/etc/dhcp/dhcpd.conf dhcp的配置檔案
/usr/sbin/dhcpd 将伺服器配置成為dhcp伺服器用的
/usr/sbin/dhcrelay 将伺服器配置成為中繼器用的
/var/lib/dhcpd/dhcpd.leases 記錄了哪個IP被續租了
[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcpd.conf
[root@node1 ~]# vim /etc/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.128 192.168.0.254; 位址池範圍為192.168.0.128-192.168.0.254,linux系統從最大的IP開始配置設定,而windows從最小的配置設定
option domain-name-servers 192.168.1.1,192.168.1.2,192.168.1.3 ;指定三個DNS伺服器(Linux最多指定三個)
option domain-name "internal.example.org"; 指定/etc/resolve.conf中的搜尋域
option routers 192.168.0.1;指定預設網關,分發IP時直接将網關也指定
option broadcast-address 192.168.0.23; 指定廣播位址
default-lease-time 600; 預設租約時間長為600秒
max-lease-time 7200; 最大租約時間長為7200秒
}
host passacaglia { 依據MAC位址提供一個特定的IP
hardware ethernet 0:0:c0:5d:bd:95; 為0:0:c0:5d:bd:95主機分發IP192.168.0.188
fixed-address 192.168.0.188;
[root@node1 ~]# service dhcpd start 啟動伺服器
這樣一個dhcp伺服器就配置完成了配置設定的位址範圍為192.168.0.128 到192.168.0.254;
DNS伺服器為192.168.0.1,192.168.0.2,192.168.0.3
網關為192.168.0.1