DHCP:Dynamic Host Configuration Protocol(動態主機配置協議)node
服務器端監聽在UDP/67進行客戶端的響應linux
客戶端監聽在UDP/68向服務器端進行請求vim
當一個區域中有多個DHCP-Server時,則客戶端發起請求後誰先響應就用誰的IP,具體過程以下:windows
客戶端發起廣播,向區域內全部DHCP服務器請求獲取一個IP(依靠MAC地址進行表示本身)服務器
DHCP服務器收到後以單播響應給客戶端一個IP、DNS、Gateway(這是客戶端尚未IP,依靠MAC地址進行識別)dom
客戶端使用最早給它響應的DHCP服務器分發的地址,並以廣播的形式通知區域內全部DHCP服務器,用了誰的IPide
客戶端使用了哪一個DHCP服務器的IP,哪一個DHCP服務器就給予確認一下spa
具體的四個報文以下orm
client-->DHCPDISCOVERY 發現報文(廣播)router
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