天天看點

DHCP服務在網絡中的應用

我們知道在TCP/IP網絡應用中,網絡使用者PC隻有在擷取了一個網絡位址,才可以和其他的網絡使用者進行通訊,在實際應用中,我們經常會遇到一些問題:比如IP位址發生沖突、由于網關或DNS伺服器位址的設定出現錯誤而無法通路網絡中的其他主機、由于機器的經常變動位置而不得不頻繁地修改IP位址。基于這些在網絡管理中所存在的種種問題,解決的方法是引入DHCP服務,以動态的方式實作客戶機器的資訊配置。下面從DHCP原理出發并結合本人在授課過程的實際經驗為依據,對DHCP的應用以及在實際應用中我們會遇到的各類問題和相應的解決方法做深入的探讨。

一、DHCP服務是什麼

DHCP稱為動态主機配置協定。DHCP服務允許工作站連接配接到網絡并且自動擷取一個IP位址。配置DHCP服務的伺服器可以為每一個網絡客戶提供一個IP位址、子網路遮罩、預設網關、一個WINS伺服器的IP位址,以及一個DNS伺服器的IP位址。

二、DHCP服務在實際應用中的常見問題

1、在一個子網内是否可以存在多台DHCP伺服器,如果存在的話,那麼該子網中的客戶機能否正确擷取位址,将會擷取哪個DHCP伺服器所配置設定的位址,是否能控制客戶機器能從管理人員所設定的DHCP伺服器中擷取位址而不會從一些非法使用者自建的DHCP伺服器中取得非法得IP?

2、如果網絡中存在多個子網,而子網的客戶機需要DHCP伺服器提供位址配置,那麼是采取在各個子網都安裝一台DHCP伺服器,還是隻在某一個子網中安裝DHCP伺服器,讓它為多個子網的客戶機配置設定IP位址,應該如何實作?

3、如果采取在一個子網中安裝DHCP伺服器,讓它為多個子網的客戶機配置設定IP位址,那麼應該需要在一台DHCP伺服器中建立多個不同範圍的作用域,而我們如何可以準确地保證相應範圍的位址配置設定給相應子網地主機呢?

4、如果客戶機器無法從DHCP伺服器中擷取IP位址,那麼Windows2000客戶機器将會如何處理自己的TCP/IP設定?

三、DHCP的工作原理

要解析第二點中所提的問題,首先要搞清楚DHCP的實際的工作過程及原理,下面就對此做簡單介紹:DHCP是一個基于廣播的協定,它的操作可以歸結為四個階段,這些階段是IP租用請求、IP租用提供、IP租用選擇、IP租用确認。

1、IP租用請求:在任何時候,客戶計算機如果設定為自動擷取IP位址,那麼在它開機時,就會檢查自己目前是否租用了一個IP位址,如果沒有,它就向DCHP請求一個租用,由于該客戶計算機并不知道DHCP伺服器的位址,是以會用255.255.255.255作為目标位址,源位址使用0.0.0.0,在網絡上廣播一個DHCPDISCOVER消息,消息包含客戶計算機的媒體通路控制(MAC)位址(網卡上内建的硬體位址)以及它的NetBIOS名字。

2、IP租用提供:當DHCP伺服器接收到一個來自客戶的IP租用請求時,它會根據自己的作用域位址池為該客戶保留一個IP位址并且在網絡上廣播一個來實作,該消息包含客戶的MAC位址、伺服器所能提供的IP位址、子網路遮罩、租用期限,以及提供該租用的DHCP伺服器本身的IP位址。

3、IP租用選擇:如果子網還存在其它DHCP伺服器,那麼客戶機在接受了某個DHCP伺服器的DHCPOFFER消息後,它會廣播一條包含提供租用的伺服器的IP位址的DHCPREQUEST消息,在該子網中通告所有其它DHCP伺服器它已經接受了一個位址的提供,其他DHCP伺服器在接收到這條消息後,就會撤銷為該客戶提供的租用。然後把為該客戶配置設定的租用位址傳回到位址池中,該位址将可以重新作為一個有效位址提供給别的計算機使用。

4、IP租用确認: DHCP伺服器接收到來自客戶的DHCPREQUEST消息,它就開始配置過程的最後一個階段,這個确認階段由DHCP伺服器發送一個DHCPACK包給客戶,該包包括一個租用期限和客戶所請求的所有其它配置資訊,至此,完成TCP/IP配置。

四、DHCP服務常見問題的解決方案

本文第二點中我們所提出的問題有四點,以下就此4個問題做相應的分析并給出我個人的一些解決方案,相信可以對學習DHCP服務的自學者會有一定的幫助,這些問題也是在實際教學中學生提出疑問最多的知識難點。

1、根據客戶計算機的IP租用原理可以知道,在一個子網内,如果存在多台DHCP伺服器來提供位址配置資訊,這是不違反請求、配置設定原則的,因為隻要中有一台客戶計算機在該子網中提出IP位址租約請求,由于請求是廣播形式的,是以在子網中可以有任意數量的特定DHCP伺服器響應一個IP租用請求,而客戶請求後選中的是這些任意特定DHCP伺服器中的某一台,這個選擇具有随機性,但有一點要注意的是客戶隻能為每一張網絡接口卡接受一個租用提供,上面所謂特定的DHCP伺服器是指那些經過系統授權的DHCP伺服器,而非授權的DHCP伺服器将無法在網絡中提供正常的位址配置設定服務,這一點非常重要,因為這樣一來客戶機器将隻會在管理者設定的位址範圍中取得位址,Windows 2000作業系統的這一新增功能,通過對DHCP伺服器進行認證避免了非法DHCP伺服器配置設定非法IP位址造成的IP位址沖突,在實際應用中,客戶機器擷取非法的位址經常是造成網絡癱瘓和無法正常通訊的一大原因。綜合上面的分析可以做出第一個問題的結論:在一個子網中可以存在多台DHCP伺服器來提供位址配置設定,但能夠作為位址提供的不是任意的DHCP伺服器,而應該是經過系統認證的那些,客戶機請求位址時最終從那一台經過認證機器中擷取時随機的。此外,從另一個角度看,在相同子網上使用多個 DHCP 伺服器,将為它所服務的 DHCP 客戶機提供更強的容錯能力,如下圖所示,在一個子網内(網絡号為192.168.1.0 掩碼為255.255.255.0)共用兩個 DHCP 伺服器,其中的DHCP伺服器1不可用的話,DHCP伺服器2可以取代它并繼續租用新的位址或續訂現有客戶機。可以建議采用的解決方案是使用 80/20 規則來劃分兩個 DHCP 伺服器之間的作用域位址,具體做法可以是将伺服器 1 配置成可使用大多數位址(約 80%),伺服器 2 可以配置成讓客戶機使用其他位址(約 20%)。

2、如果在一個網絡中存在多個子網,而多個子網的主機都需要DHCP伺服器來提供位址配置資訊,那麼我們可以采用的方法是在每一個子網中安裝一台DHCP伺服器,讓它們來為各個子網配置設定IP位址,但從節約資源利用出發,我們一般情況下不這樣做,可以采取在一個子網中安裝DHCP伺服器,讓它來為多個子網配置設定IP位址,實作多子網位址配置設定可以借助DHCP的中繼代理功能實作,而作為中繼代理的裝置可以是一台提供中繼代理程式的Windows2000伺服器或是一個符合RFC1542規定的路由器,具備 DHCP/ BOOTP Relay Agent 的功能(DHCP relay agent能夠把 DHCP/BOOTP 廣播資訊從一個網段轉播到另一個網段上)。以管理的區域網路分為三個子網,用Win2000伺服器連接配接。

下面是實作跨子網使用DHCP伺服器的具體解決方案:

(1)安裝DHCP中繼代理程式:在Windows2000伺服器的“路由和遠端通路”視窗中,依次展開“本地伺服器→IP路由選擇→正常”選項,右鍵點選“正常”選項,在彈出的菜單中選擇“新增路由協定”,然後在“新路由協定”視窗中選擇“DHCP中繼代理程式”,接着點選“确定”按鈕。

(2)指定DHCP伺服器:右鍵點選剛剛添加的“DHCP中繼代理程式”選項,在彈出菜單中選擇“屬性”,進入“DHCP中繼代理程式屬性”對話框,在“正常”标簽頁的“伺服器位址”欄中輸入子網1中DHCP伺服器的IP位址:192.168.1.2,然後點選“添加”按鈕,最後點選“确定”按鈕關閉該對話框。

(3)配置通路接口:右鍵點選“DHCP中繼代理程式”選項,在彈出菜單中選擇“新增接口”,然後在“DHCP中繼代理程式的新接口”對話框中的“接口”清單框中選中可以通路子網1中的DHCP伺服器的接口,這裡新增的接口應該是接口二和接口三,接着點選“确定”按鈕。然後在彈出的“DHCP中繼站屬性”對話框中,選中“中繼DHCP資料包”選項,這樣就啟用了它的中繼功能,最後點選“确定”按鈕。

(4)DHCP伺服器中配置一個超級作用域,其中包含三個普通作用域,作用域位址範圍可以分别設定為192.168.1.10~192.168.1.254(配置設定給子網1的PC使用);192.168.2.10~192.168.2.254(配置設定給子網2的PC使用);192.168.3.10~192.168.3.254(配置設定給子網3的PC使用),必須記住DHCP隻能為每一個子網配置設定一個範圍。

完成以上配置後,子網2和子網3中的DHCP客戶機PC2及PC3就可以通過主機A的DHCP中繼代理程式通路子網1中的DHCP伺服器。

3、解決了單台DHCP伺服器為多個子網配置設定IP位址後,我們還要搞清楚的一個問題是,如果某一個子網的PC如子網2中的PC2或子網3中的PC3發出位址請求資訊後,主機A可以作為中繼代理對他們的請求傳達子網1中的DHCP伺服器,但該DHCP伺服器如何可以确定并準确地将作用域192.168.2.0網段的位址分給PC2而把作用域192.168.3.0網段的位址分給PC3呢?這個是多數學生可能存在的疑問,要搞清楚這個問題,可以參考以下的原理分析來找答案:以子網2中的主機PC2為例,DHCP 客戶機PC2在子網2 上廣播 DHCP/BOOTP discover 消息 (DHCPDISCOVER),廣播是将消息以 UDP (User Datagram Protocol)資料包的形式通過 67 端口發出,當中繼代理(relay agent)主機A接收到這個消息後,它檢查包含在這個消息報頭中的網關IP 位址,如果網關IP 位址為 0.0.0.0 ,則用 relay agent主機A的接口二的IP位址192.168.2.1替換它,然後将其轉發到 DHCP 伺服器所在的子網1上(主機A還擔任路由器功能)。當在子網1中的 DHCP伺服器收到這個消息後,它開始檢查消息中的網關IP位址,然後判斷該網關位址是否包含在DHCP的某一個作用域範圍内,進而決定它是否可以使用相應的作用域的位址來提供IP位址租約,當然,本例中DHCP伺服器将會從作用域192.168.2.10~192.168.2.254選取一個位址來配置PC2;也就是說DHCP客戶機的請求位址消息中的網關IP位址 (GIADDR) 将是DHCP伺服器用來确定從那個DHCP 範圍中挑選IP位址來配置客戶機的依據。

4、如果DHCP客戶機無法找到DHCP伺服器,則它從微軟保留的 B 類網段 169.254.0.0 中挑選一個 IP 位址作為自己的 IP 位址,子網路遮罩為 255.255.0.0 ,所挑選的位址由DHCP客戶機利用ARP 廣播來确定自己所挑選的 IP 位址是否已被網絡上的其它裝置使用,如果該 IP 位址已被使用,那麼客戶機會再挑選另一個IP位址重新進行測試,而且最多可以重試十個IP 位址,直到成功擷取配置。在此之後,客戶機會在背景繼續每隔 5 分鐘嘗試與DHCP伺服器進行通信,一旦與伺服器取得聯絡,則客戶機放棄自動設定的 IP 位址,而使用伺服器配置設定的 IP 位址和其它配制資訊。是以當你在某一天發現你的PC的IP位址是個B類的位址169.254.0.0/16網段的位址時,你就應該知道那是怎麼一回事了吧。

至此,我們分析了幾個關于DHCP服務的應用方面的疑難問題,并且給出了相應的解決方案,對于DHCP服務在教學中我們還遇到許多一些其他問題,比如說DHCP伺服器本身的位址是否一定要由管理者靜态指定,設定為自動擷取将會有什麼後果?為什麼把客戶機器向DHCP伺服器請求位址稱為位址租用,租用時間的長短對網絡中IP位址的管理與應用有哪些幫助?如何可以使用DHCP服務讓一個自動擷取IP的主機能在任何時候都能取得指定的一個固定位址?這些問題都要求教師在教學當中要認真地去探究該服務的每一個細節的知識點,才可以對該知識點的原理以及在實際中的應用進行透徹的講授,也是我們熟練掌握和使用DHCP服務的前提。

本文轉自 goldwinner 51CTO部落格,原文連結:http://blog.51cto.com/355665/237018,如需轉載請自行聯系原作者

繼續閱讀