电脑技术学习

Windows服务器DNS故障问题

dn001

  在开始讨论如何排除DNS问题之前,我们想知道你是否清楚怎样判断某个问题是由DNS而不是由别的命名服务造成的。在Windows主机上,判断问题的原因是否真的出在DNS上可是件困难的事。Windows支持的命名服务真是名目繁多:如DNS、Wins、HOSTS、LMHOSTS等数不胜数。然而常用的Windows 2000 nslookup 却全然不理会其他这些命名服务。你可能会只顾在Windows 2000计算机上运行nslookup和查询名称服务器,而有问题的服务却可能在使用另一种不同的命名服务。首先,你需要考虑是哪一类程序出了问题,如果是TCP/IP客户端,如telnet或ftp,那么问题可能出在DNS和HOSTS文件上。如果是一个支持NetBIOS命名的实用程序,如net(与在net use中一样)中,那么值得怀疑的还要包括Wins和LMHOSTS文件。其他也使用DNS名称或NetBIOS名称作为参数的客户端(如ping)也会使用这些命名服务中的任意一种。接下来,再考虑Windows使用这些命名服务的顺序。在查找问题时,应按照此顺序检查各种服务。这些提示对你查出问题的症结会有帮助,至少可帮你排除一个怀疑对象。
  
  如果要检查一个服务器的缓存区,请单击DNS控制台左窗格中该服务器名称左边的加号。你将看到一个名为Cached Lookups的文件夹。单击其左边的加号或双击文件夹图标或标签以展开下一级。这样可显示出你的名称服务器已为其缓存了数据的那些顶级域。继续展开,直至看到你要查看的缓存数据所在的那一域名。如我们的名称服务器已为microsoft.com缓存了三条NS记录和一条A记录。如果依次双击net和hp,我们还会看到这些名称服务器的缓存地址。如果想看缓存数据上的 TTL,请双击右窗格中的一条记录。若 DNS 控制台处于高级查看模式(选择查看 > 高级),则出现的窗口将显示出该记录的 TTL。在检查 TTL 之前,一定要用操作 > 刷新或用 F5 键刷新 DNS 控制台,否则你看到的 TTL 可能会大于当前 TTL。如果右键单击该记录,你可能会注意到有一个删除记录选项。
  
  DNS的一些常见的错误
  
  1. 忘记增加序列号

  
  在你未使用 DNS 控制台而是用手动方式更改区域数据文件时,就会出现一些问题。DNS 控制台在它每次更改区域数据时都会记着在 SOA 记录中增加序列号,所以你不必为此操心。不过,这也意味着你可能不会养成更新序列号的习惯,所以在进行一次性手动修改时,你可能会忘记增加序列号。此问题的主要症状是,从属名称服务器不会获得你在主服务器上对该区域做的任何更改。从属服务器认为区域数据并未更改,因为它看到的序列号仍是原来的序列号。该怎样检查当时是否记着增加序列号呢?不幸的是,这就不是那么容易了。如果你不记得原序列号是什么,而现在的序列号不能表明它是什么时候更新的,则没有直接的方法判断它是否已更改。在启动主服务器时,不管你是否更改了序列号,它都将加载更新后的区域数据文件。最好的办法只能是使用 nslookup 来比较主服务器和从属服务器返回的数据。如果它们返回不同的数据,则表明你可能忘了增加序列号。如果你能想起最近作的一次更改,则可以查看此数据。如果记不起最近一次作的更改,则可以从一个主服务器和一个从属服务器复制该区域,将结果排序并使用文件比较工具将它们加以比较。还有一个好消息,即,尽管确定该区域此前是否已复制比较难,但现在要确保该区域被复制却非常简单。只须在 DNS 控制台中双击 SOA 记录并手动编辑序列号字段,增加主服务器上此区域的副本中的序列号即可。从属服务器将在刷新时间间隔内获得此新的数据,如果它们用了 NOTIFY,则会更快。
  
  2. 以手动方式更改DNS服务器
  
  要记住 Microsoft DNS 服务器会定期更新其区域数据文件。每次用 DNS 控制台对一个区域的数据进行更改时,就有一个写操作挂起:在 DNS 服务器退出之前,它必须重写该区域的数据文件,否则它就会丢失你所作的更改。可以将此比作内存中一个已更新的页:操作系统在退出之前必须将它写到磁盘上。如果你在一个写操作挂起期间对一个区域数据文件作了手动更改,则在名称服务器退出后你会莫名其妙地丢失所作的更改。比如你在服务器正在运行且有一个写操作挂起时向一个名为microsoft.com的新子域添加了委派。作完更改后,你必须将服务器停下并再次启动,以让它再次读取该区域数据。但是在服务器退出时,它将重写 microsoft.com 区域数据文件,你的委派于是就会丢掉。如果仔细观察(平时就需要这样)事件查看器,会在服务器停止事件之前看到这样一条消息:The DNS server wrote version 37 of zone microsoft.com to file microsoft.com.dns.(DNS 服务器写入区域 microsoft.com 的版本 37 到文件 microsoft.com.dns。)如果你用操作 | 更新服务器数据文件来强制服务器重写其区域数据文件,则服务器就会与区域数据文件同步,而不必在退出时重写。所以,如果要对区域数据文件作手动更改,那么要么首先停止服务器(但这意味着在你作更改期间服务器将不响应任何查询),要么使用 DNS 控制台将服务器与区域数据文件同步,然后再进行更改。