论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 1665阅读
  • 1回复

[求助-系统问题]DHCP与APIPA的冲突及解决方案 [复制链接]

上一主题 下一主题
离线zhb_3448
 

发帖
59686
今日发帖
最后登录
2016-12-13
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-10-21 20:40:44
              DHCP服务是企业网络中最基本的服务之一。现在大部分的企业都在使用这个应用服务。其不断发展已经成为企业网络环境中一个重要的组成部分。但是随着网络设计越来越复杂,一些新的应用也层次不穷的出现,这直接导致DHCP的应用也变得越来越复杂。        

            笔者这次要谈的问题就是DHCP服务与APIPA服务之间的冲突。并探讨在Windows Server 2008环境下如何来解决这个冲突。
  一、 DHCP与APIPA在企业网络中的作用。
  TCP/IP的日常操作与维护非常的复杂,因为客户机必须要能够定期接收和更新网络信息以便与网络的变化保持一致。TCP/IP网络环境中的每个对象都需要一个唯一的地址来定义它的位置并提供一种将网络数据包从一个地方路由岛另一个地方的方式。这个地址就叫做IP地址。如果手工来管理并更新这个IP地址,其工作量是非常庞大的。在实际工作中,除了一些特殊的应用服务器,如文件服务器或者打印服务器的IP地址是手工管理的,其他主机的地址都是通过DCHP服务器来自动分配并更新的。客户端在启动的时候会向子网上的所有节点发送出一个广播请求以要求得到一个动态的IP地址。此时DCHP服务器接受请求并会将一个空闲的IP地址发送给这个客户端。所以DHCP服务在企业网络中的作用是至关重要的。
  但是如果DHCP服务器无效,客户端无法正常得到合法的IP地址该如何呢?在Windows Server 2008的网络环境中对这个问题有了一个解决方案。在2008或者以上版本的客户端中已经对客户端/服务器的服务进行了更新,允许在没有可用DCHP服务器的情况下自动为自己分配IP地址。这门技术就叫做自动私有IP寻址(APIPA)。当DCHP服务器出现故障客户端无法取得IP地址的情况下,APIPA会为客户端自动分配一个位于169.254.0.0/16范围内的IP地址,从而允许他们在小型网络中拥有基本的TCP/IP连接。所以APIPA机制在小型网络中有其存在的必要性。特别是当企业网络中只有一台DHCP服务器、没有备份服务器的情况下,当这台DHCP服务器出现故障时,这个APIPA机制就会显得非常的有用。可以说,其就是一台备用的“DHCP服务器”
  二、 DHCP与APIPA可能存在的潜在冲突。
  虽然APIPA机制在小型网络中非常的有效,即使在没有DHCP服务器的情况下,也能够让各个客户端工作正常。但是在大型网络中,APIPA机制与DCHP服务可能会存在冲突。因为APIPA机制会强制客户机在一个通常不属于公司本地子网范围内为他们自己分配IP地址。如企业的IP地址规划内部网络的地址为192.168.0.0;可是APIPA机制只会在169.254.0.0/16范围内分配IP地址。此时两者就会产生冲突。当DHCP服务器出现故障的时候,试图与DHCP服务器续约的客户端将会失败。然后APIPA机制就会为这个客户端分配IP地址。当服务器恢复运行后,由于这些客户端已经有了APIPA机制分配的IP地址,所以不会立即在DCHP服务器上进行注册。此时实际上就造成了这些客户端与企业网络的隔离。也就是说,此时APIPA机制就是好心办坏事,造成了两个服务器之间的冲突。

  三、 有效避免DHCP与APIPA的冲突。
  微软的专家显然也已经预见了这个可能存在的冲突。在2008操作系统中,在注册表中提供了一个叫做Registry的键。通过这个键可以设置客户端是否要禁用这个机制。笔者的建议是,如果企业的网络比较简单,此时可以启用这个机制。但是如果企业的网络比较复杂,并且也设置了备用DHCP服务器的话,那么还是将这个APIPA机制禁用掉好,免得“画蛇添足”。要在客户端上禁用这个APIPA机制,可以通过如下步骤来操作。
  1、在客户端上打开注册表编辑器。选择开始菜单,并在run文本框中输入regedit,就可以打开客户端的注册表编辑器。
  2、在注册表中找到Registry的键。默认情况下是没有这个键,需要新建。可以通过新建、DWORD值来完成新建的动作。在对话框中输入IPAutoconfigurationEnable来重命名这个DWORD值。双击这个新值并确保这个输入的数据值为0(表示禁用APIPA机制)。
  3、单击确认按钮,并关闭注册表。此时就禁用了客户端的APIPA机制。不过如果一台台的去设置客户端,显然工作两会很大。此时网络管理员可以将这个键的值导出。然后再其他客户端上双击这个文件,让其自动在系统中添加这个值。如果企业在网络中实现了的话,那么可以通过域策略来完成这项工作。
  当禁用了APIPA机制以后,笔者认为下面的几个问题需要引起网络管理员的重视。
  一是企业如果有条件的话,最好能够设置一台备用的DHCP服务器。当主服务器出现故障的时候,这台备用的DHCP服务器能够马上提供后续的服务。其实这个IP地址就租房子一样,有一个续约期。当续约期满了之后(或者说快满之前),客户端会跟DHCP服务器联系以延长续约。此时如果DHCP服务器出现故障联系不上的话,则客户端的地址就会失效。正常情况下,此时由于没有了APIPA机制,则主机就不会为自己分配IP地址。最后这个客户端的地址就可能变为0.0.0.0 等无效的IP地址。从而导致这个客户端连接不上企业的网络。为此有必要在企业内部设立备用的DHCP服务器,并于主服务器的数据进行同步。防止因为客户端得不到合法的IP地址而造成通信上的障碍。如果企业没有条件设置DCHP服务器的话,那么最好能够尽量延长这个地址续约的时间。如此的话,就能够有足够的时间给网络管理员来修复DHCP服务器。不过这并不是万全之策。因为不同的客户端续约的时间不一样,其到期的时间也不相同。故即使延长了这个续约期,当客户端多了之后,也难免会出现一些漏网之鱼。另外到续约期变长之后,这个IP地址的利用率就会降低。如某些客户端可能只是临时连在企业的网络上(如客户或者供应商拜访用他们自己的笔记本电脑)。由于续约时间比较长可能在相当长的一段时间内他们电脑会占用IP地址。所以最合理的方法,还是需要设置一台备用的DHCP服务器,并在两台服务器之间实现数据的同步。同时网络管理员需要不定时的检测DHCP服务器的工作情况。当遇到故障时需要在最短时间内进行修复。
  二是当禁用APIPA机制后,网络管理员最好在客户端上测试一下,这个设置是否有效。这个测试也比较简单,只需要在命令提示符中运行IPCONFIG /ALL命令。然后查看输出结果中Autoconfigurati Enable的值。如果值为0的话,就说明这个机制已经禁用掉。如果没有的话,那么需要查明问题的原因。
  除了以上的方法可以用禁用APIPA机制之外,还有一个比较笨的方法,也可以实现这个功能,即为客户端设置静态的IP地址。在新版的DCHP服务器中,可以为客户端设置静态的IP地址。跟其他设备的MAC地址与IP地址绑定类似。此时在DCHP服务器不可用的情况下仍然可以将静态的IP地址分配给客户端。不过此时如果一些网络参数发生改变的话,如DNS服务器地址发生改变,就不能够动态的更新到客户端中了。
  可见各种解决方案都有各自的特点与优点,所以并不能够绝对的说那种解决方案是最好的。在实际工作中,鱼与熊掌不能够兼得。网络管理员需要根据企业网络的复杂情况、稳定性的需要、以及企业的资金实力,来选择合适的处理方案。如网络状态比较稳定的企业,可以选择静态IP地址的方案。相反,网络时常在动态变化的,则还是采用禁用APIPA机制的方案为好。
1条评分
惊鸿一剑 电魂 +3 继续努力,期待您的下篇杰作 2009-10-21

主队让半球高水,一般不能要主队!
凡是开半一的盘,一般不能要下盘!
凡是开一球或一球球半的盘,一般不能要上盘!
凡是开一球半以上的盘,一般不能要下盘!
离线quen2008
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 沙发  发表于: 2009-10-22 10:56:47
以前xp中好像没有遇到这个情况