IT小百科之DHCP服務(wù)原理與搭建
大家都知道上網(wǎng)的最基本前提是要在終端上設(shè)置IP、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS等地址信息,在家里或者在辦公室很多時(shí)候打開(kāi)電腦后發(fā)現(xiàn)就可以上網(wǎng),并沒(méi)有手動(dòng)設(shè)置IP、掩碼、DNS地址也能上網(wǎng),這是什么原因呢?其實(shí)這個(gè)原因很簡(jiǎn)單,說(shuō)明你的內(nèi)網(wǎng)有"DHCP"服務(wù)器,通過(guò)它給你的終端自動(dòng)分配了IP掩碼和網(wǎng)關(guān)等地址,省去了你手動(dòng)配置過(guò)程,從而給網(wǎng)管人員和辦公人員都帶來(lái)了方便,簡(jiǎn)化了管理過(guò)程。
今天就以本篇文章內(nèi)容給大家詳細(xì)介紹一下"DHCP"實(shí)現(xiàn)的基本原理以及常見(jiàn)的幾種搭建DHCP服務(wù)器的方法!
一、DHCP實(shí)現(xiàn)原理
1. DHCP是什么
DHCP(Dynamic Host Configuration Protocol,動(dòng)態(tài)主機(jī)配置協(xié)議)是一個(gè)局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,使用UDP協(xié)議工作。它是一種流行的Client/Server協(xié)議,一般用于為主機(jī)或者為路由器等指定相關(guān)的配置信息。DHCP服務(wù)在企業(yè)和家庭中得到了大量的應(yīng)用,它能夠自動(dòng)分配ip地址以及一些其他的相關(guān)信息,整個(gè)過(guò)程對(duì)客戶透明。
2. 部署DHCP服務(wù)的好處
- 減少管理員的工作量
- 避免輸入錯(cuò)誤的可能
- 避免ip地址沖突
- 當(dāng)網(wǎng)絡(luò)更改ip地址段時(shí),不需要再重新配置每一個(gè)用戶的ip地址
- 提高了ip地址的利用率
- 方便客戶端的配置
3. DHCP分配方式
- 自動(dòng)分配方式(Automatic Allocation),DHCP服務(wù)器為主機(jī)指定一個(gè)***性的IP地址,一旦DHCP客戶端***次成功從DHCP服務(wù)器端租用到IP地址后,就可以***性的使用該地址。
- 動(dòng)態(tài)分配方式(Dynamic Allocation),DHCP服務(wù)器給主機(jī)指定一個(gè)具有時(shí)間限制的IP地址,時(shí)間到期或主機(jī)明確表示放棄該地址時(shí),該地址可以被其他主機(jī)使用。
- 手工分配方式(Manual Allocation),客戶端的IP地址是由網(wǎng)絡(luò)管理員指定的,DHCP服務(wù)器只是將指定的IP地址告訴客戶端主機(jī)。
4. DHCP工作過(guò)程
DHCP客戶機(jī)在啟動(dòng)時(shí),會(huì)搜尋網(wǎng)絡(luò)中是否存在DHCP服務(wù)器。如果找到,則給DHCP服務(wù)器發(fā)送一個(gè)請(qǐng)求。DHCP服務(wù)器接到請(qǐng)求后,為DHCP客戶機(jī)選擇TCP/IP配置的參數(shù),并把這些參數(shù)發(fā)送給客戶端。 如果已配置沖突檢測(cè)設(shè)置,則DHCP服務(wù)器在將租約中的地址提供給客戶機(jī)之前會(huì)使用Ping測(cè)試作用域中每個(gè)可用地址的連通性。這可確保提供給客戶的每個(gè)IP地址都沒(méi)有被使用手動(dòng)TCP/IP配置的另一臺(tái)非DHCP計(jì)算機(jī)使用。
根據(jù)客戶端是否***次登錄網(wǎng)絡(luò),DHCP的工作形式會(huì)有所不同。
初次登錄:
初次登錄時(shí)DHCP工作包括四個(gè)步驟:
(1) ***步尋找DHCP服務(wù)器
當(dāng)DHCP客戶端***次登錄網(wǎng)絡(luò)的時(shí)候,計(jì)算機(jī)發(fā)現(xiàn)本機(jī)上沒(méi)有任何IP地址設(shè)定,將以廣播方式發(fā)送DHCP discover發(fā)現(xiàn)信息來(lái)尋找DHCP服務(wù)器,即向255.255.255.255發(fā)送特定的廣播信息。網(wǎng)絡(luò)上每一臺(tái)安裝了TCP/IP協(xié)議的主機(jī)都會(huì)接收這個(gè)廣播信息,但只有DHCP服務(wù)器才會(huì)做出響應(yīng)。
(2) 第二步分配IP地址
在網(wǎng)絡(luò)中接收到DHCP discover發(fā)現(xiàn)信息的DHCP服務(wù)器就會(huì)做出響應(yīng),它從尚未分配的IP地址池中挑選一個(gè)分配給DHCP客戶機(jī),并向DHCP客戶機(jī)發(fā)送一個(gè)包含分配的IP地址和其他設(shè)置的DHCP offer提供信息。
(3) 第三步接受IP地址
DHCP客戶端接受到DHCP offer提供信息之后,選擇***個(gè)接收到的提供信息,然后以廣播的方式回答一個(gè)DHCP request請(qǐng)求信息,該信息包含向它所選定的DHCP服務(wù)器請(qǐng)求IP地址的內(nèi)容。
(4) 第四步IP地址分配確認(rèn)
當(dāng)DHCP服務(wù)器收到DHCP客戶端回答的DHCP request請(qǐng)求信息之后,便向DHCP客戶端發(fā)送一個(gè)包含它所提供的IP地址和其他設(shè)置的DHCP ack確認(rèn)信息,告訴DHCP客戶端可以使用它提供的IP地址。然后,DHCP客戶機(jī)便將其TCP/IP協(xié)議與網(wǎng)卡綁定,另外,除了DHCP客戶機(jī)選中的DHCP服務(wù)器外,其他的DHCP服務(wù)器將收回曾經(jīng)提供的IP地址。
重新登錄:
以后DHCP客戶端每次重新登錄網(wǎng)絡(luò)時(shí),就不需要再發(fā)送DHCP discover發(fā)現(xiàn)信息了,而是直接發(fā)送包含前一次所分配的IP地址的DHCP request請(qǐng)求信息。當(dāng)DHCP服務(wù)器收到這一信息后,它會(huì)嘗試讓DHCP客戶機(jī)繼續(xù)使用原來(lái)的IP地址,并回答一個(gè)DHCP ack確認(rèn)信息。如果此IP地址已無(wú)法再分配給原來(lái)的DHCP客戶機(jī)使用時(shí),則DHCP服務(wù)器給DHCP客戶機(jī)回答一個(gè)DHCP nack否認(rèn)信息。當(dāng)原來(lái)的DHCP客戶機(jī)收到此DHCP nack否認(rèn)信息后,它就必須重新發(fā)送DHCP discover發(fā)現(xiàn)信息來(lái)請(qǐng)求新的IP地址。
- 如果客戶端DHCP request 內(nèi)的IP地址在服務(wù)器端沒(méi)有被使用,DHCP服務(wù)器回復(fù)DHCP ACK繼續(xù)使用IP。
- 如果客戶端DHCP request 內(nèi)的IP地址在服務(wù)器端已被使用,DHCP服務(wù)器回復(fù)DHCP NACK告訴客戶端IP已被使用。
- 回復(fù)NACK后,重新開(kāi)始DHCP初次登錄時(shí)的流程
更新租約:
DHCP服務(wù)器向DHCP客戶機(jī)出租的IP地址一般都有一個(gè)租借期限,期滿后DHCP服務(wù)器便會(huì)收回出租的IP地址。如果DHCP客戶機(jī)要延長(zhǎng)其IP租約,則必須更新其IP租約。DHCP客戶機(jī)啟動(dòng)時(shí)和IP租約期限到達(dá)租約的50%時(shí),DHCP客戶機(jī)都會(huì)自動(dòng)向DHCP服務(wù)器發(fā)送更新其IP租約的信息。
二、常見(jiàn)的幾種搭建DHCP服務(wù)器的方法
1. 利用TPLinK等寬帶路由器內(nèi)置的DHCP功能模塊提供服務(wù)
這種方法很簡(jiǎn)單,首先就是登錄路由器,找到DHCP功能設(shè)置的位置,直接設(shè)置即可。
如下圖:
設(shè)置好保存重啟后,網(wǎng)內(nèi)的計(jì)算機(jī)就可以自動(dòng)獲取iP地址等信息了。
2. 辦公網(wǎng)環(huán)境利用三層交換機(jī)搭建DHCP服務(wù)
以華為交換機(jī)舉例:
在三層交換機(jī)配置DHCP服務(wù)過(guò)程:
- <Huawei>system-view (進(jìn)入全局模式)
- [Huawei]sysname SW1 ( 設(shè)備命名)
- [SW1]dhcp enable (使用DHCP功能)
- [SW1]ip pool 10 (創(chuàng)建全局地址池,同時(shí)進(jìn)入全局地址池視圖)
- [SW1-ip-pool-10]network 192.168.10.0 mask 24 (配置全局地址池可動(dòng)態(tài)分配的IP地址范圍)
- [SW1-ip-pool-10]dns-list 8.8.8.8 (配置DNS )
- [SW1-ip-pool-10]gateway-list 192.168.10.1 (配置網(wǎng)關(guān))
- [SW1-ip-pool-10]excluded-ip-address 192.168.10.201 192.168.10.254 (保留不被分配的地址)
- [SW1-ip-pool-10]lease day 7 (IP租約期限)
- [SW1-ip-pool-10]dis this (查詢當(dāng)前模式的配置)
- # ip pool 10
- gateway-list 192.168.10.1 (網(wǎng)關(guān))
- network 192.168.10.0 mask 255.255.255.0 (IP地址范圍)
- excluded-ip-address 192.168.10.201 192.168.10.254 (保留IP地址范圍)
- lease day 7 hour 0 minute 0 (IP租約周期)
- dns-list 8.8.8.8
- [SW1-ip-pool-10]quit (退出
- [SW1]ip pool 20
- [SW1-ip-pool-20]network 192.168.20.0 mask 24
- [SW1-ip-pool-20]dns-list 8.8.8.8
- [SW1-ip-pool-20]gateway-list 192.168.20.1
- [SW1-ip-pool-20]excluded-ip-address 192.168.20.201 192.168.20.254
- [SW1-ip-pool-20]lease day 7
- [SW1-ip-pool-20]q
- ------------------------------------------------
- [SW1]vlan batch 10 20 (批量創(chuàng)建vlan)
- [SW1]interface GigabitEthernet 0/0/1 (進(jìn)入port 1)
- [SW1-GigabitEthernet0/0/1]port link-type access (配置port 1 類型)
- [SW1-GigabitEthernet0/0/1]port default vlan 10 (配置port 1 vlan)
- [SW1-GigabitEthernet0/0/1]quit (退出)
- [SW1]interface GigabitEthernet 0/0/2
- [SW1-GigabitEthernet0/0/2]port link-type access
- [SW1-GigabitEthernet0/0/2]port default vlan 20
- [SW1-GigabitEthernet0/0/2]quit
- ( 配置VLANIF10接口下的客戶端從全局地址池中獲取IP地址)
- [SW1]interface Vlanif 10 (創(chuàng)建vlanif 10)
- [SW1-Vlanif10]ip address 192.168.10.1 24 (配置IP地址)
- [SW1-Vlanif10]dhcp select global (在vlanif 10模式下調(diào)用全局地址池)
- [SW1-Vlanif10]display this (查詢當(dāng)前配置參數(shù))
- #
- interface Vlanif10
- ip address 192.168.10.1 255.255.255.0
- dhcp select global
- #
- Return
- [SW1-Vlanif10]quit
- [SW1]interface Vlanif 20
- [SW1-Vlanif20]ip address 192.168.20.1 24
- [SW1-Vlanif20]dhcp select global
- [SW1-Vlanif20]quit
- [SW1]display ip pool (查看IP地址池配置情況)
- [SW1]quit
- <SW1>save (保存配置,寫(xiě)入設(shè)備)
3. 在Windows 系統(tǒng)里搭建DHCP服務(wù)
以2008server為例:
2008ser搭建DHCP服務(wù)器步驟:
***步:安裝Windows Server 2008系統(tǒng)作為服務(wù)器端;客戶端可安裝其他Windows系統(tǒng)。
第二步:進(jìn)入2008ser系統(tǒng),手動(dòng)設(shè)置IP(未設(shè)置靜態(tài)IP,后面無(wú)法繼續(xù))
第三步:打開(kāi)服務(wù)器管理器:系統(tǒng)中點(diǎn)擊 "開(kāi)始菜單程序"——> 管理工具 ——>服務(wù)器管理器
第四步:進(jìn)入服務(wù)器管理器,點(diǎn)擊左側(cè)的"角色"然后點(diǎn)擊右側(cè)"添加角色"
第五步:進(jìn)入添加角色向?qū)J(rèn)下一步,
第六步:服務(wù)器角色界面,勾選DHCP服務(wù)器;
第七步:勾選DHCP服務(wù)器后,單擊"下一步"按鈕,屏幕上將會(huì)彈出DHCP服務(wù)器簡(jiǎn)介窗口,默認(rèn)下一步;
第八步: 進(jìn)入選擇網(wǎng)絡(luò)連接綁定,勾選IP地址;安裝程序?qū)⒆詣?dòng)檢查你的服務(wù)器是否具有一個(gè)靜態(tài)IP地址,第2步設(shè)置了則會(huì)被檢測(cè)顯示出來(lái)。
第九步:接下來(lái)到"IPv4DNS設(shè)置",需要輸入你的父域名和DNS服務(wù)器的IP地址,這個(gè)域?qū)⒂糜谖覀冊(cè)谶@臺(tái)DHCP服務(wù)器上創(chuàng)建的所有作用域; 當(dāng)DHCP更新IP地址信息的時(shí)候,相應(yīng)的DNS更新會(huì)將計(jì)算機(jī)的名稱到IP地址的關(guān)聯(lián)進(jìn)行同步。
第十步:是否要設(shè)置WINS服務(wù)器地址參數(shù),默認(rèn)"此網(wǎng)絡(luò)上的應(yīng)用程序不需要WINS"選項(xiàng); (若需要?jiǎng)t正確設(shè)置好目標(biāo)WINS服務(wù)器的IP地址。)
第十一步:接下來(lái)的"DHCP作用域"窗口中,點(diǎn)擊右側(cè)"添加"我們可以根據(jù)本地局域網(wǎng)的IP地址分配情況,設(shè)置好DHCP服務(wù)器的適用范圍,同時(shí)選中"激活此作用域"選項(xiàng),并單擊"確定"添加完成。
第十二步: DHCPv6無(wú)狀態(tài)模式,選擇禁用模式;在Windows Server 2008中默認(rèn)增加了對(duì)下一代IP地址規(guī)范IPv6的支持,不過(guò)就目前的網(wǎng)絡(luò)現(xiàn)狀來(lái)說(shuō)很少用到IPv6,因此可以選擇對(duì)此服務(wù)器禁用DHCPv6無(wú)狀態(tài)模式。
第十三步: 在"確認(rèn)"界面,確認(rèn)后點(diǎn)擊安裝,開(kāi)始自動(dòng)安裝。進(jìn)度條完成,DHCP也安裝完成。
***同局域網(wǎng)中的客戶端設(shè)置為自動(dòng)獲得IP地址,即可獲得DHCP自動(dòng)分配的IP;
4. Linux系統(tǒng)下搭建DHCP服務(wù)
以u(píng)buntu系統(tǒng)為例:
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖如下:
配置步驟如下:
***步:安裝isc-dhcp-server
采用命令:apt-get install isc-dhcp-server:
***步:配置isc-dhcp-server
首先對(duì)作為DHCP服務(wù)器的"ubuntu 副本"進(jìn)行設(shè)置:
第三步:進(jìn)入超級(jí)用戶,編輯文件/etc/default/isc-dhcp-server文件:
在INTERFACES=""處填入網(wǎng)卡名enp0s3:
第四步:
將文件打開(kāi)發(fā)現(xiàn)有很多例子,都是被注釋掉了的,選用一個(gè)例子,修改后的結(jié)果如下:
修改本機(jī)的IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān),DNS等:
對(duì)該網(wǎng)卡進(jìn)行重啟,對(duì)網(wǎng)絡(luò)進(jìn)行重新啟動(dòng),將DHCP服務(wù)開(kāi)啟:
完成所有配置之后我們先查看一下網(wǎng)絡(luò)配置:
第五步:Linux客戶機(jī)配置(虛擬機(jī)從虛擬機(jī)獲得IP):
網(wǎng)絡(luò)連接設(shè)置為自動(dòng)獲取IP地址:
在命令行中輸入dhclient命令重新分配IP地址,我們發(fā)現(xiàn)IP地址成功被分配到了,其中圖一是未得到分配的IP地址,圖二是重分配后得到的由DHCP服務(wù)器192.168.137.2分配而來(lái)的IP地址192.168.137.101:
通過(guò)wireshark抓包進(jìn)行分析,可看到IP地址192.168.137.101的確是由DHCP服務(wù)器192.168.137.2提供的,并且可以看到它們之間的request-ack過(guò)程: