1. 程式人生 > >DHCP-動態主機配置協議 (Dynamic Host configuration Protocol)

DHCP-動態主機配置協議 (Dynamic Host configuration Protocol)

DHCP-動態主機配置協議

(Dynamic Host configuration Protocol)

DHCP是一個區域網的網路協議,使用UDP協議工作;

當客戶端第一次登入網路時,DHCP的工作過程如下:
(1)尋找Server
當DHCP客戶端第一次登入網路的時候,也就是客戶發現本機上沒有任何IP資料設定,它會向網路發出一個DHCP DISCOVER封包。因為客戶端還不知道自己屬於哪一個網路,所以封包的來源地址會為0.0.0.0,而目的地址則為255.255.255.255,然後再附上DHCP discover的資訊,向網路進行廣播。在Windows的預設情形下,DHCP discover的等待時間預設為1秒,也就是當客戶端將第一個DHCP discover封包送出去之後,在1秒之內沒有得到響應的話,就會進行第二次DHCP discover廣播。若一直得不到響應的情況下,客戶端一共會有四次DHCP discover廣播(包括第一次在內),除了第一次會等待1秒之外,其餘三次的等待時間分別是9、13、16秒。如果都沒有得到DHCP伺服器的響應,客戶端則會顯示錯誤資訊,宣告DHCP discover的失敗。之後,基於使用者的選擇,系統會繼續在5分鐘之後再重複一次DHCP discover的過程。

(2)提供IP租用地址
當DHCP伺服器監聽到客戶端發出的DHCP discover廣播後,它會從那些還沒有租出的地址範圍內,選擇最前面的空置IP,連同其它TCP/IP設定,響應給客戶端一個DHCP OFFER封包。由於客戶端在開始的時候還沒有IP地址,所以在其DHCP discover封包內會帶有其MAC地址資訊,並且有一個XID編號來辨別該封包,DHCP伺服器響應的DHCP offer封包會根據這些資料傳遞給要求租約的客戶。根據伺服器端的設定,DHCP offer封包會包含一個租約期限的資訊。

(3)接受IP租約
如果客戶端收到網路上多臺DHCP伺服器的響應,只會挑選其中一個DHCP offer而已(通常是最先抵達的那個),並且會向網路傳送一個DHCP request廣播封包,告訴所有DHCP伺服器它將指定接受哪一臺伺服器提供的IP地址。同時,客戶端還會向網路傳送一個ARP封包,查詢網路上面有沒有其他機器使用該IP地址;如果發現該IP地址已經被佔用,客戶端則會送出一個DHCPDECLIENT封包給DHCP伺服器,拒絕接受其DHCP offer,並重新發送DHCP discover資訊。事實上,並不是所有DHCP客戶端都會無條件接受DHCP伺服器的offer,尤其這些主機安裝有其它TCP/IP相關的客戶軟體。客戶端也可以用DHCP request向伺服器提出DHCP選擇,而這些選擇會以不同的號碼填寫在DHCP Option Field裡面。
換一句話說,在DHCP伺服器上面的設定,未必是客戶端全都接受。客戶端可以保留自己的一些TCP/IP設定,並且主動權永遠在客戶端這邊。

(4)租約確認
當DHCP伺服器接收到客戶端DHCP request之後,會向客戶端發出一個DHCPAACK響應,以確認IP租約的正式生效,也就結束了一個完整的DHCP工作過程。

==Linux環境下的DHCP協議 ==
1、軟體安裝

[[email protected] ~]# yum install dhcp -y

2、配置檔案與格式說明
整個配置檔案包括全域性設定和區域性設定
開啟vmware的”編輯“選單欄,編輯虛擬網路編輯器----->選擇僅主機模式或者nat模式---->去掉”使用本地DHCP服務將IP地址分配給虛擬機器“前面的勾

[[email protected]
csa]# vim /etc/dhcp/dhcpd.conf (可檢視/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example的內容) #配置DHCPDNS服務的更新模式,一般不用,但是必須有該項,否則服務無法啟動 ddns-update-style interim;DNS 互動更新模式 ignore client-updates; 忽略客戶端更新 #子網配置段如下: #宣告網段和掩碼 subnet 192.168.40.0 netmask 255.255.255.0 { #指定閘道器 option routers 192.168.40.1; #指定掩碼 option subnet-mask 255.255.255.0; #指定DNS option domain-name-servers 114.114.114.114; #指定地址池範圍 range dynamic-bootp 192.168.40.130 192.168.40.254; #預設最小租約 default-lease-time 21600; #最大租約 max-lease-time 43200; }

重啟DHCP服務:

[[email protected] csa]# systemctl restart dhcpd

在另一臺虛擬機器上測試:獲取IP地址
注意:如果出現這個提示“未給virbr0分配IP地址”錯誤可忽略:

Sep 04 01:31:49 localhost.localdomain dhcpd[4387]: No subnet declaration for virbr0 (192.168.122.1).
Sep 04 01:31:49 localhost.localdomain dhcpd[4387]: ** Ignoring requests on virbr0.  If this is not what
Sep 04 01:31:49 localhost.localdomain dhcpd[4387]:    you want, please write a subnet declaration
Sep 04 01:31:49 localhost.localdomain dhcpd[4387]:    in your dhcpd.conf file for the network segment
Sep 04 01:31:49 localhost.localdomain dhcpd[4387]:    to which interface virbr0 is attached. **

3、單網段的配置如下:

ddns-update-style interim;
ignore client-updates;

subnet 192.168.40.0 netmask 255.255.255.0 {
option routers 192.168.40.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114;
 range dynamic-bootp 192.168.40.200 192.168.40.254;
default-lease-time 60;
max-lease-time 60;
}

4、多網段的配置如下:

ddns-update-style interim;
ignore client-updates;

subnet 192.168.40.0 netmask 255.255.255.0 {
option routers 192.168.40.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114;
range dynamic-bootp 192.168.40.200 192.168.40.254;
default-lease-time 60;
max-lease-time 60;
}
subnet 192.168.42.0 netmask 255.255.255.0 {
option routers 192.168.42.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114;
range dynamic-bootp 192.168.42.200 192.168.42.254;
default-lease-time 60;
max-lease-time 60;
}

5、固定IP配置
去檢視需要固定IP地址的主機的mac地址(ip a檢視)

host joe(joe可隨意寫) {
    hardware ethernet 00:0C:29:7F:32:06;
    fixed-address 192.168.40.250;
 }

創作者:Eric· Charles