DHCP服务器的配置与使用
作者:Zhaoxion.Zhang
DHCP是BOOTP的扩展,它是基于C/S模式的,主要用于大型网络。它提供一种动态指定IP地址和配置参数的机制。本章将详细介绍有关DHCP服务器的知识。
第一节 基础知识
本节介绍和DHCP服务器相关的基础知识。
一、DHCP/BOOTP简介
DHCP是BOOTP的扩展,是基于C/S模式的,它提供了一种动态指定IP地址和配置参数的机制。这主要用于大型网络环境和配置比较困难的地方。DHCP服务器自动为客户机指定IP地址,指定的配置参数有些和IP协议并不相关,它的配置参数使得网络上的计算机通信变得方便而容易实现了。DHCP使IP地址的可以租用,对于拥有许多台计算机的大型网络来说,每台计算机拥有一个IP地址有时候可能是不必要的。租期从1分钟到100年不定,当租期到了的时候,服务器可以把这个IP地址分配给别的计算机使用。客户也可以请求使用自己喜欢的网络地址及相应的配置参数。
DHCP的包格式和BOOTP也一样,这样它就可以使用BOOTP的中转发代理来发送DHCP包,这使得BOOTP和DHCP之间可以实现互操作。对于BOOTP转发代理来说,转发的是DHCP包还是BOOTP包,它根本分不清楚。它们使用的服务器端口号是67和68,但是有些地方还有些不同,表现在以下几个方面:
1.DHCP定义了一种可以使IP地址使用一段有限时间的机制,在客户机上时间限制到了的时候,可以重新分配这个IP地址。
2.DHCP为用户配置所有IP参数。
3.DHCP包长度比BOOTP包长度稍长,多出的内容包括了网络配置参数。DHCP包总比BOOTP的长,但协议也比较复杂。DHCP有七种消息类型,而BOOTP只有两种。
二、DHCP/BOOTP的工作原理
如图1所示,我们可以清楚地看到客户机请求获得IP地址和配置参数的最初几个步骤:

图1
1.客户发出包的名称叫DHCPDISCOVER(图1中的1),而服务器返回包的名称叫DHCPOFFER(图1中的3)。
2.BOOTP转发代理接收到请求包,并负责向DHCP其他网络内的DHCP服务器转发。
3.DHCP服务器以DHCPOFFER响应客户的要求,这个包内包括可用的IP地址和参数(图1中的3)。
4.BOOTP转发代理接收包,并对它进行检查。如果检查没有问题,就向客户转发。
5.如果客户在发出DHCPOFFER包后一段时间内没有接收到回应,它有机会重新发送请求10次,否则就通知用户。客户机可以同时接收到多个服务器的应答,并自己决定用哪一个。
如图2所示,是客户决定了以后,向服务器发送应答时的情况。

图2
6.当客户机选定了某个目标服务器后,它会广播DHCPREQUEST包,用以通知选定的服务器和未选定的服务器(图2中的5)。
7.转发工作仍然由BOOTP转发代理担任。
8.收到DHCPREQUEST包的服务器会检查收到的包,如果包内的地址和它所提供的地址一致,证明现在客户机选择的是自己提供的地址,如果不是,证明自己提供的地址被拒绝了。
9.被选定的服务器在接收到DHCPREQUEST包以后,因为某些原因可能不能向客户机提供这个IP地址或参数,它可以向客户机发送DHCPNAK包(图2中的7)。
客户在收到包后,检查内部的IP地址和租用时间,如果客户觉得这个包有问题,它可以发送DHCPDECLINE包拒绝这个地址,然后重新发送DHCPDISCOVER包。如果觉得没有问题,就接受这个配置参数。同样,当客户机接收到DHCPNAK包时,它也可以发送DHCPDISCOVER包。客户机可以在租期到期之前释放该IP地址,这通过发送DHCPRELEASE包来实现。
用户可以在下一次再次获得相同的IP地址。在这一过程中,许多步骤就可以不用麻烦了,老的客户机当然要方便一点了:
1.客户在发送的DHCPREQUEST包内包括自己以前使用的IP地址。
2.此包由BOOTP转发代理转发。
3.DHCP服务器检查DHCPREQUEST包内包括的配置参数。
4.它如果是原来提供这个IP地址的参数的服务器,它能识别出来,并以DHCPACK包回应。
5.客户机接收到DHCPACK包后,它可以接收或拒绝,如果拒绝,它可以申请新的网络地址。
当然了,如果服务器觉得客户机的请求是无效的,服务器会发出DHCPNAK包响应,客户机接收到这个包后,会重新会获得新的IP地址,然后发送DHCPDISCOVER包。
第二节 实 例
本节以实例的形式具体介绍DHCP服务器的应用。
一、DHCP实例一
安达服务公司现有办公计算机40余台,由于公司业务发展需要,公司申请了ADSL专线。每台办公计算机都需要上网,网络管理员需要为每台工作站进行网络设置,并且其他员工不懂网络设置,为了减轻网络设置及网络维护的工作量,管理员决定采用DHCP自动分配地址。工作站只要求能上网,其他方面并无特殊要求。
分析:由于用ADSL专线,公司局域网上网只能使用私有IP地址,网管决定用192.168.5.0/24的子网,DHCP服务器地址为192.168.5.100,对于客户端,只要有IP、DNS、GATEWAY即可上网,因此,这是最简单的DHCP设置。只要配置DHCP的地址范围、DNS和GATEWAY即可。
具体的安装步骤如下:
1.获取并安装DHCP服务器软件。
从RPM包安装:
准备RedHat Linux7.2的第二张安装光盘,执行如下命令:
#mount /dev/cdrom /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm –ivh dhcp-2.0pl5-8.i386.rpm
2.修改配置文件。
DHCP默认的配置文件是/etc/dhcpd.conf,这是一个文本文件,dhcpd里有一个语法分析器,能对这个文件进行语法分析,获得配置参数。dhcpd.conf格式是递归下降的,关键字区分大小写,可以有注释,注释以#开头,一直到该行结束。
编辑/etc/dhcpd.conf文件,如果该文件不存在,可以通过以下步骤创建它。
(1)定义subnet和netmask(子网和掩码),即在dhcpd.conf内加入:
subnet 192.168.5.0 netmask 255.255.255.0{
(2)定义地址池:
range 192.168.5.101 192.168.5.160;
(3)定义网关:
option routers 192.168.5.100;
(4)定义DNS:
option domain-name-servers 202.106.196.115;
}
本例中的dhcpd.conf示例,图3所示,注意别丢了“;”号。

图3
3.创建dhcpd.leases文件(本例中的dhcpd.lease文件不用创建,它在/var/lib/dhcp下)。
dhcpd.leases是DHCP客户机租约的数据库文件,默认目录在/var/lib/dhcp/,文件包含租约声明。每次一个租约被获取、更新或释放,它的新值就被记录到文件的的末尾。在DHCP第一次安装后,并不会生成这个文件。但DHCP的运行需要这个文件,所以可以建立一个空的文件。
DHCP记录这个文件的格式是
Lease ip-address {statements...}
每个记录包含一个提供给客户机的IP地址,在花括号里的语句包含一些租约信息。具体的租约信息因客户发出不同的DHCP请求而稍有差别。
4.开始服务:/etc/rc.d/init.d/dhcpd start
如果要在服务器启动时就启动dhcp服务,可以有两种方法:
在/etc/rc.d/rc.local文件中添加如下语句:
/etc/rc.d/init.d/dhcpd start
运行chkconfig --level 2345 dhcpd on,使开机时DHCP服务自动启动。
5.Windows客户机的设置。
客户机设置为自动获取IP地址和DNS服务器地址。
6.验证服务的正确性。
在Windows客户机上执行ipconfig /all命令,得到如图4所示的结果。
此时,服务器端的/var/lib/dhcpd.lease或/var/lib/dhcp/dhcpd.lease文件应有如下的记录:
lease 192.168.5.111{
starts 3 2002/05/22 22:23:41;
ends 4 2002/05/23 10:23:41;
hardware Ethernet 00:d0:b7:9a:13:d2;
uid 01:00:d0:b7:9a:13:d2;
client-hostname "win2k";
}

