Windows服務(wù)器DNS故障問題
在開始討論如何排除DNS問題之前,我們想知道你是否清楚怎樣判斷某個問題是由DNS而不是由別的命名服務(wù)造成的。在Windows主機(jī)上,判斷問題的原因是否真的出在DNS上可是件困難的事。Windows支持的命名服務(wù)真是名目繁多:如DNS、Wins、HOSTS、LMHOSTS等數(shù)不勝數(shù)。然而常用的Windows 2000 nslookup 卻全然不理會其他這些命名服務(wù)。你可能會只顧在Windows 2000計算機(jī)上運行nslookup和查詢名稱服務(wù)器,而有問題的服務(wù)卻可能在使用另一種不同的命名服務(wù)。首先,你需要考慮是哪一類程序出了問題,如果是TCP/IP客戶端,如telnet或ftp,那么問題可能出在DNS和HOSTS文件上。如果是一個支持NetBIOS命名的實用程序,如net(與在net use中一樣)中,那么值得懷疑的還要包括Wins和LMHOSTS文件。其他也使用DNS名稱或NetBIOS名稱作為參數(shù)的客戶端(如ping)也會使用這些命名服務(wù)中的任意一種。接下來,再考慮Windows使用這些命名服務(wù)的順序。在查找問題時,應(yīng)按照此順序檢查各種服務(wù)。這些提示對你查出問題的癥結(jié)會有幫助,至少可幫你排除一個懷疑對象。如果要檢查一個服務(wù)器的緩存區(qū),請單擊DNS控制臺左窗格中該服務(wù)器名稱左邊的加號。你將看到一個名為Cached Lookups的文件夾。單擊其左邊的加號或雙擊文件夾圖標(biāo)或標(biāo)簽以展開下一級。這樣可顯示出你的名稱服務(wù)器已為其緩存了數(shù)據(jù)的那些頂級域。繼續(xù)展開,直至看到你要查看的緩存數(shù)據(jù)所在的那一域名。如我們的名稱服務(wù)器已為microsoft.com緩存了三條NS記錄和一條A記錄。如果依次雙擊net和hp,我們還會看到這些名稱服務(wù)器的緩存地址。如果想看緩存數(shù)據(jù)上的 TTL,請雙擊右窗格中的一條記錄。若 DNS 控制臺處于高級查看模式(選擇查看 > 高級),則出現(xiàn)的窗口將顯示出該記錄的 TTL。在檢查 TTL 之前,一定要用操作 > 刷新或用 F5 鍵刷新 DNS 控制臺,否則你看到的 TTL 可能會大于當(dāng)前 TTL。如果右鍵單擊該記錄,你可能會注意到有一個刪除記錄選項。DNS的一些常見的錯誤1. 忘記增加序列號在你未使用 DNS 控制臺而是用手動方式更改區(qū)域數(shù)據(jù)文件時,就會出現(xiàn)一些問題。DNS 控制臺在它每次更改區(qū)域數(shù)據(jù)時都會記著在 SOA 記錄中增加序列號,所以你不必為此操心。不過,這也意味著你可能不會養(yǎng)成更新序列號的習(xí)慣,所以在進(jìn)行一次性手動修改時,你可能會忘記增加序列號。此問題的主要癥狀是,從屬名稱服務(wù)器不會獲得你在主服務(wù)器上對該區(qū)域做的任何更改。從屬服務(wù)器認(rèn)為區(qū)域數(shù)據(jù)并未更改,因為它看到的序列號仍是原來的序列號。該怎樣檢查當(dāng)時是否記著增加序列號呢?不幸的是,這就不是那么容易了。如果你不記得原序列號是什么,而現(xiàn)在的序列號不能表明它是什么時候更新的,則沒有直接的方法判斷它是否已更改。在啟動主服務(wù)器時,不管你是否更改了序列號,它都將加載更新后的區(qū)域數(shù)據(jù)文件。最好的辦法只能是使用 nslookup 來比較主服務(wù)器和從屬服務(wù)器返回的數(shù)據(jù)。如果它們返回不同的數(shù)據(jù),則表明你可能忘了增加序列號。如果你能想起最近作的一次更改,則可以查看此數(shù)據(jù)。如果記不起最近一次作的更改,則可以從一個主服務(wù)器和一個從屬服務(wù)器復(fù)制該區(qū)域,將結(jié)果排序并使用文件比較工具將它們加以比較。還有一個好消息,即,盡管確定該區(qū)域此前是否已復(fù)制比較難,但現(xiàn)在要確保該區(qū)域被復(fù)制卻非常簡單。只須在 DNS 控制臺中雙擊 SOA 記錄并手動編輯序列號字段,增加主服務(wù)器上此區(qū)域的副本中的序列號即可。從屬服務(wù)器將在刷新時間間隔內(nèi)獲得此新的數(shù)據(jù),如果它們用了 NOTIFY,則會更快。2. 以手動方式更改DNS服務(wù)器要記住 Microsoft DNS 服務(wù)器會定期更新其區(qū)域數(shù)據(jù)文件。每次用 DNS 控制臺對一個區(qū)域的數(shù)據(jù)進(jìn)行更改時,就有一個寫操作掛起:在 DNS 服務(wù)器退出之前,它必須重寫該區(qū)域的數(shù)據(jù)文件,否則它就會丟失你所作的更改??梢詫⒋吮茸鲀?nèi)存中一個已更新的頁:操作系統(tǒng)在退出之前必須將它寫到磁盤上。如果你在一個寫操作掛起期間對一個區(qū)域數(shù)據(jù)文件作了手動更改,則在名稱服務(wù)器退出后你會莫名其妙地丟失所作的更改。比如你在服務(wù)器正在運行且有一個寫操作掛起時向一個名為microsoft.com的新子域添加了委派。作完更改后,你必須將服務(wù)器停下并再次啟動,以讓它再次讀取該區(qū)域數(shù)據(jù)。但是在服務(wù)器退出時,它將重寫 microsoft.com 區(qū)域數(shù)據(jù)文件,你的委派于是就會丟掉。如果仔細(xì)觀察(平時就需要這樣)事件查看器,會在服務(wù)器停止事件之前看到這樣一條消息:The DNS server wrote version 37 of zone microsoft.com to file microsoft.com.dns.(DNS 服務(wù)器寫入?yún)^(qū)域 microsoft.com 的版本 37 到文件 microsoft.com.dns。)如果你用操作 | 更新服務(wù)器數(shù)據(jù)文件來強(qiáng)制服務(wù)器重寫其區(qū)域數(shù)據(jù)文件,則服務(wù)器就會與區(qū)域數(shù)據(jù)文件同步,而不必在退出時重寫。所以,如果要對區(qū)域數(shù)據(jù)文件作手動更改,那么要么首先停止服務(wù)器(但這意味著在你作更改期間服務(wù)器將不響應(yīng)任何查詢),要么使用 DNS 控制臺將服務(wù)器與區(qū)域數(shù)據(jù)文件同步,然后再進(jìn)行更改。3. 從屬服務(wù)器無法加載區(qū)域數(shù)據(jù)如果一個從屬服務(wù)器無法從其主控服務(wù)器獲取某個區(qū)域的當(dāng)前序列號,那么最初它是不會給你發(fā)警告消息的。然而,如果該問題一直存在而且從屬服務(wù)器在有效期時間內(nèi)無法確定其數(shù)據(jù)是否是最新的,那么該區(qū)域就會過期。在一個 Microsoft DNS 服務(wù)器上,你將在事件查看器中看到與下文類似的一條消息:在獲得成功區(qū)域復(fù)制或從這個區(qū)域作為其源的主服務(wù)器獲得成功區(qū)域復(fù)制之前microsoft.com 區(qū)域就超時了,該區(qū)域已經(jīng)被關(guān)閉。區(qū)域過期后,當(dāng)你向名稱服務(wù)器查詢該區(qū)域中的數(shù)據(jù)時,就會收到 SERVFAIL 錯誤消息:C:> nslookup robocop wormhole.microsoft.com.Server: wormhole.microsoft.comAddresses: 207.46.230.219, 192.253.253.1wormhole.microsoft.com can’t find robocop.microsoft.com: Server failed出現(xiàn)此問題的原因主要有三個:由于網(wǎng)絡(luò)故障與主控服務(wù)器的連接斷開,為主控服務(wù)器配置的 IP 地址不正確,主控服務(wù)器上的區(qū)域數(shù)據(jù)文件中有語法錯誤。首先,應(yīng)使用 DNS 控制臺檢查該從屬服務(wù)器在嘗試從中加載數(shù)據(jù)的那一(些)主控服務(wù)器的地址。右鍵單擊左窗格中該區(qū)域的域名,選擇屬性,然后查看常規(guī)選項卡,確認(rèn)它是否真是主名稱服務(wù)器的 IP 地址。如果是,請檢查到此 IP 地址的連接:C:> ping 207.46.230.219Pinging 207.46.230.219 with 32 bytes of data:Request timed out.Request timed out.Request timed out.Request timed out.如果無法連接到主控服務(wù)器,請確定該服務(wù)器的主機(jī)是否真的在運行(例如,已通電),或檢查網(wǎng)絡(luò)問題。你可能還需要檢查主控服務(wù)器對該區(qū)域中數(shù)據(jù)的查詢是否返回權(quán)威性響應(yīng)。如果主控服務(wù)器的響應(yīng)對于該區(qū)域不是權(quán)威性的,則從屬服務(wù)器就不從該主控服務(wù)器中復(fù)制此區(qū)域。可使用 nslookup 檢查主控服務(wù)器的對于區(qū)域的 SOA 記錄的權(quán)威性響應(yīng),命令格式如下:C:> nslookup -norec -type=SOA microsoft.com. 207.46.230.219此命令向位于地址 152.104.1.6 的名稱服務(wù)器發(fā)送一個非遞歸查詢,以查詢 microsoft.com 的 SOA 記錄。我們必須發(fā)送非遞歸查詢,這樣位于 152.104.1.6 的名稱服務(wù)器就不會將該查詢轉(zhuǎn)發(fā)給另一個服務(wù)器。如果將此主控服務(wù)器配置正確,則對此查詢的響應(yīng)就應(yīng)是權(quán)威性的。(記住,除非 nslookup 返回了“非權(quán)威性響應(yīng),否則響應(yīng)就是權(quán)威性的。)非權(quán)威性的響應(yīng)可能表明主控服務(wù)器在加載該區(qū)域時發(fā)生問題,通常是由于區(qū)域數(shù)據(jù)文件中存在語法錯誤。請與該主控服務(wù)器的管理員聯(lián)系,讓他檢查其事件查看器或系統(tǒng)日志的輸出中是否有表明出現(xiàn)語法錯誤的消息。我們從來還沒有見到過 Windows 2000 名稱服務(wù)器因為區(qū)域數(shù)據(jù)文件中有語法錯誤而對于此區(qū)域失去非權(quán)威性的情況,但舊的 BIND 名稱服務(wù)器確實會表現(xiàn)出這種現(xiàn)象。所以,如果你的名稱服務(wù)器是某一區(qū)域的從屬服務(wù)器,而此區(qū)域的主要主名稱服務(wù)器是 BIND 名稱服務(wù)器,該服務(wù)器現(xiàn)在對該區(qū)域不具有權(quán)威性,那么問題可能就是一個語法錯誤。如果對查詢的響應(yīng)是權(quán)威性的但從屬服務(wù)器仍無法成功復(fù)制該區(qū)域,那么你可以使用nslookup的ls命令來手動復(fù)制該區(qū)域。如果看到類似于下面的錯誤消息,則很可能是主控服務(wù)器限制區(qū)域復(fù)制:C:> nslookup - 152.104.1.6Default Server: terminator.microsoft.comAddress: 152.104.1.6> ls microsoft.com[terminator.microsoft.com]*** Can‘t list domain microsoft.com: Query refused請與該主控服務(wù)器的管理員聯(lián)系,問是否在對區(qū)域復(fù)制進(jìn)行限制。請他檢查你正在嘗試復(fù)制的區(qū)域的屬性窗口的區(qū)域復(fù)制選項卡上的選項(如果他在運行 Microsoft DNS 服務(wù)器)。如果該遠(yuǎn)程服務(wù)器在運行著 BIND,則請問他是否在使用 xfrnets 或 allow-transfer 功能來對區(qū)域復(fù)制進(jìn)行限制。在問題已被排除而且你的服務(wù)器能成功復(fù)制該區(qū)域后,你會在事件查看器中看到下面的消息:A more recent version, version 212 of zone microsoft.com wasfound at DNS server at 207.46.230.219. Zone transfer is in progress.The DNS server wrote version 212 of zone microsoft.com tofile microsoft.com.dns.(在 207.46.230.219 的 DNS 服務(wù)器上找到區(qū)域microsoft.com 的更新的版本212。正在進(jìn)行區(qū)域復(fù)制。DNS 服務(wù)器寫入?yún)^(qū)域 microsoft.com 的版本 212 到文件 microsoft.com.dns。)
相關(guān)文章:
