当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux应用 DHCP服务器的安装和故障排除

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 Linux应用 DHCP服务器的安装和故障排除


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 178 ::
收藏到网摘: n/a

  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 "\001\000\000\350\240%\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 linux/gdhcpd/gdhcpd-0.2.9.tar.gz">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设置界面,如图所示。

22
Scopes设置界面

在这个界面中可以设置/etc/dhcpd.conf的parameters、declarations及option。在Single hosts界面中可以设置Hostname和Hardware address等,

0
 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服务器的故障排除。