X
  • 陇上孟河

  • 中电智媒IOS版

  • 中电智媒安卓版

X

将DHCP服务器部署进行到底

来源:中计在线 时间:

 

    网络中有些重要的服务组件很容易被遗忘,因为它们始终如一地完成着自己的工作,并且从来不那么引人注目。只有当它们出现问题时,这些“老黄牛”的真正价值才体现出来,人们也才开始加以关注。动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)与Windows Internet 名称服务(Windows Internet Name Service,WINS)就是它们中的代表。它们常常被扔在角落里,委屈地工作在老旧服务器上。虽然它们看起来不如活动目录技术那样风光,但其功能在网络环境中确实很重要的,应该为它们的规划和配置做大量的筹划工作。

 


图 1 原文件服务器充当DHCP


图 2 启用冲突检测后的DHCP地址租约情况


图 3 某外国语学校网络拓扑图


表1 VLAN与IP地址分配

 

 

案例一:DHCP怪异现象

    动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是一种保障网络管理员能够集中管理和自动分配 IP 网络地址的通信协议。在 IP 网络中,由于每个连接设备都需要分配唯一的 IP 地址,所以DHCP 部署使网络管理员能从中心结点监控和分配 IP 地址,DHCP可以确保当某台计算机移到网络中的其它位置时,也能自动收到新的 IP 地址。但是,虽然DHCP看起来很“美”,实现起来也很简单,可是在配置应用的时候还是会出现各种问题。有一次我进行DHCP服务器迁移工作,发现DHCP服务器已经关闭了,但一些采用自动获取IP地址的客户端仍然能够在启动后获得IP地址。

要搞清原因就只能根据客户端获取IP的过程逐步分析了。DHCP服务器向DHCP客户端提供IP地址的时间一般都有一个期限,一旦这个时间结束了,DHCP服务器便会收回出租的IP地址。如果DHCP客户端要延长其IP租约,则必须重新或者延长其IP租约的时间期限。DHCP客户端启动时和IP租约期限过一半时,DHCP客户端都会自动向DHCP服务器发送更新其IP租约的信息。至于IP的租约期限却是非常讲究的,并非如我们租房子那样简单。DHCP客户端除了在开机的时候发出DHCPREQUEST请求之外,在租约期限一半的时候也会发出DHCPREQUEST。如果此时得不到DHCP服务器的确认的话,工作站还可以继续使用该IP。然后在剩下的租约期限再到一半的时候(即租约的75%),如果还得不到确认的话,那么工作站就不能拥有这个IP了。要是你想退租,可以随时送出DHCPRELEASE命令解约,就算你的租约在前一秒钟才获得的。

为什么网络中的DHCP服务器已经关闭了,而客户端还能延续之前的IP地址呢?我们看一下DHCP客户端重新启动后发生的事情。它将尝试更新上次关机时拥有的IP租用,如果更新未能成功,客户端将尝试联系现有IP租用中已经包含的缺省网关(Default gateway),比如上次获得Default gateway是192.168.1.254,如果此时客户端能够成功地联系到这个设备,客户端则认为自己仍然位于与它获得现有IP租用时相同的子网上(没有被移走),继续使用现有IP地址。 如果未能与缺省网关联系成功,客户端则认为自己已经被移到不同的子网上,将会开始新一轮的IP租用过程。因为我关闭了DHCP服务器,并没有关闭网关设备,客户端能够联系到网关,所以它沿用了之前获取的IP参数,也就出现了上文提到的奇怪现象。

案例二:IP冲突检测

    有一家小公司刚成立的阶段,副总经理把自己家里的宽带路由器拿来充公。最初只有5个客户端需要连接Internet时,这台路由器以其良好的性能得到了大家的一致称赞。随着员工的增加,为了方便其他用户的使用,公司启用了宽带路由器提供的DHCP服务,担当DHCP服务器功能。

冲突原因分析

    然而,麻烦也随之到来,客户端常常出现IP地址冲突现象。由于客户端使用自动获取IP地址的配置方案,启动较慢。几个略懂技术的员工手工配置了路由器中DHCP已经分配的IP,常常使得IP地址与其他用户冲突,导致公司经常上演“抓鬼”闹剧。

    根据IP地址分类特征分析,这家企业选择基于专用网络 ID 192.168.0.0分配IP地址的方案,这种方案提供在每个网段上最多254台计算机的容量,足够满足公司所有客户端的需求了。在原有DHCP分配IP地址范围合理的情况下,为什么会出现IP地址冲突的问题呢?这是因为一般家用路由器说明书中都会提到将路由器本身的IP(192.168.0.1)排除掉,在没有人手工配置自己的IP地址前,如果都使用路由器提供的192.168.0.x网段,自动获得IP地址,冲突现象基本不会发生。

    但公司中一些学过计算机专业的新员工非常个性化,他们知道设置固定的网络参数(IP地址和DNS服务器)比自动获取方式电脑启动得更快一些。在上面那个例子中,如果有10个用户采用固定网络参数,假设他们占用了192.168.0.2~192.168.0.11这10个IP地址。如果固定IP设置为192.168.0.5的那个用户主机一段时间没有开机,有另外一个用户使用DHCP获取网络参数方式开机了。DHCP服务器看到目前192.168.0.5是空闲地址,就会把这个IP地址分配给这个用户。此时,如果原来的用户再上线,由于这个IP地址已经被占用了,这就会造成IP地址冲突。而一些固定IP地址的主机,如财务人员的主机,都可能会出现IP地址冲突的提示。

减少IP地址分配

    预防这种冲突的方法很多,最简单的方法就是在设置DHCP地址池的时候预留一段IP地址不作为DHCP分配之用。比如本案例中,由于固定的客户端数量在60个左右,可以设置DHCP地址池为192.168.0.100~192.168.0.199。把前面99个留给固定网络参数的用户和员工带来的笔记本电脑,后面的IP用于扩展。这样既可以做到井水不犯河水,又符合了DHCP 80/20的设计标准。

    由于公司购置了配置较高的服务器用于替换原来的文件存储服务器,因此可以考虑文件服务器安装一些内部网络中常用的网络基础服务,比如DHCP、DNS、WINS等,如图1所示。

    DHCP服务器地址可以设置成192.168.0.1 ,新购置的文件服务器地址为192.168.0.2,而企业升级后的路由器内部接口地址变更为192.168.0.254 。与此同时,公司也将告知每一位员工不得采用手工配置IP地址的方法使用客户端网络,尽可能避免IP冲突现象的发生。

避免IP冲突

    DHCP分配地址之前如何检测IP是否已经使用了呢?将这些地址不给客户端分配,就可以杜绝IP地址冲突的现象了,在Windows Server DHCP服务器上启用IP地址冲突检测是最明智的选择。

    启用冲突检测,可以在客户端租用到服务器分配的IP地址之前,DHCP 服务器或客户端使用冲突检测功能确定 IP 地址是否已在网络上使用。如果运行 Windows 2003 或 Windows XP 的 DHCP 客户端计算机获得了 IP 地址,那么在完成配置并使用由服务器提供的 IP 地址之前,客户端会使用强制 ARP请求执行基于客户端的冲突检测。如果 DHCP 客户端检测到冲突,它将向服务器发送 DHCP 拒绝消息。在默认情况下,DHCP 服务不执行任何冲突检测。要启用冲突检测,须增加在客户端租用地址之前 DHCP 服务对每个地址执行 Ping 操作的次数。

    在Windows服务器上的属性→高级选项卡上,你可以在“冲突检测次数”中,键入2,然后单击确定。

    键入的数字决定将其租用给客户端之前 DHCP 服务器测试 IP 地址的次数。请记住,设置冲突检测尝试时,DHCP 服务器在提供给客户端的 DHCP 租约中包含这些地址使用前数据包探测程序以测试可用作用域 IP 地址。探测成功意味着 IP 地址正在网络上使用。因此,DHCP 服务器不将地址租用给客户端。如果探测请求失败和超时,则表明 IP 地址不在网络上使用。在这种情况下,DHCP 服务器将网络没有使用的IP地址租用给客户端,如图2中的前两个IP已经不能使用,所以客户端能够获得的IP地址应该从192.168.0.102 开始。

案例三:划分VLAN后的DHCP部署

    与上面的那个案例相比,在略大型的网络中,可能会存在多个通过虚拟局域网划分的子网,这就使得DHCP部署要复杂一些。

我们知道DHCP客户机通过网络广播消息获得DHCP服务器的响应后得到IP地址,但广播消息是不能跨越子网的。因此,如果DHCP客户机和服务器在不同的子网内,客户机还能不能向服务器申请IP地址呢?这就要用到DHCP中继代理。

    某外国语学校的网络管理员在划分VLAN后却平添了烦恼:原本只有一个DHCP服务器,现在只能对本子网内的客户端分配IP地址,难道要在每个子网都安装一台DHCP服务器吗?图3中显示了划分VLAN之后的网络拓扑图。

    应该说VLAN技术的实质就是指网络中的各个站点可以不必拘泥于各自所处的物理位置,而根据需要灵活地加入不同的逻辑子网中的一种网络技术。VLAN是将局域网内的设备逻辑地而不是物理地划分成网段,从而实现虚拟的工作组,它可以帮助网络管理者将处于相同LAN网段(部门)的客户端进行分组。表1是网络管理员在原基础上划分子网的结果。

不能获得IP

    在企业网络中,DHCP、VLAN是两项应用极其普遍的操作。利用DHCP可以让网络里的客户端自动获得IP信息,免去了网管员手工设置的重复操作;同样给网络划分VLAN可以减少同一广播域内客户端的数量,从而有效防止广播风暴等故障的出现。

    但是,在默认情况下这两项服务却水火不相融,因为DHCP不能工作在多VLAN中。DHCP客户机与服务器之间进行尝试的第一步就是在整个VLAN内以广播形式发布的,如果客户机分散在多个VLAN中,那么DHCP发出的广播信息就无法在多个VLAN中进行广播。服务器都没有接到客户发出的请求,当然也不会给你提供服务。

    那么,是不是这就意味着没有解决方案呢?其实不然,在 TCP/IP 网络中,路由器用于连接被称作“子网”的不同物理网段上使用的硬件和软件,并在每个子网之间转发 IP 数据包。要在多个子网上支持和使用 DHCP 服务,连接每个子网的路由器应符合 RFC 1542 中所描述的 DHCP/BOOTP 中继代理能力。

利用DHCP帮助者地址

    通过前面的一些理论知识的分析,我们得知DHCP 服务器中存储着一系列对应于有效 IP 地址的地址,这些地址都可以分配到各个子网。当网络中的 DHCP 客户端启动时,它并不具有经过 DHCP 服务器确认的有效的 IP 地址,因此不能向 DHCP 服务器表明它的子网或是在哪个VLAN中。

如果 DHCP 客户端和 DHCP 服务器位于相同的子网,那么 DHCP 服务器就可以通过用来接收客户端 DHCP 消息的接口来识别子网。 当 DHCP 客户端和 DHCP 服务器不在相同的子网时,DHCP 客户端子网中的 DHCP 中继代理就会记录用来接收 DHCP 客户端消息的接口的 IP 地址,然后将这条消息转发给 DHCP 服务器。

非常庆幸的是,上面的方案中选择了一台Cisco 3750 交换机作为核心。如果是一台不支持路由功能的二层交换机,我们真的需要单独一台服务器启用DHCP中继代理了。

    本案例中,划分VLAN并且要设定每个VLAN的IP地址,这些IP地址由表1中VLAN与IP地址分配的网关地址列中的数据值决定,之后的操作是要在交换机上配置DHCP代理,即配置“DHCP Option 82”选项。

因为DHCP客户端和它们所连接的DHCP服务器是位于不同的网段,在DHCP中继代理上需要配置一个“帮助者地址”(Helper Address)以使得客户端和服务器之间可进行广播转发和传输DHCP信息。

    当客户端至服务器端互换时,连接到VLAN存取端口的客户端广播请求会被DHCP代理所截取,因此广播不会泛洪到同一VLAN的其他客户端处。中继代理转发这个请求到DHCP服务器,当服务器至客户端互换时,DHCP服务器会发出包含Option 82域的广播回复,中继代理会根据这条信息辨认出是哪个端口连接了发出请求的客户端,从而避免在整个VLAN中转发这个回复。我们需要进入每一个VLAN接口模式,指定10.88.80.1的DHCP服务器,操作如下:

Switch(config-if)# ip helper-address 10.88.80.1 

Switch(config)#ip routing                   //启用交换机的路由功能

    IP数据包在网络中通过交换机进行透明传输时,DHCP中继代理进行的转发与一台进行正常的数据转发路由器是有明显的区别的。与之形成对比的是,中继代理接到DHCP信息产生一个新的DHCP信息并将它向另外一个端口发送出去。 如果DHCP服务器和DHCP客户端位于不同的网络或子网内,你必须在交换机的端口配置模式下启用“ip helper-address address”命令。

为各VLAN创建作用域

    下面以表1中的主楼办公室创建名为“VLAN 40”作用域为例,来介绍在DHCP服务器中创建作用域及配置作用域选项的方法。

(1)返回到DHCP服务器上,以管理员账户登录,从管理工具中进入DHCP服务器,在DHCP服务器中,选取服务器,单击鼠标右键,从出现的快捷菜单中选择新建作用域,打开新建作用域向导对话框,单击下一步按钮,打开作用域名对话框,这里建立名为“VLAN 40”的作用域。

(2)在名称文本框中输入“VLAN 40”,在描述文本框中输入“为主办公楼的计算机分配IP地址”,单击下一步。

(3)打开IP地址范围对话框,在起始IP地址文本框中输入此作用域的开始IP地址为10.88.80.129,在结束IP地址文本框中输入此作用域的结束IP地址为10.88.80.189,在长度文本框中输入26,此时子网掩码文本框的数值是255.255.255.192,单击下一步按钮。

(4)打开添加排除对话框,在起始IP地址和结束IP地址文本框中输入将要保留的IP地址(按照80/20原则),将这一网段保留的IP地址范围是10.88.80.170~10.88.80.189,则把此地址范围以外的地址添加到排除地址中,单击下一步。

(5)打开租约期限对话框,在此设置此作用域的租约期限,默认情况下是8天,这里更改为14天。

(6)打开配置DHCP选项对话框,选择“是,我想现在配置这些选项”单选按钮,然后确定。

(7)打开路由器(默认网关)对话框,在IP地址文本框中输入当前子网的网关地址10.88.80.190(交换机上VLAN 40 的IP地址),单击添加按钮,将其添加到列表框中,然后单击确定。

(8)打开域名称和DNS服务器对话框,在此可添加当前作用域的DNS名称和域名。由于此步中的DNS名称和下一步中的WINS服务器,我们已经在DHCP服务器的服务器选项中设置了,所以这里直接单击下一步。

(9)在以后的步骤中,一直单击下一步,在激活作用域对话框中选择“是,我想现在激活此作用域”选项,然后单击完成按钮即可。(河南省信阳供电公司科技信息中心 黄文)

地址:北京市丰台区南四环西路188号7区18号楼

邮编: 100070

Copyright©2011-  All  Rights  Reserved.

中电传媒股份有限公司  中国电力新闻网  版权所有  未经授权  严禁转载