LinuxCentOS 5.4 Linux)服务器配置之DHCP服务器配置应用
Linux 下的DHCP服务器配置不像Windows 下那样在图形化界面设置,而是在文本上设置的。DHCP服务器工作时要求客户机和服务器进行交互,由客户机通过广播向服务器发起申请IP地址的请求,然后由服务器分配一个IP地址以及其他TCP/IP配置信息。整个过程可以分为以下几个步骤:
(1)IP租用请求。DHCP客户机初始化TCP/IP,通过UDP端口6768向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255,并且包含客户机的MAC地址和主机名。
(2)IP租用提供。网络中任何接收到DHCPDISCOVER广播包并且能够提供IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCPDISCOVER广播包,该广播包的源IP地址为DHCP服务器IP,目标IP地址为255.255.255.255,包中还包含提供的IP地址、子网掩码及租赁等信息。
(3)IP租用选择。客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCPDISCOVER包,并向网络中广播一个DHCPDISCOVER消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。所有其他的DHCP服务器撤销它们的提供,一遍将IP地址提供给下一次IP租用请求。
(4)IP租用确认。被客户机选择的DHCP服务器在收到DHCPDISCOVER广播包,会广播返回给客户机一个DHCPACK消息包,表明已经接受客户机的选择,并将该IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。客户机在收到DHCPACK包后,将使用该广播包中的信息来配置自己的TCP/IP,则租用过程完成,客户机可以在网络中通信。
配置DHCP服务器是通过DHCP服务器的配置文件/etc/dhcpd.conf来管理的,但是安装好DHCP服务器后并没有该文件的。不过在/usr/share/doc/dhcp-3.0.5目录下有一个名为dhcp.conf.sample的样本文件。把该文件复制到/etc目录下,并重命名为dhcpd.conf,然后使用文本编辑器打开这个文件修改。
DHCP配置文件有声明、参数和选项3个部分组成。
(1)、声明。DHCP配置文件中的声明(Declarations)用来描述网络布局、提供客户的IP地址等,具体如表1所示。
表 1DHCP配置文件中声明
声明
描述
Shared-network
用于告知在同一物理网段中是否存在多个子网
Subnet 
说明一个IP地址是否属于该子网
Range 
提供可出租的IP地址范围
Host 
为特定的DHCP客户机提供IP地址
Group 
为一组参数提供声明
Allow unknown-clients
允许动态分配IP地址个未知的使用者
Deny unkonwn-clients
拒绝动态分配IP地址个未知的使用者
Allow bootp
允许响应激活查询
Deny bootp
拒绝响应激活查询
Allow booting
允许响应使用者查询
Deny booting
拒绝响应使用者查询
Filename 
开始启动文件的名称,应用于无盘工作站
Next-server
设置服务器从引导文件装载主机名,应用于无盘工作站
(2)、参数。DHCP配置文件中的参数(Parameters)表明如何执行任务、是否要执行任务或将那些网络配置选项发送给客户,具体描述如表2所示。
2DHCP配置文件中的参数
参数
解释
Ddns-update-style
配置DHCP-DNS互动更新模式
Default-lease-time
指定默认出租时间的长短,单位为秒
Max-lease-time
指定最大出租时间,单位为秒
Hardware 
指定网卡接口类型和MAC地址
Server-name
通知DHCP客户服务器名称
Get-lease-hostname flag
检查客户端使用的IP地址
Fixed-address ip
分配给客户端一个固定的地址
Authritative 
拒绝不正确的IP地址的要求
(3)、选项。DHCP配置文件中的选项(Option)用来配置DHCP服务器的可选参赛,这些参数全部用option关键字开始,具体描述如表3所示。
3、 DHCP配置文件中的选项
选项
解释
Subnet-mask
为客户端设定子网掩码,必须与所出租的IP地址对应
Domain-name
为客户端指明DNS服务器名字
Domain-name-servers
为客户端指明DNS服务器IP地址
Host-name
为客户端指定主机名称
Routers 
为客户端设定默认网关
Broadcast-address 
为客户端设定广播地址
Ntp-server
为客户端设定网络时间服务器IP地址
Time-offset
为客户端设定与格林威治时间的偏移,单位是秒
下面是结合dhcpd.conf的文本详细介绍:
ddns-update-style interim; ....... 过渡性DHCP-DNS互动更新模式。一般不修改
ignore client-updates;      ........不允许各个客户端更新。一般不修改
subnet 192.168.1.0 netmask 255.255.255.0 {       ........声明子网及子网掩码
# --- default gateway
option routers 192.168.1.1;           ................为客户端设置默认网关
option subnet-mask 255.255.255.0;         ...............为客户端设置子网掩码
option nis-domain "domain.org";         .........设置网络信息服务(NIS)域的名称
option domain-name "domain.org";     .......网络的域名
option domain-name-servers 192.168.1.1;      ........设置DNS服务器的IP地址
option time-offset -18000; # Eastern Standard Time    .......偏移时间
# option ntp-servers 192.168.1.1;          ..........网络时间服务器(NTP)的IP地址
# option netbios-name-servers 192.168.1.1;          ..........WINS服务器地址
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;          .............netbios节点类型
range dynamic-bootp 192.168.0.128 192.168.0.200;   .......动态的地址池
default-lease-time 21600;               .............默认租约时间(秒)
max-lease-time 43200;              .............最大的租约时间(秒)
# we want the nameserver to appear at a fixed address     .....设置绑定主机
host ns {                                     ........绑定主机名称声明
next-server marvin.redhat.com; ..定义服务器引导文件中转入的主机名,用户无盘站
hardware ethernet 00:0C:29:A7:CF:85;  .......要绑定的DHCP客户机的MAC地址
fixed-address 192.168.1.1;       .........绑定MAC地址的主机的对应IP地址
}
}
安装DHCP服务器,首先查看是否已经安装了DHCP软件包,查看的方法是在终端下输入【rpm -qa | grep dhcp】命令。如果安装了则会显示相关的信息,若无则会显示“rpmq: no arguments given for query”。
CentOS 5.4的光盘镜像放入光驱,进入光盘CentOS目录下找到dhcp*.*的相关软件包,
其中dhcp-* DHCP服务器的软件包,dhcp-devel-* DHCP开发工具,可选。安装 dhcp-3.0.5-21.el5.i386.rpm 的软件包。安装成功后的结果如图1所示。(安装命令:#rpm -ivh dhcp-3.0.5-21.el5.i386.rpm,另外也可以使用yum安装,命令:yum install dhcpd*

1
DHCP软件安装完成后,通过复制样本文件/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample文件到/etc/目录下,已得到dhcpd.conf文件,然后修改文件,完成DHCP服务器的配置。配置文件详细如下:
ddns-update-style interim;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option nis-domain "guoguang.com";
option domain-name "guoguang.com";
option domain-name-servers 192.168.1.1;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.1.10 192.168.1.100;
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
host ns {
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
}
}
DHCP客户下查看DHCP服务器是否已经正常工作了。以下以Windows XP为客户机,使用ipconfig /releaseipconfig /renew分别释放和获取IP地址,结果如图2所示。(服务器的IP地址为:192.168.1.2

2
配置Linux客户机的方法是修改/etc/sysconfig/network-scrits下的ifcfg-eth0文件,把"BOOTPROTO"修改为"BOOTPROTO=dhcp"(如果没有就在网卡名称下面添加一行)
另外,当DHCP服务器为某个DHCP客户机提供租约后,在/var/lib/dhcpd/dhcpd.leses文件中保存已经出租的IP地址信息。
# All times in this file are in UTC (GMT), not your local timezone.   This is
# not a bug, so please don't ask about it.   There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature.   If this is inconvenient or confusing to you, we sincerely
# apologize.   Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.5-RedHat
lease 192.168.1.100 {
  starts 5 2010/04/16 11:21:44;
  ends 5 2010/04/16 17:21:44;
  binding state active;
  next binding state free;
  hardware ethernet 00:0c:29:2e:99:db;
  uid "\001\000\014).\231\333";
  client-hostname "centOS-XP";
}
lease 192.168.1.99 {
  starts 5 2010/04/16 11:50:02;
  ends 5 2010/04/16 17:50:02;
  binding state active;
  next binding state free;
  hardware ethernet 00:0c:29:1b:ac:19;
}
从配置文件中可以看出DHCP服务器已经有租赁的两个IP给两台计算机。