阿七 |
2006-07-20 15:51 |
在开始讨论如何排除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使用这些命名服务的顺序。在查找问题时,应按照此顺序检查各种服务。这些提示对你查出问题的症结会有帮助,至少可帮你排除一个怀疑对象。 R1%2]? -q-/0d<l 如果要检查一个服务器的缓存区,请单击DNS控制台左窗格中该服务器名称左边的加号。你将看到一个名为Cached Lookups的文件夹。单击其左边的加号或双击文件夹图标或标签以展开下一级。这样可显示出你的名称服务器已为其缓存了数据的那些顶级域。继续展开,直至看到你要查看的缓存数据所在的那一域名。如我们的名称服务器已为microsoft.com缓存了三条NS记录和一条A记录。如果依次双击net和hp,我们还会看到这些名称服务器的缓存地址。如果想看缓存数据上的 TTL,请双击右窗格中的一条记录。若 DNS 控制台处于高级查看模式(选择查看 > 高级),则出现的窗口将显示出该记录的 TTL。在检查 TTL 之前,一定要用操作 > 刷新或用 F5 键刷新 DNS 控制台,否则你看到的 TTL 可能会大于当前 TTL。如果右键单击该记录,你可能会注意到有一个删除记录选项。 kK]^q|
vb6 t#0/_tD DNS的一些常见的错误 HcrI3
v|6 T|c9Swur 1. 忘记增加序列号 0{O|o_ H$/r{gfg^ 在你未使用 DNS 控制台而是用手动方式更改区域数据文件时,就会出现一些问题。DNS 控制台在它每次更改区域数据时都会记着在 SOA 记录中增加序列号,所以你不必为此操心。不过,这也意味着你可能不会养成更新序列号的习惯,所以在进行一次性手动修改时,你可能会忘记增加序列号。此问题的主要症状是,从属名称服务器不会获得你在主服务器上对该区域做的任何更改。从属服务器认为区域数据并未更改,因为它看到的序列号仍是原来的序列号。该怎样检查当时是否记着增加序列号呢?不幸的是,这就不是那么容易了。如果你不记得原序列号是什么,而现在的序列号不能表明它是什么时候更新的,则没有直接的方法判断它是否已更改。在启动主服务器时,不管你是否更改了序列号,它都将加载更新后的区域数据文件。最好的办法只能是使用 nslookup 来比较主服务器和从属服务器返回的数据。如果它们返回不同的数据,则表明你可能忘了增加序列号。如果你能想起最近作的一次更改,则可以查看此数据。如果记不起最近一次作的更改,则可以从一个主服务器和一个从属服务器复制该区域,将结果排序并使用文件比较工具将它们加以比较。还有一个好消息,即,尽管确定该区域此前是否已复制比较难,但现在要确保该区域被复制却非常简单。只须在 DNS 控制台中双击 SOA 记录并手动编辑序列号字段,增加主服务器上此区域的副本中的序列号即可。从属服务器将在刷新时间间隔内获得此新的数据,如果它们用了 NOTIFY,则会更快。 d/57;6I_ _(q|W3 2. 以手动方式更改DNS服务器 C9
8 Ks {Y%X 要记住 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 控制台将服务器与区域数据文件同步,然后再进行更改。 @?w8XHEa| O-M4NKl]
6 3. 从属服务器无法加载区域数据 a09
]5>* F_Q?0 Do0' 如果一个从属服务器无法从其主控服务器获取某个区域的当前序列号,那么最初它是不会给你发警告消息的。然而,如果该问题一直存在而且从属服务器在有效期时间内无法确定其数据是否是最新的,那么该区域就会过期。在一个 Microsoft DNS 服务器上,你将在事件查看器中看到与下文类似的一条消息:在获得成功区域复制或从这个区域作为其源的主服务器获得成功区域复制之前microsoft.com 区域就超时了,该区域已经被关闭。区域过期后,当你向名称服务器查询该区域中的数据时,就会收到 SERVFAIL 错误消息: =DhzV
D C:> nslookup robocop wormhole.microsoft.com. @Ik@1 Server: wormhole.microsoft.com }/%(7Ff{ Addresses: 207.46.230.219, 192.253.253.1 {ER%r'(4Z wormhole.microsoft.com can’t find robocop.microsoft.com: Server failed DJ
tKLG0 nr#DE? 出现此问题的原因主要有三个:由于网络故障与主控服务器的连接断开,为主控服务器配置的 IP 地址不正确,主控服务器上的区域数据文件中有语法错误。首先,应使用 DNS 控制台检查该从属服务器在尝试从中加载数据的那一(些)主控服务器的地址。右键单击左窗格中该区域的域名,选择属性,然后查看常规选项卡,确认它是否真是主名称服务器的 IP 地址。如果是,请检查到此 IP 地址的连接:C:> ping 207.46.230.219 [S}o[v\ Pinging 207.46.230.219 with 32 bytes of data: {&'u1y R Request timed out. SOyE$GoOsx Request timed out. rf% E+bh4 Request timed out. ;)^eDJ< Request timed out. FuZ7xM, 2/9P&c-r | |