在常見的小型網絡中(例如家庭網絡和學生宿舍網),網絡管理員都是采用手工分配IP地址的方法,而到了中、大型網絡,這種方法就不太適用了。在中、大型網絡,特別是大型網絡中,往往有超過100臺的客戶機,手動分配IP地址的方法就不太合適了。因此,我們必須引入一種高效的IP地址分配方法,幸好,DHCP(DynamicHostConfigurationProtocol)為我們解決了這一難題。
DHCP的優缺點
DHCP服務優點不少:網絡管理員可以驗證IP地址和其它配置參數,而不用去檢查每個主機;DHCP不會同時租借相同的IP地址給兩臺主機;DHCP管理員可以約束特定的計算機使用特定的IP地址;可以為每個DHCP作用域設置很多選項;客戶機在不同子網間移動時不需要重新設置IP地址。
但同時也存在不少缺點:DHCP不能發現網絡上非DHCP客戶機已經在使用的IP地址;當網絡上存在多個DHCP服務器時,一個DHCP服務器不能查出已被其它服務器租出去的IP地址;DHCP服務器不能跨路由器與客戶機通信,除非路由器允許BOOTP轉發。
工作流程
DHCP服務的工作過程是這樣的:
1.發現階段,即DHCP客戶機尋找DHCP服務器的階段。DHCP客戶機以廣播方式(因為DHCP服務器的IP地址對于客戶機來說是未知的)發送DHCPdiscover發現信息來尋找DHCP服務器,即向地址255.255.255.255發送特定的廣播信息。網絡上每一臺安裝了TCP/IP協議的主機都會接收到這種廣播信息,但只有DHCP服務器才會做出響應。
2.提供階段,即DHCP服務器提供IP地址的階段。在網絡中接收到DHCPdiscover發現信息的DHCP服務器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其他設置的DHCPoffer提供信息。
3.選擇階段,即DHCP客戶機選擇某臺DHCP服務器提供的IP地址的階段。如果有多臺DHCP服務器向DHCP客戶機發來的DHCPoffer提供信息,則DHCP客戶機只接受第一個收到的DHCPoffer提供信息,然后它就以廣播方式回答一個DHCPrequest請求信息,該信息中包含向它所選定的DHCP服務器請求IP地址的內容。之所以要以廣播方式回答,是為了通知所有的DHCP服務器,他將選擇某臺DHCP服務器所提供的IP地址。
4.確認階段,即DHCP服務器確認所提供的IP地址的階段。當DHCP服務器收到DHCP客戶機回答的DHCPrequest請求信息之后,它便向DHCP客戶機發送一個包含它所提供的IP地址和其他設置的DHCPack確認信息,告訴DHCP客戶機可以使用它所提供的IP地址。然后DHCP客戶機便將其TCP/IP協議與網卡綁定,另外,除DHCP客戶機選中的服務器外,其他的DHCP服務器都將收回曾提供的IP地址。
5.重新登錄。以后DHCP客戶機每次重新登錄網絡時,就不需要再發送DHCPdiscover發現信息了,而是直接發送包含前一次所分配的IP地址的DHCPrequest請求信息。當DHCP服務器收到這一信息后,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,并回答一個DHCPack確認信息。如果此IP地址已無法再分配給原來的DHCP客戶機使用時(比如此IP地址已分配給其它DHCP客戶機使用),則DHCP服務器給DHCP客戶機回答一個DHCPnack否認信息。當原來的DHCP客戶機收到此DHCPnack否認信息后,它就必須重新發送DHCPdiscover發現信息來請求新的IP地址。
6.更新租約。DHCP服務器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿后DHCP服務器便會收回出租的IP地址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限過一半時,DHCP客戶機都會自動向DHCP服務器發送更新其IP租約的信息。
為了便于理解,我們把DHCP客戶機比做餐館里的客人,DHCP服務器比做服務員(一個餐館里也可以有多個服務員),IP地址比做客戶需要的食物。那么可以這樣描述整個過程:客人走進餐館,問:“有沒有服務員啊?”(DHCPdiscover),多個服務員同時回答:“有,我這有雞翅”“有,我這有漢堡”(DHCPoffer)。客人說:“好吧,我要一份漢堡”(DHCPrequest,這個客人比較死板,總是選擇第一次聽到的食物),端著漢堡的服務員回應了一聲:“來啦”(DHCPack),并把食物端到客人面前,供其享用(將網卡和IP地址綁定)。客人下次來的時候,就直接找上次那個服務員點自己喜歡的漢堡了(DHCPrequest),如果還有漢堡,服務員會再次確認并上菜(DHCPack),而如果已經賣完了,服務員則會告訴客人:“不好意思,已經賣完了”(DHCPnack)。當然,服務員隔一段時間會來收拾一次桌子,除非客人特別說明這菜還要繼續吃的,服務員會將剩菜端走。
接下來,我們就向大家說明如何在服務器上配置DHCP服務,我們選取了兩種最為常見的服務器操作系統Windows2000Server和Linux作為講解實例,另外我們還會介紹如何在常見的網絡設備上配置DHCP。
Windows2000Server
Windows2000Server在DHCP上下了很大的功夫,不僅解決了NT4.0中的種種問題,而且還增加了許多新的特性。例如和DNS的集成,加強的DHCP監視和管理,DHCP集群服務器,DHCP目錄授權等等。
下面是在Windows2000中配置DHCP服務的實例
1.安裝DHCP服務。用管理員賬號登錄,在控制面板中雙擊“添加/刪除程序”,選擇“添加/刪除Windows組件”,啟動Windows組件向導,選中“網絡服務”,單擊“詳細信息”,選中“動態主機分配協議”,單擊“確定”,即可在該服務器上安裝DHCP服務。
2.要想使剛安裝的DHCP服務器能為客戶機分配IP地址,必須首先在域中為該服務器授權。使用管理員賬號登錄計算機,在“管理工具”菜單中打開DHCP控制臺;在控制樹中,右鍵單擊想要授權的服務器,在彈出菜單中,單擊“授權”,即可完成對該服務器的授權。
注意:授權(Authorize),這個功能非常實用和必要,因為在舊版本的DHCP服務器中任何用戶都可以創建一臺DHCP服務器,該服務器也可以為用戶分配IP地址,這樣就可能造成地址沖突,在Windows2000Server中這個問題得到了有效的解決:任何DHCP服務器只有在目錄服務中被授權之后才能為客戶分配IP地址,否則即使該服務器收到租用請求,也不能為客戶機分配IP地址。
3.創建并配置作用域。在控制樹中,右鍵單擊要用來分配地址的服務器,選中“新建作用域”,在接下來的向導中,依次設置作用域名、作用域的起始地址、輸入子網掩碼、排除的地址或地址范圍、DHCP租約期限信息。名稱項只是作提示用,可填任意內容。IP地址范圍中有起始地址、結束地址和子網掩碼的選項,我們可以分別填入10.0.0.1,10.255.255.254,255.0.0.0。如果有必要,可在后面的選項中輸入要保留的IP地址或IP地址范圍。租約期限選項可設定DHCP服務器所分配的IP地址的有效期,比如設8天。最后,分配好DNS、WINS服務器,并激活作用域。
RedHatLinux
在Linux上配置DHCP需要的文件有/etc/dhcpd.conf,/var/state/dhcp/dhcpd.leases,相關工具有/etc/rc.d/init.d/dhcpd。下面是在RedHatLinux上配置DHCP的實例:
1.設置DHCP服務器的FQDN名optiondomain-name"clinet.com"
2.設置DNS的服務器地址optiondomain-name-servers10.1.1.1;
3.設置子網掩碼optionsubnet-mask255.255.0.0;
4.設置租約時間
如果客戶端不能請求一個指定的租用期,就使用該參數來定義該地址租用的時間長度default-lease-time1200;
如果客戶端可以請求一個制訂的租用期,就使用該命令來定義最長的租用時間max-lease-time87600
5.設置子網的網段及相關范圍配置
subnet10.0.0.0netmask255.0.0.0;
{
range10.0.0.210.10.10.10;//指定子網的IP范圍
optionbroadcast-address10.0.0.255;//指定子網的廣播地址
optionrouters10.0.0.1;//指定網關的IP
}
6.給客戶綁定靜態IP
hostclinet{
hardwareethernet00:50:BA:CA:2E:D2;
fixed-address10.10.10.10;
}
網絡設備
有時候,在一些中高端的網絡設備(路由器、交換機)上已經集成了DHCP服務,我們便可以在網絡設備上實現DHCP服務,不使用專門的主機做DHCP服務器,以節省成本。
下面是在cisco路由器上配置DHCP的實例
1.指定不自動分配的IP地址范圍
ipdhcpexcluded-address10.1.1.110.1.1.19//指定從10.1.1.1到10.1.1.19的IP地址是手工分配的
2.設置DHCP地址池
ipdhcppoolglobal//這條命令指定了DHCP地址池的名稱
network10.1.0.0255.255.0.0//動態分配的IP地址范圍,這里是10.1.0.0網段所有的IP地址(前面指定的非自動分配地址除外)
3.設置DHCP附加信息
domain-nameclient.com//為客戶機配置域后綴
dns-server10.1.1.110.1.1.2//為客戶機配置DNS服務器的地址,這里是10.1.1.1和10.1.1.2
netbios-name-server10.1.1.510.1.1.6//為客戶機配置WINS服務器地址,這里是10.1.1.5和10.1.1.6
netbios-node-typeh-node//為客戶機配置節點模式(影響名稱解釋的順利?如h-node是先通過wins服務器解釋)
default-router10.1.0.10010.1.0.101//為客戶機配置默認網關
4.設置租約期限
lease8//設置租約時間為8天
5.有時候我們需要為DHCP服務器設置子地址池,例如我們希望10.1.1.0/24這個網段的客戶機的網關為10.1.1.100,我們這樣設置:
ipdhcppoolsubglobal
network10.1.1.0255.255.255.0//global的子地址池,將從global繼承域名等選項
default-router10.1.1.10010.1.1.101//為客戶機配置默認網關
6.相關的DHCP調試命令
noservicedhcp//停止DHCP服務
showipdhcpbinding//顯示地址分配情況
showipdhcpconflict//顯示地址沖突情況。