在常见的小型网络中(例如家庭网络和学生宿舍网),网络管理员都是采用手工分配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服务器才会做出响应(如图1)。
2.提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCPdiscover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCPoffer提供信息(如图2)。
3.选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCPoffer提供信息,则DHCP客户机只接受第一个收到的DHCPoffer提供信息,然后它就以广播方式回答一个DHCPrequest请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址(如图3)。
4.确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCPrequest请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCPack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址(如图4)。
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的工作原理,接下来,我们就向大家说明如何在服务器上配置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(如图1)。如果有必要,可在后面的选项中输入要保留的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//显示地址冲突情况。