图4
注意Default Gateway和DNS Server字段的IP地址,是dhcp服务器定义的。至此,已完成了动态分配IP地址的设置。
二、DHCP实例二
泰德公司通过邻居网络公司的10M专线上网,现网络公司分配给泰德公司120个IP地址:210.99.100.41—210.99.100.100,210.99.100.141—210.99.100.200,netmask为255.255.255.0,网关为210.99.100.1,DNS服务器为:210.99.100.254,只能用网络公司指定的IP才能上网,但是公司有140余台计算机要上网,而且总经理和副总理要求随时能上网。不过好在公司实行倒休,随时都有人不上网。如果你是该公司的网管,你将如何分配IP呢?
分析:由于IP少于主机,首先确定决定用DHCP动态分配IP地址。首先应指定服务器、总经理和副总经理的IP地址。把210.99.100.100做DHCP服务器,把210.99.100.88分配给总经理,210.99.100.188分配给副总经理,手工设置他们的IP地址。为了让更多的用户能及时上网,不至于浪费资源,应该把DHCP的租用时间设短,当有用户关机或下班时,IP能够及时释放出来,可以把租用时间设为2小时。
具体操作步骤如下:
1.获取并安装DHCP服务器软件(参看实例一的步骤1)。
2.修改配置文件,即编辑/etc/dhcpd.conf,可进行如下操作:
(1)定义子网及掩码:
subnet 210.99.100.0 netmask 255.255.255.0 {
(2)定义地址池:
range 210.99.100.41 210.99.100.87;
range 210.99.100.89 210.99.100.99;
range 210.99.100.141 210.99.100.187;
range 210.99.100.189 210.99.100.200;
(3)定义网关:
option routers 210.99.100.1;
(4)定义DNS:
option domain-name-servers 210.99.100.254;
(5)定义最大租用时间:
max-lease-time 7200;
}
本例中的dhcpd.conf示例如图5所示。

图5
3.开始服务。/etc/rc.d/init.d/dhcpd start(参看实例一的步骤4)。
4.客户机的设置(参看实验一的步骤5)。
5.验证服务的正确性。
在其中一台Windows客户机上执行ipconfig /all命令,出现如图11-10所示的画面。
注意Lease Obtained和Lease Expires行,其差值体现了最大租用时间。

图6
三、DHCP实例三
嘉德公司服务部获得IP地址202.137.10.1—202.137.10.30 netmask 255.255.255.224,域名为service.jiade.com,销售部获得211.99.8.33—211.99.8.62
netmask 255.255.255.224,域名为sale.jiade.com。现想用DHCP动态分配IP地址,但是销售部经理要求用固定的IP地址。其中202.137.10.0/27的网关是210.137.10.254,DNS是210.137.10.200;211.99.8.32/27的网关是211.99.8.254,DNS是211.99.8.200。如果你是该公司的网络管理员,将如何设计DHCP服务器。
分析:由于获得的IP在两个子网上,为节约成本和方便管理,用一台双网卡的计算机来做DHCP服务器,分别将202.137.10.1和211.99.8.33分配给DHCP服务器,将211.99.8.58分配给销售部经理,并且销售部经理的211.99.8.58也从DHCP服务器获得。由于没有争抢问题,最大租用时间可以设置为缺省值。
具体操作步骤如下:
1.获取并安装DHCP服务器软件(参看实例一的步骤1)。
2.修改配置文件,即编辑/etc/dhcpd.conf,可进行如下操作:
(1)定义服务部子网及掩码。
Subnet 202.137.10.0 netmask 255.255.255.224{
(2)定义服务部地址池:
range 202.137.10.2 202.137.10.30;
(3)定义服务部网关:
option routers202.137.10.254;
(4)定义服务部DNS服务器:
option domain-name-servers 202.137.10.200;
(5)定义服务部域名:
option domain-name "service.jiade.com";
(6)定义服务部广播地址:
option broadcast-address 202.137.10.31;
}
(7)定义销售部子网及掩码。
Subnet 211.99.8.32 netmask255.255.255.224{
(8)定义销售部地址池:
range 211.99.8.34 211.99.8.57;
range 211.99.8.59 211.99.8.62;
(9)定义销售部网关:
option routers 211.99.8.254;
(10)定义销售部DNS服务器:
option domain-name-servers 211.99.8.200;
(11)定义销售部域名:
option domain-name "sale.jiade.com";
(12)定义销售部播地址:
option broadcast-address 211.99.8.63;
}
(14)定义销售部经理的IP:
host win2k {
hardware Ethernet 00:D0:B7:9A:13:D2;
fixed-address 211.99.8.58;
}
本例中的dhcpd.conf示例如图7所示。

图7
3.开始服务。/etc/rc.d/init.d/dhcpdstart(参看实例一的步骤4)。
4.客户机的设置(参看实例一的步骤5)。
5.验证服务的正确性:
在服务部一台客户机上执行ipconfig /all命令,出现如图8所示的画面。在销售部经理的计算机上执行ipconfig /all命令,出现如图9所示的画面。

图8

图9
注意图8和图9中的域名,即Connection-specific DNS Suffix:字段