如果你使用DHCP来为系统中的工作站自动配置TCP/IP,任意一个DHCP故障都可以导致服务的崩溃。毕竟,如果一个工作站不能获取IP地址,就没有办法读取个人网络或者因特网上的任何资源。本文中,我将介绍可以用来排解DHCP服务器故障的一些技术。
不适当的地址分配
一个非常常见的DHCP相关问题是意外的IP地址分配。例如,假设你的DHCP服务器的IP地址范围配置为192.168.0.1到192.168.0.50.你希望电脑主机被分配以这个范围内的IP地址。现在,假设来自你网络上的一个工作站与网络服务器通信似乎出现问题。你发送一个IPCONFIG/ALL命令来查看工作站的IP地址配置。与期望的地址范围相反,工作被分配了一个以169.254开始的地址。
发生了什么事?如果来自你网络上的主机被意外地分配以169.254开始的地址,你又可以确认这个地址不是由你的DHCP服务器分配的。就是说工作站无法与DHCP服务器通信。当这种情况发生时,工作站将采用名为自动专用IP寻址(APIPA)的Windows特征给自身分配一个IP地址。
微软自动建立专用IP寻址到窗口,以帮助那些有很小的网络的机器。例如,如果你是要建立一个很小的Windows网络,即使网络上没有DHCP服务器,你也不需要手动配置IP地址。APIPA将自动在网络上为每台机器分配一个唯一的B类IP地址。这非常适合小型家庭网络,但完全不适合较大型的网络。
如果一个工作站依靠APIPA分配地址,这是因为它请求IP地址没有得到回应。有几种可能的原因造成这一问题。假定网络上的其他计算机能够从你的DHCP服务器获得一个IP地址,你可以排除DHCP服务器的问题。
极有可能的是,这个问题与安装在工作站中的网络硬件故障有关。例如,网络接口卡被分配以一个错误的驱动。另一个可能的原因是网线没插入网络接口卡,或者没有连接到另一端的开关。
当然,仅因为网络上的一台计算机在获取IP地址方面有问题并不能完全排除服务器的问题。如果其他工作站都能成功获取IP地址,那么可以肯定服务器正常工作。然而,也可能因为服务器已经分配完了可用的IP地址。通过将网络上请求来自DHCP服务器的IP地址的装置的数目与DHCP地址范围大小进行比较,你可以很容易地分辨是否是IP地址用尽的问题。
常见的DHCP服务器问题
如果多个工作站遇到租用IP地址的问题,那么问题很可能与DHCP服务器自身有关。如果你怀疑DHCP是造成问题的原因,那么你可以通过借助一些Ping的测试以确认DHCP能够在整个网络间通信来开始检测问题。
如果DHCP服务器能够与网络上的其他计算机通信,那么我建议核实DHCP服务器是否有一个符合范围的IP地址,并且服务器配置为这个指定的地址。例如,如果DHCP服务器的地址范围从192.168.0.1到192.168.0.50,服务器实际上无法分配这些地址,除非服务器自身在同一个子网范围内已经分配了一个静态地址,如192.168.0.0或192.168.0.51。
如果这仍然不能解决问题,那么我建议检查基本配置。例如,你应该保证DHCP服务器仍然被当前目录授权可以租用IP地址。你同样应该检查,保证IP地址范围仍然有效,并且DHCP服务器上正在运行必要的服务。
IP地址冲突
另一个偶尔出现的问题涉及动态配置地址是IP地址冲突。当你创建一个DHCP范围时,DHCP服务器的责任就是确保范围内的地址一次只能租用给一个用户。如果那样的话,怎么可能在动态分配地址时出现IP地址冲突呢?
我碰到过两种情况可能导致这个问题。第一次遇到时,我能够决定哪台PC被分配给了重复的地址。当我检查这些机器上的TCP/IP时,我发现其中一台机器的IP地址被手动配置过。说来话长,但那台机器的使用者运行未授权的应用程序,需要一个静态IP地址。用户觉得每次使用应用程序时都要重新配置很麻烦,所以他们采用动态分配给他们的地址,将它当成一个静态地址输入。
今天这种情况发生的可能性非常小。上文中提到的特定情况的时候我使用的是Windows98。Windows98缺乏许多今天我们认为理所当然的安全机制。一个有正常安全防护的、系统为Windows XP或Windows VISTA的工作站应该能防止终端用户的重配置。即使如此,我想至少应该注意这个问题,因为如果你在解决这个问题上有疑难时使得你有据可查。
该问题一个更普遍的原因是多个DHCP服务器正在使用中,而那些DHCP服务器地址范围有重叠。如果你在自己的网络中仅有一个DHCP服务器,不要忽视这个可能造成问题的原因。十有八九,有一个非法DHCP服务器正与你的主要DHCP服务器冲突。
Windows 2000服务器和Windows服务器2003均以该方式设计,以防止非法DHCP服务器造成问题。DHCP服务器仅能够在被当前目录授权后发送地址。问题在于这仅适合于Windows平台下的DHCP服务器。其他操作系统上运行的DHCP服务器免费租用IP地址给用户,不需要被当前目录授权。
所以用户真正遭受了Linux平台下安装DHCP服务器的麻烦了吗?可能没有。更有可能的解释是,一个无线接入点,或者一个针对电缆或者DSL因特网连接的路由器造成问题。这样的装置内大多数都有DHCP。这些装置通常使用一个192.168.0.x或者192.168. 1.x的范围。如果凑巧与你的主要DHCP服务器所用的IP地址相同,那么你就陷入了这样一个困境,两个DHCP服务器均使用同一个地址资源发布地址!
结论
DHCP故障有许多潜在的原因。大多数情况下,这些故障与DHCP服务器和试图租用地址的工作站两者间的通信问题有关。