使用DHCP動態(tài)管理主機地址
使用DHCP動態(tài)管理主機地址本章講解動態(tài)主機配置協(xié)議(DHCP,Dynamic Host Configuration Protocol),該協(xié)議用于自動管理局域網(wǎng)內(nèi)主機的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址及DNS地址等參數(shù),可以有效地提升IP地址的利用率,提高配置效率,并降低管理與維護
使用DHCP動態(tài)管理主機地址本章講解動態(tài)主機配置協(xié)議(DHCP,Dynamic Host Configuration Protocol),該協(xié)議用于自動管理局域網(wǎng)內(nèi)主機的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址及DNS地址等參數(shù),可以有效地提升IP地址的利用率,提高配置效率,并降低管理與維護
本章講解動態(tài)主機配置協(xié)議(DHCP,Dynamic Host Configuration Protocol),該協(xié)議用于自動管理局域網(wǎng)內(nèi)主機的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址及DNS地址等參數(shù),可以有效地提升IP地址的利用率,提高配置效率,并降低管理與維護成本。
本章詳細講解了在Linux系統(tǒng)中配置部署dhcpd服務(wù)程序的方法,剖析了dhcpd服務(wù)程序配置文件內(nèi)每個參數(shù)的作用,并通過自動分配IP地址、綁定IP地址與MAC地址等實驗,讓各位讀者更直觀地體會DHCP的強大之處。
本章目錄結(jié)構(gòu)
動態(tài)主機配置協(xié)議(DHCP)是一種基于UDP協(xié)議且僅限于在局域網(wǎng)內(nèi)部使用的網(wǎng)絡(luò)協(xié)議,主要用于大型的局域網(wǎng)環(huán)境或者存在較多移動辦公設(shè)備的局域網(wǎng)環(huán)境中,用途是為局域網(wǎng)內(nèi)部的設(shè)備或網(wǎng)絡(luò)供應(yīng)商自動分配IP地址等參數(shù),提供網(wǎng)絡(luò)配置的“全家桶”服務(wù)。
簡單來說,DHCP就是讓局域網(wǎng)中的主機自動獲得網(wǎng)絡(luò)參數(shù)的服務(wù)。在圖14-1所示的拓撲圖中存在多臺主機,如果手動配置每臺主機的網(wǎng)絡(luò)參數(shù)會相當麻煩,日后維護起來也讓人頭大。而且當機房內(nèi)的主機數(shù)量進一步增加時(比如有100臺,甚至1000臺),這個手動配置以及維護工作的工作量足以讓運維人員崩潰。借助于DHCP,不僅可以為主機自動分配網(wǎng)絡(luò)參數(shù),還可以確保主機使用的IP地址是唯一的,更重要的是,還能為特定主機分配固定的IP地址。
DHCP的應(yīng)用十分廣泛,無論是服務(wù)器機房還是家庭、機場、咖啡館,都會見到它的身影。比如,本書的某位讀者開了一家咖啡廳,在為顧客提供咖啡的同時,還為顧客免費提供無線上網(wǎng)服務(wù)。這樣一來,顧客就可以一邊愜意地喝著咖啡,一邊連著無線網(wǎng)絡(luò)刷朋友圈了。但是,作為咖啡廳老板的您,肯定不希望(也沒有時間)為每一位造訪的顧客手動設(shè)置IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址等信息。另外,考慮到咖啡館使用的內(nèi)網(wǎng)網(wǎng)段一般為192.168.10.0/24(C類私有地址),最多能容納的主機數(shù)為200多臺。而咖啡廳一天的客流量肯定不止200人。如果采用手動方式為他們分配IP地址,則當他們在離開咖啡廳時并不會自動釋放這個IP地址,這就可能出現(xiàn)IP地址不夠用的情況。這一方面會造成IP地址的浪費,另外一方面也增加了IP地址的管理成本。而使用DHCP,這一切都迎刃而解—老板只需安心服務(wù)好顧客,為其提供美味的咖啡;顧客通過運行DHCP的服務(wù)器自動獲得上網(wǎng)所需的IP地址,等離開咖啡廳時IP地址將被DHCP服務(wù)器收回,以備其他顧客使用。
圖14-1? DHCP協(xié)議的拓撲示意圖
既然確定在今后的生產(chǎn)環(huán)境中肯定離不開DHCP了,那么也就有必要好好地熟悉一下DHCP涉及的常見術(shù)語了。
作用域:一個完整的IP地址段,DHCP根據(jù)作用域來管理網(wǎng)絡(luò)的分布、IP地址的分配及其他配置參數(shù)。
超級作用域:用于管理處于同一個物理網(wǎng)絡(luò)中的多個邏輯子網(wǎng)段,它包含了可以統(tǒng)一管理的作用域列表。
排除范圍:把作用域中的某些IP地址排除,確保這些IP地址不會分配給DHCP客戶端。
地址池:在定義了DHCP的作用域并應(yīng)用了排除范圍后,剩余的用來動態(tài)分配給客戶端的IP地址范圍。
租約:DHCP客戶端能夠使用動態(tài)分配的IP地址的時間。
預(yù)約:保證網(wǎng)絡(luò)中的特定設(shè)備總是獲取到相同的IP地址。
dhcpd是Linux系統(tǒng)中用于提供DHCP的服務(wù)程序。盡管DHCP的功能十分強大,但是dhcpd服務(wù)程序的配置步驟卻十分簡單,這也在很大程度上降低了在Linux中實現(xiàn)動態(tài)主機管理服務(wù)的門檻。
在確認軟件倉庫配置妥當之后,安裝dhcpd服務(wù)程序,其軟件包名稱為dhcp-server:
[root@linuxprobe ~]# dnf install -y dhcp-server Updating Subscription Management repositories. Unable to read consumer identity This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. AppStream 3.1 MB/s | 3.2 kB 00:00 BaseOS 2.7 MB/s | 2.7 kB 00:00 Dependencies resolved. ======================================================================================== Package Arch Version Repository Size ======================================================================================== Installing: dhcp-server x86_64 12:4.3.6-30.el8 BaseOS 529 k Transaction Summary ======================================================================================== Install 1 Package ………………省略部分輸出信息……………… Installed: dhcp-server-12:4.3.6-30.el8.x86_64 Complete!
查看dhcpd服務(wù)程序的配置文件內(nèi)容:
[root@linuxprobe ~]# cat /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp-server/dhcpd.conf.example # see dhcpd.conf(5) man page #
是的,您沒有看錯!dhcp的服務(wù)程序的配置文件中只有3行注釋語句,這意味著我們需要自行編寫這個文件。如果讀者不知道怎么編寫,可以看一下配置文件中第2行的參考示例文件,其組成架構(gòu)如圖14-2所示。
圖14-2? dhcpd服務(wù)程序配置文件的架構(gòu)
一個標準的配置文件應(yīng)該包括全局配置參數(shù)、子網(wǎng)網(wǎng)段聲明、地址配置選項以及地址配置參數(shù)。其中,全局配置參數(shù)用于定義dhcpd服務(wù)程序的整體運行參數(shù);子網(wǎng)網(wǎng)段聲明用于配置整個子網(wǎng)段的地址屬性。
考慮到dhcpd服務(wù)程序配置文件的可用參數(shù)比較多,這里挑選了最常用的參數(shù)(見表14-1),并逐一進行了簡單介紹,以便為接下來的實驗打好基礎(chǔ)。
表14-1??????????????????????? dhcpd服務(wù)程序配置文件中使用的常見參數(shù)以及作用
參數(shù) | 作用 |
ddns-update-style 類型 | 定義DNS服務(wù)動態(tài)更新的類型,類型包括: none(不支持動態(tài)更新)、interim(互動更新模式)與ad-hoc(特殊更新模式) |
allow/ignore client-updates | 允許/忽略客戶端更新DNS記錄 |
default-lease-time 21600 | 默認超時時間 |
max-lease-time 43200 | 最大超時時間 |
option domain-name-servers 8.8.8.8 | 定義DNS服務(wù)器地址 |
option domain-name "domain.org" | 定義DNS域名 |
range | 定義用于分配的IP地址池 |
option subnet-mask | 定義客戶端的子網(wǎng)掩碼 |
option routers | 定義客戶端的網(wǎng)關(guān)地址 |
broadcast-address 廣播地址 | 定義客戶端的廣播地址 |
ntp-server IP地址 | 定義客戶端的網(wǎng)絡(luò)時間服務(wù)器(NTP) |
nis-servers IP地址 | 定義客戶端的NIS域服務(wù)器的地址 |
hardware 硬件類型 MAC地址 | 指定網(wǎng)卡接口的類型與MAC地址 |
server-name 主機名 | 向DHCP客戶端通知DHCP服務(wù)器的主機名 |
fixed-address IP地址 | 將某個固定的IP地址分配給指定主機 |
time-offset 偏移差 | 指定客戶端與格林尼治時間的偏移差 |
DHCP的設(shè)計初衷是為了更高效地集中管理局域網(wǎng)內(nèi)的IP地址資源。DHCP服務(wù)器會自動把IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS地址等網(wǎng)絡(luò)信息分配給有需要的客戶端,而且當客戶端的租約時間到期后還可以自動回收所分配的IP地址,以便交給新加入的客戶端。
為了讓實驗更有挑戰(zhàn)性,來模擬一個真實生產(chǎn)環(huán)境的需求:
“機房運營部門:明天會有100名學員自帶筆記本電腦來我司培訓學習,請保證他們能夠使用機房的本地DHCP服務(wù)器自動獲取IP地址并正常上網(wǎng)”。
機房所用的網(wǎng)絡(luò)地址及參數(shù)信息如表14-2所示。
表14-2?????????????????????????????????????? 機房所用的網(wǎng)絡(luò)地址以及參數(shù)信息
參數(shù)名稱 | 值 |
默認租約時間 | 21600秒 |
最大租約時間 | 43200秒 |
IP地址范圍 | 192.168.10.50~192.168.10.150 |
子網(wǎng)掩碼 | 255.255.255.0 |
網(wǎng)關(guān)地址 | 192.168.10.1 |
DNS服務(wù)器地址 | 192.168.10.1 |
搜索域 | linuxprobe.com |
在了解了真實需求以及機房網(wǎng)絡(luò)中的配置參數(shù)之后,按照表14-3來配置DHCP服務(wù)器以及客戶端。
表14-3??????????????????????????????????? DHCP服務(wù)器以及客戶端的配置信息
主機類型 | 操作系統(tǒng) | IP地址 |
DHCP服務(wù)器 | RHEL 8 | 192.168.10.1 |
DHCP客戶端 | Windows 10 | DHCP自動獲取地址 |
前文講到,作用域一般是個完整的IP地址段,而地址池中的IP地址才是真正供客戶端使用的,因此地址池應(yīng)該小于或等于作用域的IP地址范圍。另外,由于VMware Workstation虛擬機軟件自帶DHCP服務(wù),為了避免與自己配置的dhcpd服務(wù)程序產(chǎn)生沖突,應(yīng)該先按照圖14-3和圖14-4將虛擬機軟件自帶的DHCP功能關(guān)閉。
圖14-3? 單擊虛擬機軟件的“虛擬網(wǎng)絡(luò)編輯器”菜單
圖14-4? 關(guān)閉虛擬機自帶的DHCP功能
可隨意開啟幾臺客戶端,準備進行驗證。但是一定要注意,DHCP客戶端與服務(wù)器需要處于同一種網(wǎng)絡(luò)模式—僅主機模式(Hostonly),否則就會產(chǎn)生物理隔離,從而無法獲取IP地址。建議開啟1~3臺客戶端虛擬機驗證一下效果就好,以免物理主機的CPU和內(nèi)存的負載太高。
在確認DHCP服務(wù)器的IP地址等網(wǎng)絡(luò)信息配置妥當后,就可以配置dhcpd服務(wù)程序了。請注意,在配置dhcpd服務(wù)程序時,配置文件中的每行參數(shù)后面都需要以分號(;)結(jié)尾,這是規(guī)定。另外,dhcpd服務(wù)程序配置文件內(nèi)的參數(shù)都十分重要,因此在表14-4中羅列出了每一行參數(shù),并對其用途進行了簡單介紹。
[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服務(wù)程序配置文件中使用的參數(shù)以及作用
參數(shù) | 作用 |
ddns-update-style none; | 設(shè)置DNS服務(wù)不自動進行動態(tài)更新 |
ignore client-updates; | 忽略客戶端更新DNS記錄 |
subnet 192.168.10.0 netmask 255.255.255.0 { | 作用域為192.168.10.0/24網(wǎng)段 |
range 192.168.10.50 192.168.10.150; | IP地址池為192.168.10.50-150(約100個IP地址) |
option subnet-mask 255.255.255.0; | 定義客戶端默認的子網(wǎng)掩碼 |
option routers 192.168.10.1; | 定義客戶端的網(wǎng)關(guān)地址 |
option domain-name "linuxprobe.com"; | 定義默認的搜索域 |
option domain-name-servers 192.168.10.1; | 定義客戶端的DNS地址 |
default-lease-time 21600; | 定義默認租約時間(單位:秒) |
max-lease-time 43200; | 定義最大預(yù)約時間(單位:秒) |
} | 結(jié)束符 |
在紅帽認證考試以及生產(chǎn)環(huán)境中,都需要把配置過的dhcpd服務(wù)加入到開機啟動項中,以確保當服務(wù)器下次開機后dhcpd服務(wù)依然能自動啟動,并順利地為客戶端分配IP地址等信息。真心建議大家能養(yǎng)成“配置好服務(wù)程序,順手加入開機啟動項”的好習慣。
[root@linuxprobe ~]# systemctl start dhcpd [root@linuxprobe ~]# systemctl enable dhcpd Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service.
把dhcpd服務(wù)程序配置妥當之后就可以開啟客戶端來檢驗IP分配效果了。在日常工作中,Windows 10是主流的桌面操作系統(tǒng),所以只要確保兩個主機都處于同一個網(wǎng)絡(luò)模式內(nèi),然后像如圖14-5那樣設(shè)置Windows系統(tǒng)的網(wǎng)絡(luò)為DHCP模式,再稍等片刻即可自動獲取到網(wǎng)卡信息了,如圖14-6所示。特別方便!
圖14-5? 設(shè)置網(wǎng)卡模式
圖14-6? 自動獲取到IP地址
如果是在生產(chǎn)環(huán)境中配置dhcpd服務(wù),則有可能會因為DHCP沒有被防火墻放行而導致失敗,此時執(zhí)行下面的命令即可:
[root@linuxprobe ~]# firewall-cmd --zone=public --permanent --add-service=dhcp success [root@linuxprobe ~]# firewall-cmd --reload success
在正常情況下,DHCP的運作會經(jīng)歷4個過程:請求、提供、選擇和確認。當客戶端順利獲得一個IP地址及相關(guān)的網(wǎng)絡(luò)信息后,就會發(fā)送一個ARP(Address Resolution Protocol,地址解析協(xié)議)請求給服務(wù)器。在dhcpd服務(wù)程序收到這條信息后,也不會再把這個IP地址分配給其他主機,從根源上避免了IP地址沖突的情況。
在DHCP協(xié)議中有個術(shù)語是“預(yù)約”,它用來確保局域網(wǎng)中特定的設(shè)備總是獲取到固定的IP地址。換句話說,就是dhcpd服務(wù)程序會把某個IP地址私藏下來,只將其用于相匹配的特定設(shè)備。這有點像高檔餐廳的預(yù)約服務(wù),雖然客人還沒有到場,但是桌子上會放個寫著“已預(yù)定”的小牌子。
要想把某個IP地址與某臺主機進行綁定,就需要用到這臺主機的MAC地址。這個MAC地址即網(wǎng)卡上一串獨立的標識符,具備唯一性,因此不會存在沖突的情況。在Linux系統(tǒng)中查看MAC地址的示例如圖14-7所示,在Windows系統(tǒng)中查MAC地址的示例如圖14-8所示。
圖14-7? 在Linux系統(tǒng)中查看網(wǎng)卡MAC地址
圖14-8? 在Windows系統(tǒng)中查看網(wǎng)卡MAC地址
在Linux系統(tǒng)或Windows系統(tǒng)中,都可以通過查看網(wǎng)絡(luò)的狀態(tài)來獲知主機的MAC地址。在dhcpd服務(wù)程序的配置文件中,按照如下格式將IP地址與MAC地址進行綁定。
host 主機名稱 { | ||||
hardware | ethernet | 該主機的MAC地址; | ||
fixed-address | 欲指定的IP地址; | |||
} |
如果不方便查看主機的MAC地址,該怎么辦呢?比如,要給老板使用的主機綁定IP地址,總不能隨便就去查看老板的主機信息吧。針對這種情況,這里告訴大家一個好辦法。我們首先啟動dhcpd服務(wù)程序,為老板的主機分配一個IP地址,這樣就會在DHCP服務(wù)器本地的日志文件中保存這次的IP地址分配記錄。然后查看日志文件,就可以獲悉主機的MAC地址了(即下面加粗的內(nèi)容)。
[root@linuxprobe ~]# tail -f /var/log/messages ………………省略部分輸出信息……………… Mar 22 00:28:54 linuxprobe cupsd[1206]: REQUEST linuxprobe.com- - "POST / HTTP/1.1" 200 183 Renew-Subscription client-error-not-found Mar 22 00:29:35 linuxprobe dhcpd[30959]: DHCPREQUEST for 192.168.10.50 from 00:0c:29:dd:f2:22 (DESKTOP-3OGV50E) via ens160 Mar 22 00:29:35 linuxprobe dhcpd[30959]: DHCPACK on 192.168.10.50 to 00:0c:29:dd:f2:22 (DESKTOP-3OGV50E) via ens160
之前劉遄老師在線下講課時,講完DHCP服務(wù)后總會看到有些學員在撓頭。起初我很不理解,畢竟dhcpd服務(wù)程序是Linux系統(tǒng)中一個很簡單的實驗,總共就那么十幾行的配置參數(shù),大家還能寫錯?后來發(fā)現(xiàn)了原因—有些學員是以Windows系統(tǒng)為對象進行的IP與MAC地址的綁定實驗。而在Windows系統(tǒng)中看到的MAC地址,其格式類似于00-0c-29-dd-f2-22,間隔符為減號(-)。但是在Linux系統(tǒng)中,MAC地址的間隔符則變成了冒號(:)。
[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; host linuxprobe { hardware ethernet 00:0c:29:dd:f2:22; fixed-address 192.168.10.88; } }
確認參數(shù)填寫正確后就可以保存并退出配置文件,然后就可以重啟dhcpd服務(wù)程序了。
[root@linuxprobe ~]# systemctl restart dhcpd
需要說明的是,如果您剛剛為這臺主機分配了IP地址,由于它的IP地址租約時間還沒有到期,因此不會立即換成新綁定的IP地址。要想立即查看綁定效果,則需要重啟一下客戶端的網(wǎng)絡(luò)服務(wù),如圖14-9所示。
?
圖14-9 重啟網(wǎng)卡設(shè)備
然后就能看到效果了,如圖14-10所示。
版權(quán)所有:深圳市網(wǎng)商在線科技有限公司
友情鏈接: