歡迎您光臨本站 註冊首頁

Linux應用:DHCP伺服器的安裝和故障排除

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
  DHCP伺服器的工作原理

  DHCP簡介

  DHCP的前身是BOOTP,它工作在OSI的應用層,是一種幫助計算機從指定的DHCP伺服器獲取配置信息的自舉協議.DHCP使用客戶端/伺服器模式,請求配置信息的計算機叫做“DHCP客戶端”,而提供信息的叫做“DHCP伺服器”.DHCP為客戶端分配地址的方法有3種,即手工配置、自動配置和動態配置.DHCP最重要的功能就是動態分配,除了IP地址,DHCP還為客戶端提供其他的配置信息,如子網掩碼,從而是的客戶端無須用戶動手即可自動配置並連接網路.

  為什麼使用DHCP

  DHCP在快速發送客戶網路配置方面很有用,當配置客戶端系統時,若管理員選擇DHCP,則不必輸入IP地址、子網掩碼、網關或DNS伺服器,客戶端從DHCP伺服器中檢索這些信息.DHCP在網路管理員想改變大量系統的IP地址時也有用,與其重新配置所有系統,不如編輯伺服器中的一個用於新IP地址集合的DHCP配置文件.如果某機構的DNS伺服器改變,這種改變只須在DHCP伺服器中,而不必在DHCP客戶端上進行.一旦客戶端的網路被重新啟動(或客戶端重新引導系統),改變就會生效.除此之外,如果便攜電腦或任何類型的可移動計算機被配置使用DHCP,只要每個辦公室都有一個允許其聯網的DHCP伺服器,它就可以不必重新配置而在辦公室間自由移動.

  DHCP的工作流程

  1.發現階段

  即DHCP客戶端查找DHCP伺服器的階段.客戶機以廣播方式(DHCP伺服器的IP地址對於客戶端來說是未知的)發送DHCP discover信息來查找DHCP伺服器,即向地址255.255.255.255發送特定的廣播信息.網路上每一台安裝了TCP/IP的主機都會接收到這種廣播信息,但只有DHCP伺服器才會做出響應.

  2.提供階段

  即DHCP伺服器提供IP地址的階段,在網路中接收到DHCP discover信息的DHCP伺服器都會做出響應.它從尚未出租的IP地址中挑選一個分配給DHCP客戶端,向其發送一個包含出租的IP地址和其他設置的DHCP offer信息.

  3.選擇階段

  即DHCP客戶端選擇某台DHCP伺服器提供的IP地址的階段.如果有多台DHCP伺服器向DHCP客戶端發送DHCP offer信息,則DHCP客戶端只接受第1個收到的DHCP offer信息.然後它就以廣播方式回答一個DHCP request信息,該信息中包含向它所選定的DHCP伺服器請求IP地址的內容.之要以廣播方式回答,是為了通知所有DHCP伺服器,它將選擇某台DHCP伺服器所提供的IP地址.

  4.確認階段

  即DHCP伺服器確認所提供的IP地址的階段.當DHCP伺服器收到DHCP客戶端回答的DHCP request信息之後,它向DHCP客戶端發送一個包含其所提供的IP地址和其他設置的DHCP ACK信息,告訴DHCP客戶端可以使用該IP地址,然後DHCP客戶端便將其TCP/IP與網卡綁定.另外,除DHCP客戶端選中的伺服器外,其他的DHCP伺服器都將收回曾提供的IP地址.

  5.重新登錄

  以後DHCP客戶端每次重新登錄網路時,不需要發送DHCP discover信息,而是直接發送包含前一次所分配的IP地址的DHCP request信息.當DHCP伺服器收到這一信息后,它會嘗試讓DHCP客戶端繼續使用原來的IP地址,並回答一個DHCP ACK信息.如果此IP地址已無法再分配給原來的DHCP客戶端使用(比如此IP地址已分配給其他DHCP客戶端使用),則DHCP伺服器給DHCP客戶端回答一個DHCP NACK信息.當原來的DHCP客戶端收到此信息后,必須重新發送DHCP discover信息來請求新的IP地址.

  6.更新租約

  DHCP伺服器向DHCP客戶端出租的IP地址一般都有一個租借期限,期滿后DHCP伺服器便會收回該IP地址.如果DHCP客戶端要延長其IP租約,則必須更新其IP租約.DHCP客戶端啟動時和IP租約期限過一半時,DHCP客戶端都會自動向DHCP伺服器發送更新其IP租約的信息.

  DHCP的設計目標

  (1)DHCP應該是一種機制而不是策略,它必須允許本地系統管理員控制配置參數,本地系統管理員應該能夠對所希望管理的資源進行有效的管理.

  (2)客戶端不需要手工配置,而應該在不參與的情況下發現合適於本地機的配置參數,並利用這些參數加以配置.

  (3)不需要為單個客戶端配置網路,在通常情況下,網路管理員沒有必要輸入任何預先設計好的用戶配置參數.

  (4)DHCP不需要在每個子網上配置一台伺服器,出於經濟原因,DHCP伺服器必須可以和路由器或BOOTP轉發代理一起工作.

  (5)DHCP客戶端必須能對多個DHCP伺服器提供的服務做出響應,出於網路穩定與安全的考慮,有時需要在網路中添加多台DHCP伺服器.

  (6)DHCP必須靜態配置,必須用現存的網路協議實現.

  (7)DHCP必須能夠和BOOTP轉發代理互操作.

  (8)DHCP必須能夠為現有的BOOTP客戶端提供服務.

  (9)不允許有多個客戶端同時使用一個網路地址.

  (10)在DHCP客戶端重新啟動后仍然能夠保留其原先的配置參數,如果可能,客戶端應該被指定為相同的配置參數.

  (11)在DHCP伺服器重新啟動后仍然能夠保留客戶端的配置參數,如果可能,即使DHCP機制重新啟動,也應該能夠為客戶端分配原有的配置參數.

  (12)能夠為新加入的客戶端自動提供配置參數.

  (13)支持對特定客戶端永久固定分配網路地址.

  上面(9)~(13)的設計目標是對於網路層參數的設計而言的,在網路層參數上,DHCP必須做到這幾點.

  安裝DHCP伺服器

  DHCP配置文件

  可以使用RHEL 5.0自身攜帶的RPM包安裝,安裝結束后DHCP埠監督程序dhcpd配置文件是/etc目錄中的名為dhcpd.conf的文件.下面手工建立/etc/dhcpd.conf文件,該文件通常包括3個部分,即parameters參數、declarations聲明和option選項.

  1.DHCP配置文件中的parameters

  parameters表明如何執行任務,以及是否要執行任務或將哪些網路配置選項發送給客戶端,主要參數如表8-1所示.

  DHCP配置文件中的主要參數

參 數

解 釋

ddns-update-style

配置DHCP-DNS互動更新模式

default-lease-time

指定默認租賃時間的長度,單位是秒

max-lease-time

指定最大租賃時間長度,單位是秒

hardware

指定網卡介面類型和MAC地址

server-name

通知DHCP客戶端伺服器名稱

get-lease-hostnames flag

檢查客戶端使用的IP地址

fixed-address ip

分配給客戶端一個固定的地址

authritative

拒絕不正確的IP地址的要求

   2.DHCP配置文件中的declarations

  declarations用來描述網路布局及提供客戶的IP地址等,主要聲明

聲 明

解 釋

shared-network

用來告知是否一些子網路共享相同網路

subnet

描述一個IP地址是否屬於該子網

range起始IP終止IP

提供動態分配IP的範圍

host主機名稱

參考特別的主機

group

為一組參數提供聲明

續表

聲 明

解 釋

allow unknown-clients﹔deny unknown-client

是否動態分配IP給未知的使用者

allow bootp;deny bootp

是否響應激活查詢

allow booting﹔deny booting

是否響應使用者查詢

filename

開始啟動文件的名稱,應用於無盤工作站

next-server

設置伺服器從引導文件中裝入主機名,應用於無盤工作站

  DHCP配置文件中的option

  option用來配置DHCP可選參數,全部用option關鍵字作為開始,主要選項如表8-3所示.表8-3 DHCP配置文件中option關鍵字的主要選項 選 項
解 釋

  subnet-mask
  為客戶端設定子網掩碼

  domain-name
   為客戶端指明DNS名字

  domain-name-servers
   為客戶端指明DNS伺服器的IP地址

  host-name
   為客戶端指定主機名稱

  routers
  為客戶端設定默認網關

  broadcast-address
  為客戶端設定廣播地址

  ntp-server
  為客戶端設定網路時間伺服器的IP地址

  time-offset
  為客戶端設定格林威治時間的偏移時間,單位是秒

  配置實例

  在下面的實例中使用一個example.com的虛擬域名,用戶需要修改其中的內容以滿足網路的需求./etc/dhcpd.conf文件的內容如下:

# The options outside a subnet directive are global unless

# over-ridden by the same setting inside the subnet directive.

option domain-name-servers 192.0.34.43, 193.0.0.236;

default-lease-time 6000; max-lease-time 7200;# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.authoritative;

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).log-facility local7;

# Handle client dynamic dns updates

ddns-update-style none;# Example Network 1 ( on eth0 )

subnet 192.168.200.0 netmask 255.255.255.0 {

option domain-name "corp.example.com";

range 192.168.200.100 192.168.200.200;

option routers 192.168.200.254;

}

  上面的實例配置文件分為兩個部分,即子網配置信息和全局配置信息.可以有多個子網,這裡為了簡化,只指定了一個子網.

(1)Subnet.

  在上面的例子中,一個子網聲明以“subset”關鍵字開始,子網信息包括在{}中.{}中的配置信息只對該子網有效,會覆蓋全局配置.

(2)Global.

  所有子網以外的配置都是全局配置,如果同一個全局配置沒有被子網配置覆蓋,則其將對所有子網生效.

(3)Configuration Options.

  下面是上例中配置指令的解釋說明.

  option domain-name-servers 192.0.34.43, 193.0.0.236;

  這一行指定客戶端應該使用的DNS伺服器,該選項可以用於全局參數或者子網參數.

  default-lease-time 6000; max-lease-time 7200;

  這兩行是相關的,default-lease-time指定客戶端需要刷新配置信息的時間間隔(秒),max-lease-time為客戶端用於無法從伺服器獲得任何信息的時間,超過該時間則會丟棄之前從該DHCP伺服器獲得的所有信息,而轉向使用OS的默認設置.

  authoritative;

  指定當一個客戶端試圖獲得一個不是該DHCP伺服器分配的IP信息,DHCP將發送一個拒絕消息,而不會等待請求超時.當請求被拒絕,客戶端會重新向當前DHCP發送IP請求獲得新地址.

  log-facility daemon;

  指定DHCP伺服器發送的日誌信息的日誌級別.

  ddns-update-style none;

  該配置可以指定一個方法,客戶端用該方法來更新IP對應的域名信息,本例中禁用了該特性.

subnet 192.168.200.0 netmask 255.255.255.0 {

option domain-name "corp.example.com";

range 192.168.200.100 192.168.200.200;

option routers 192.168.200.254;

}

  上面內容為子網配置,第1行指定該子網地址和掩碼.DHCP伺服器必須擁有該子網的一個IP,domain-name設置該客戶端的域名.DHCP伺服器可以負責整個子網的信息,也可以只負責子網的一段.

option routers配置默認網關IP.

  啟動DHCP伺服器

  1.建立客戶端租約文件

  運行DHCP伺服器還需要一個名為“dhcpd.leases”的文件,其中保存所有已經分發的IP地址.在Red Hat Linux發行版本中,該文件位於/var/lib/dhcp/目錄中.如果通過RPM安裝ISC DHCP,那麼該目錄應該已經存在.dhcpd.leases的文件格式為:

Leases address {statement}

一個典型的文件內容如下:

lease 192.168.1.255 { #DHCP伺服器分配的IP地址#

starts 1 2005/05/02 03:02:26; # lease 開始租約時間#

ends 1 2005/05/02 09:02:26; # lease 結束租約時間#

binding state active;

next binding state free;

hardware ethernet 00:00:e8:a0:25:86; #客戶機網卡MAC地址#

uid "010000350240%206"; #用來驗證客戶機的UID標誌#

client-hostname "cjh1"; #客戶機名稱#

}

注意:lease開始租約時間和lease結束租約時間是格林威治標準時間(GMT),不是本地時間.

  第1次運行DHCP伺服器時,dhcpd.leases是一個空文件,也不用手工建立.如果不是通過RPM安裝ISC DHCP,或者dhcpd已經安裝,那麼應該試著確定dhcpd將其lease文件寫到何處並確保該文件存在.也可以手工建立一個空文件:

#touch /var/lib/dhcp/dhcpd.leases

  2.啟動和檢查DHCP伺服器

  使用命令啟動DHCP伺服器:

#service dhcpd start

使用ps命令檢查dhcpd進程:

#ps -ef | grep dhcpd

root 2402 1 0 14:25 ? 00:00:00 /usr/sbin/dhcpd

root 2764 2725 0 14:29 pts/2 00:00:00 grep dhcpd

使用netstat檢查dhcpd運行的埠:

# netstat -nutap | grep dhcpd

udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd

  3.設置DHCP轉發代理

  DHCP的轉發代理(dhcrelay)允許把無DHCP伺服器子網內的DHCP和BOOTP請求轉發給其他子網內的一台或多台DHCP伺服器.當某個DHCP客戶端請求信息時,DHCP轉發代理把該請求轉發給DHCP轉發代理啟動時所指定的一台DHCP伺服器.當某台DHCP伺服器返回一個回應時,該回應被廣播或單播給發送最初請求的網路.除非使用INTERFACES指令在/etc/sysconfig/dhcrelay文件中指定了介面,否則DHCP轉發代理監聽所有介面上的DHCP請求.要啟動DHCP轉發代理,使用命令:

service dhcrelay start

  4.從指定埠啟動DHCP伺服器

如果系統連接不止一個網路介面,但是只想讓DHCP伺服器啟動其中之一,則可以配置DHCP伺服器只在相應設備上啟動.在/etc/sysconfig/dhcpd中,把介面的名稱添加到DHCPDARGS的列表中:

# Command line options here

DHCPDARGS=eth0

如果有一個帶有兩塊網卡的防火牆機器,這種方法就會大派用場.一塊網卡可以被配置成DHCP客戶端從互聯網上檢索IP地址;另一塊網卡可以被用做防火牆之後的內部網路的DHCP伺服器.僅指定連接到內部網路的網卡使系統更加安全,用戶無法通過互聯網來連接其守護進程.

其他可在/etc/sysconfig/dhcpd中指定的命令行選項如下.

(1)-p<portnum>:指定dhcpd應該監聽的UDP埠號碼,默認值為67.DHCP伺服器在比指定的UDP埠大一位的埠號上把回應傳輸給DHCP客戶端.例如,如果使用默認埠67,伺服器就會在埠67上監聽請求,然後在埠68上回應客戶.如果在此處指定了一個埠號,並且使用了DHCP轉發代理,所指定的DHCP轉發代理所監聽的埠必須是同一埠.

(2)-f:把守護進程作為前台進程運行,在調試時最常用.

(3)-d:把DCHP伺服器守護進程記錄到標準錯誤描述器中,在調試時最常用.如果未指定,日誌將被寫入/var/log/messages中.

(4)-cf<filename>:指定配置文件的位置,默認為/etc/dhcpd.conf.

(5)-lf<filename>:指定租期資料庫文件的位置.如果租期資料庫文件已存在,在DHCP伺服器每次啟動時使用同一個文件至關重要.建議只在無關緊要的機器上為調試目的才使用該選項,默認為/var/lib/dhcp/dhcpd.leases.

(6)-q:在啟動該守護進程時,不要顯示整篇版權信息.

  5.管理DHCP伺服器埠

常見的DHCP伺服器是dhcpd,可以通過命令行設定其監聽埠.例如,使用以下命令:

#dhcpd eth0

該命令允許dhcpd進程只在eth0網路埠上工作,默認為監聽所有埠.由於DHCP同樣使用67和68埠通信,更改該埠將造成DHCP服務無法正常使用.

  設置DHCP客戶端

  1.在Linux下配置DHCP客戶端

  配置DHCP客戶端的第1步是確定內核能夠識別網卡,多數網卡會在安裝過程中被識別,系統會為該網卡配置恰當的內核模塊.如果在安裝后添加了一塊網卡,Kudzu應該會識別它,並提示為其配置相應的內核模塊.通常網管員選擇手工配置DHCP客戶端,需要修改/etc/sysconfig/network文件來啟用聯網;修改/etc/sysconfig/network-scripts目錄中每個網路設備的配置文件,在該目錄中的每種設備都有一個叫做“ifcfg-eth?”的配置文件.eth?是網路設備的名稱,如eth0等.如果想在引導時啟動聯網,NETWORKING變數必須被設為yes.除此之外,/etc/sysconfig/network文件應該包含以下行:

NETWORKING=yes

DEVICE=eth0

BOOTPROTO=dhcp

ONBOOT=yes

每種需要配置使用DHCP的設備都需要一個配置文件.其他網路腳本包括的選項如下.

(1)DHCP_HOSTNAME:只有當DHCP伺服器在接收IP地址前需要客戶端指定主機名時才使用該選項.

(2)PEERDNS=<answer>:<answer>取值為如下之一.

 yes:使用來自伺服器的信息來修改/etc/resolv.conf.若使用DHCP,那麼yes是默認值.

 no:不要修改/etc/resolv.conf.

(3)SRCADDR=<address>:<address>是用於輸出包的指定源IP地址.

(4)USERCTL=<answer>:<answer>取值為如下之一.

 yes:允許非根用戶控制該設備.

 no:不允許非根用戶控制該設備.

  2.在Windows下設置DHCP客戶端

  Windows 2000和Windows XP的配置方法相同,DHCP客戶端的配置很簡單.只需要在“控制面板”中雙擊“網路連接”圖標,然後在如圖8-1所示的“本地連接屬性”對話框中選擇“Internet協議(TCP/IP)”屬性.

“常規”選項卡中選擇“自動獲取IP地址”和“自動獲取DNS伺服器地址”單選按鈕.

  3.測試埠監督程序

  現在應該已經可以將一個客戶機接入到網路中,並通過DHCP請求一個IP地址.要通過Windows客戶端測試,在DOS提示符下執行以下操作. (1)清除適配器可能已經擁有的IP地址信息,執行命令:

ipconfig /release

(2)向DHCP伺服器請求一個新的IP地址,執行命令:

ipconfig /renew

顯示從DHCP伺服器獲得的信息,應該會看到Primary WINS Server、DNS Servers和Connection-specific DNS Suffix域都獲得了dhcpd.conf文件中提供的數據:

ipconfig /all

  DHCP伺服器的故障排除

  通常配置DHCP伺服器很容易,有一些技巧可以幫助避免出現問題.對伺服器而言,要確保網卡正常工作並具備廣播功能;對客戶端而言,要確保網卡正常工作.,要考慮網路的拓撲,以及客戶端向DHCP伺服器發出的廣播消息是否會受到阻礙.另外,如果dhcpd進程沒有啟動,那麼可以瀏覽syslog消息文件來確定是哪裡出了問題,這個消息文件通常是/var/ log/messages.

  客戶端無法獲取IP地址

  DHCP伺服器配置完成且沒有語法錯誤,但是網路中的客戶端卻無法取得IP地址.這通常是由於Linux DHCP伺服器無法接收來自255.255.255.255的DHCP客戶端的request封包造成的,一般是Linux DHCP伺服器的網卡沒有設置MULTICAST功能.為了讓dhcpd(dhcp程序的守護進程)能夠正常地和DHCP客戶端溝通,dhcpd必須傳送封包到255.255.255.255這個IP地址.但是在有些Linux系統中,255.255.255.255這個IP地址被用來作為監聽區域子網域(local subnet)廣播的IP地址.需要在路由表(routing table)中加入255.255.255.255以激活MULTICAST功能,執行命令:

route add -host 255.255.255.255 dev eth0

如果報告錯誤消息:

255.255.255.255:Unkown host

那麼修改/etc/hosts,加入如下行:

255.255.255.255 dhcp

  DHCP客戶端程序和DHCP伺服器不兼容

  由於Linux有許多發行版本,不同版本使用的DHCP客戶端和DHCP伺服器程序也不相同.Linux提供了4種DHCP客戶端程序,即pump、dhclient、dhcpxd和dhcpcd.了解不同Linux發行版本的伺服器端和客戶端程序對於排除常見錯誤是必要的,如果使用SuSE Linux 9.1 DHCP伺服器和使用Mandrake Linux 9.0客戶端不兼容的情況,則必須更換客戶端程序.方法是停止客戶端的網路服務,卸載原程序,然後安裝和伺服器端兼容的程序.表8-4所示為主要Linux發行版本使用的DHCP客戶端.

主要Linux發行版本使用的DHCP客戶端

發行版本

默認DHCP客戶端

可選DHCP客戶端

DHCP客戶端啟動腳本

附加配置文件

RHEL 4.0

dhclient

/sbin/ifup

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

Debian Linux 3.0

dhclient

/sbin/ifup

/etc/network/interfaces

/etc/dhclient.conf

Mandrake Linux 9.1

dhclient

dhcpcd、dhcpxd和pump

/sbin/ifup

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/dhclient-eth0.conf

SuSE Linux 9.1

dhcpcd

dhclient

/sbin/ifup-dhcp

/etc/sysconfig/network/dhcp

/etc/sysconfig/network/ifcfg-eth0

  管理監控DHCP伺服器

/etc/dhcpd.conf通常包括3個部分,即parameters、declarations和option,共40多個參數,可以使用Gdhcpd管理監控DHCP伺服器.

Gdhcpd是一個在GNOME及KDE桌面環境下的DHCP管理工具,基本上能實現命令行模式下的所有功能.由於DHCP是一個非常複雜的協議,配置工作也是比較麻煩的.

  Gdhcpd是一套在GTK 圖形界面下開發並用於幫助管理員在桌面環境下完成DHCP設置工作的DHCP前端程序.通過Gdhcpd,網路管理員可以管理DHCP,包括啟動及停止DHCP伺服器的服務.也可以直接修改配置文件,或決定系統重新啟動的時間.幾乎所有與DHCP相關的功能都能使用Gdhcpd直接完成.

  1.下載安裝

  #Wget http://mange.dynalias.org/linux/gdhcpd/gdhcpd-0.2.9.tar.gz

  2.系統要求

  硬體要求為中央處理器兼容Intel X86處理器,PentiumII 400以上,64 MB(推薦128 MB)內存,150 MB以上硬碟空間,顯示內存4 MB.軟體要求為內核版本基於2.4或以上,GNOME 1.2以上.桌面解析度至少為640×480,桌面顏色至少65 000色(16位元).

  3.安裝前的準備工作

  安裝過程中需要編譯,因此需要GCC(2.96以上)、Qt(2.0以上)和GTK+2.0支持,需要使用RPM來確認:

rpm -qa | grep gcc;rpm -qa | grep qt;rpm -qa | grep gtk+

  4.在命令行下安裝軟體

命令如下:

gunzip gdhcpd-0.2.9.tar.gz

tar vxf gdhcpd-0.2.9.tar

cd gdhcpd-0.2.9

./configure;make;make install

  5.運行軟體

執行一個終端運行命令“/usr/sbin/gdhcpd”,顯示Scopes設置界面,如圖所示.


Scopes設置界面

  在這個界面中可以設置/etc/dhcpd.conf的parameters、declarations及option.在Single hosts界面中可以設置Hostname和Hardware address等,


