1. 程式人生 > 實用技巧 >使用DHCP動態管理主機地址。

使用DHCP動態管理主機地址。

動態主機地址管理協議

動態主機配置協議(DHCP)是一種基於UDP協議且僅限於在區域網內部使用的網路協議,主要用於大型的區域網環境或者存在較多移動辦公裝置的區域網環境中,其主要用途是為區域網內部的裝置或網路供應商自動分配IP地址等引數。

簡單來說,DHCP協議就是讓區域網中的主機自動獲得網路引數的服務。在圖14-1所示的拓撲圖中存在多臺主機,如果手動配置每臺主機的網路引數會相當麻煩,日後維護起來也讓人頭大。而且當機房內的主機數量進一步增加時(比如有100臺,甚至1000臺),這個手動配置以及維護工作的工作量足以讓運維人員崩潰。藉助於DHCP協議,不僅可以為主機自動分配網路引數,還可以確保主機使用的IP地址是唯一的,更重要的是,還能為特定主機分配固定的IP地址。

既然確定在今後的生產環境中肯定離不開DHCP了,那麼也就有必要好好地熟悉一下DHCP涉及的常見術語了。

作用域:一個完整的IP地址段,DHCP協議根據作用域來管理網路的分佈、分配IP地址及其他配置引數。

超級作用域:用於管理處於同一個物理網路中的多個邏輯子網段。超級作用域中包含了可以統一管理的作用域列表。

排除範圍:把作用域中的某些IP地址排除,確保這些IP地址不會分配給DHCP客戶端。

地址池:在定義了DHCP的作用域並應用了排除範圍後,剩餘的用來動態分配給DHCP客戶端的IP地址範圍。

租約:DHCP客戶端能夠使用動態分配的IP地址的時間。

預約:保證網路中的特定裝置總是獲取到相同的IP地址。

部署dhcpd服務程式

dhcpd是Linux系統中用於提供DHCP協議的服務程式。儘管DHCP協議的功能十分強大,但是dhcpd服務程式的配置步驟卻十分簡單,這也在很大程度上降低了在Linux中實現動態主機管理服務的門檻。

在確認Yum軟體倉庫配置妥當之後,安裝dhcpd服務程式:

[root@linuxprobe ~]# yum install dhcp
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel | 4.1 kB 00:00 
Resolving Dependencies
--> Running transaction check
---> Package dhcp.x86_64 12:4.2.5-27.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package Arch Version Repository Size
================================================================================
Installing:
 dhcp x86_64 12:4.2.5-27.el7 rhel 506 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 506 k
Installed size: 1.4 M
Is this ok [y/d/N]: y
Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 12:dhcp-4.2.5-27.el7.x86_64 1/1 Verifying : 12:dhcp-4.2.5-27.el7.x86_64 1/1 Installed: dhcp.x86_64 12:4.2.5-27.el7 Complete!

檢視dhcpd服務程式的配置檔案內容。

[root@linuxprobe ~]# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page

是的,您沒有看錯!dhcp的服務程式的配置檔案中只有3行註釋語句,這意味著我們需要自行編寫這個檔案。如果讀者不知道怎麼編寫,可以看一下配置檔案中第2行的參考示例檔案,其組成架構如圖14-2所示。

考慮到dhcpd服務程式配置檔案的可用引數比較多,挑選了最常用的引數(見表14-1),並逐一進行了簡單介紹,以便為接下來的實驗打好基礎。

表14-1 dhcpd服務程式配置檔案中使用的常見引數以及作用

自動管理IP地址

DHCP協議的設計初衷是為了更高效地集中管理區域網內的IP地址資源。DHCP伺服器會自動把IP地址、子網掩碼、閘道器、DNS地址等網路資訊分配給有需要的客戶端,而且當客戶端的租約時間到期後還可以自動回收所分配的IP地址,以便交給新加入的客戶端。

表14-2 所用的網路地址以及引數資訊

在瞭解了真實需求以及機房網路中的配置引數之後,我們按照表14-3來配置DHCP伺服器以及客戶端。

表14-3 DHCP伺服器以及客戶端的配置資訊

作用域一般是個完整的IP地址段,而地址池中的IP地址才是真正供客戶端使用的,因此地址池應該小於或等於作用域的IP地址範圍。另外,由於VMware Workstation虛擬機器軟體自帶DHCP服務,為了避免與自己配置的dhcpd服務程式產生衝突,應該先按照圖14-3和圖14-4所示將虛擬機器軟體自帶的DHCP功能關閉。

可隨意開啟幾臺客戶端,準備進行驗證。但是一定要注意,DHCP客戶端與伺服器需要處於同一種網路模式—僅主機模式(Hostonly),否則就會產生物理隔離,從而無法獲取IP地址。建議開啟1~3臺客戶端虛擬機器驗證一下效果就好,以免物理主機的CPU和記憶體的負載太高。

在確認DHCP伺服器的IP地址等網路資訊配置妥當後就可以配置dhcpd服務程式了。請注意,在配置dhcpd服務程式時,配置檔案中的每行引數後面都需要以分號(;)結尾,這是規定。另外,dhcpd服務程式配置檔案內的引數都十分重要,因此在表14-4中羅列出了每一行引數,並對其用途進行了簡單介紹。

[root@linuxprobe ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.50 192.168.10.150;
option subnet-mask 255.255.255.0;
option routers 192.168.10.1;
option domain-name "linuxprobe.com";
option domain-name-servers 192.168.10.1;
default-lease-time 21600;
max-lease-time 43200;
}

表14-4 dhcpd服務程式配置檔案中使用的引數以及作用

在認證考試以及生產環境中,都需要把配置過的dhcpd服務加入到開機啟動項中,以確保當伺服器下次開機後dhcpd服務依然能自動啟動,並順利地為客戶端分配IP地址等資訊。建議大家能養成“配置好服務程式,順手加入開機啟動項”的好習慣:

[root@linuxprobe ~]# systemctl start dhcpd
[root@linuxprobe ~]# systemctl enable dhcpd
 ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'

把dhcpd服務程式配置妥當之後就可以開啟客戶端來檢驗IP分配效果了。
重啟客戶端的網絡卡服務後即可看到自動分配到的IP地址,如圖14-5所示。

分配固定IP地址

在DHCP協議中有個術語是“預約”,它用來確保區域網中特定的裝置總是獲取到固定的IP地址。換句話說,就是dhcpd服務程式會把某個IP地址私藏下來,只將其用於相匹配的特定裝置。

要想把某個IP地址與某臺主機進行繫結,就需要用到這臺主機的MAC地址。MAC地址是網絡卡上面的一串獨立的識別符號,具備唯一性,因此不會存在衝突的情況,如圖14-6所示。

在Linux系統或Windows系統中,都可以通過檢視網絡卡的狀態來獲知主機的MAC地址。在dhcpd服務程式的配置檔案中,按照如下格式將IP地址與MAC地址進行繫結。

2020-11-22 18:31:18