Single hosts設置界面

  供備份的DHCP設置

  在中型網路中,數百台計算機的IP地址的管理是一個大問題.為了解決這個問題,相信許多校園網網管會使用DHCP來動態地為客戶端分配IP地址.但是這同樣意味著如果DHCP伺服器某種原因癱瘓,DHCP服務自然也就無法使用.客戶端也就無法獲得正確的IP地址,從而影響整個網路的運行.為解決這個問題,配置兩台以上的DHCP伺服器即可.如果其中的一台DHCP伺服器故障,另外一台DHCP伺服器就會自動承擔分配IP地址的任務.對於用戶來說,這個過程是透明的,他們並不知道DHCP伺服器的變化.

  另外,在一個具備多個子網的網路中,提供冗餘是一個非常重要的方法.由於DHCP中DHCP伺服器負責分配IP地址,一旦DHCP伺服器出現故障,那麼所有的客戶端就無法正確獲得IP地址,從而不能訪問網路.

  可以同時設置多台DHCP伺服器來提供冗餘,然而Linux的DHCP伺服器本身不提供備份.它們佔用的IP地址資源也不能重疊,以免發生客戶端IP地址衝突的現象.提供容錯能力即通過分割可用的IP地址到不同的DHCP伺服器上,多台DHCP伺服器同時為一個網路服務,從而是的一台伺服器發生故障還能正常執行操作.通常為了進一步增強可靠性,還可以將不同的DHCP伺服器放置在不同子網中,互相使用中轉提供服務.

  例如,在兩個子網中各自有一台DHCP伺服器.標準的做法可以不使用DHCP中轉,各子網中的伺服器為各個子網服務.然而為了達到容錯的目的,可以互相為另一個子網提供服務,通過設置中轉或路由器轉發廣播以達到互為服務的目的.

例如,位於192.168.3.0網路上的srv1的配置文件片段為:

subnet 192.168.3.0 netmask 255.255.255.0 {

range 192.168.3.10 192.168.3.199;

}

subnet 192.168.4.0 netmask 255.255.255.0 {

range 192.168.4.200 192.168.4.220;

}

位於192.168.4.0網路上的srv2的配置文件片段可能為:

subnet 192.168.4.0 netmask 255.255.255.0 {

range 192.168.4.10 192.168.4.199;

}subnet 192.168.3.0 netmask 255.255.255.0 {

range 192.168.3.200 192.168.3.220;

}

注意:上述設置都是設置樣例,標準情況下還需分別指定各option,用於設置IP地址及其相關設置.

  可以看出兩台伺服器都能為兩個網路上的客戶端分配IP地址,而各自又有一個主要服務的網路.每個網路上的IP地址主要放在本地的伺服器上,但也有少部分地址放在另一檯子網中的伺服器中(地址資源不能衝突),這樣提供了一定的容錯能力.實際上在多子網網路中,沒有必要每個子網設置一台伺服器,並使用另外的伺服器備份.一般網路中有2台~3台DHCP伺服器即可.其他子網可以通過DHCP中轉的方式,為該子網提供DHCP服務.

  以debug模式運行DHCP伺服器

執行命令如下:

#dhcpd -d

  該命令指明dhcpd將出錯信息記錄到標準的錯誤描述器,記錄的信息將根據/etc/syslog.conf文件的配置保存在指定的文件中.例如,在/etc/syslog.conf文件中要指定記錄debug信息:

logalldebuginformationinto/var/log/dameon.log

dameon.=debug/var/log/dameon.log

  小結

  DHCP伺服器是Linux下比較簡單的伺服器.DHCP在快速發送客戶網路配置方面很有用,當配置客戶端系統時,若管理員選擇DHCP,則不必輸入IP地址、子網掩碼、網關或DNS伺服器,客戶端從DHCP伺服器中檢索這些信息.DHCP在管理員想改變大量系統的IP地址時也有用,與其重新配置所有系統,不如編輯伺服器中的一個用於新IP地址集合的DHCP配置文件即可.本章介紹DHCP伺服器的工作原理,安裝DHCP伺服器和設置DHCP客戶端的方法以及DHCP伺服器的故障排除.


[火星人 ] Linux應用:DHCP伺服器的安裝和故障排除已經有1553次圍觀

http://coctec.com/docs/linux/show-post-56901.html