對于6月份我國相繼發生的兩起大規模斷網事件,大家應該記憶猶新。事后分析,這兩起斷網事件都是源于黑客對ISP的DNS服務器攻擊導致域名解析風暴所致。由此可見,DNS服務器對于網絡運營的重要性。同樣的,DNS也是當前企業局域網中非常關鍵的服務器。如果DNS服務器出錯,將對企業局域網造成重大影響,甚至癱瘓?;赪ndows Server 2008平臺的DNS服務器無疑是最佳方案,但如果出錯該從哪些方面進行排錯呢?本文筆者將和大家共享5個非常重要的排錯技巧。
1、從檢查服務器的TCP/IP配置開始
在DNS錯誤中,與TCP/IP相關的比較多,因此我們的排錯首先應該從檢查服務器的TCP/IP配置開始。進入服務器的TCP/IP配置窗口,檢查并驗證其設置是否有誤,如果有誤恢復其正確設置即可。筆者的經驗,建議大家在配置完DNS后不僅要對DNS配置進行備份,同時也要服務器的TCP/IP設置進行備份,這樣恢復起來就非常方便了。在服務器的命令提示符下執行命令“netsh interface dump>C:\settings.txt”,就會將其TCP/IP設置備份到C盤下的settings.txt文件中。如果要進行恢復可執行命令“netsh exec C:\settings.txt”即可。如果恢復或者重新配置TCP/IP后DNS錯誤依然存在,我們可繼續進行下面的排錯。(圖1)
2、不要忽視服務器的緩存
和DNS客戶端類似,DNS服務器也有自己的解析緩存,而這經常被管理所忽略。DNS服務器上的這個緩存主要用于響應自己經常執行的(可能是客戶端要求的,也可能是服務器自己需要的)解析查詢記錄需求。如果我們懷疑DNS服務器故障是因為老的記錄導致的,那么可在命令提示符下執行命令“dnscmd servername /zoneprint .”來查看DNS服務器的緩存。該命令中的“servername”是DNS服務器的名稱或者IP地址,“.”表示我們要查看的是服務器的緩存,這緩存的列表中會包含被該服務器使用的根名稱服務器。
通過查看服務器緩存,管理員可以據此做出判斷。如果有必要,我們可強制讓服務器清空自己的緩存。為此,可在DNS控制臺中用鼠標右鍵單擊服務器項,然后選擇“清除緩存”命令即可。另外,我們可在命令行下執行命令“dnscmd servername /clearcache”也可以清除服務器緩存。其中,servername是要清除緩存的DNS服務器的名稱或者IP地址。(圖2)
3、檢查DNS服務器的配置
在DNS服務器發生故障時,檢查DNS服務器的配置應該是最主要的排錯步驟。因為大部分情況下,DNS問題都和DNS服務器的配置有關。我們在實戰中除了嘗試在大量選項卡對話框中尋找蛛絲馬跡外,還可以求助于dnscmd命令。如果要查看DNS服務器的配置信息,只需在命令行下執行“dnscmd servername /info”命令即可。其中servername是要檢查的DNS服務器的名稱或IP地址,例如“df”或“192.168.1.25”,該命令的輸出結果如圖所示。在此,需要管理員熟悉“dnscmd /info”命令輸出內容中每個字段的含義。通常情況下,作為管理員沒有必要對每個字段都非常了解,不過要了解其中比較關鍵的幾個字段。此外,我們可通過使用“dnscmd /config”命令配置DNS服務器。對于一些主要的配置范例大家應該掌握。例如,我們需要設置fBindSecondaries選項允許maximum compression以及efficiency,那么就可以運行“dnscmd servername /config /BindSecondaries 0”命令即可。同樣servername是要配置的DNS服務器的名稱或者IP地址。需要說明的是,該命令會覆蓋默認的用于支持其他DNS服務器選項。(圖3)
另一個對于DNS服務器進行排錯非常有用的命令是“dnscmd /statistics”,該命令可以顯示許多我們非常感興趣的信息。這些信息對我們進行DNS排錯很有幫助。(1).DNS服務器時間統計,包括服務器的啟動時間,啟動后的秒數,以及最后一次清理的日期和時間。(2).查詢和響應的詳細信息,包括收到的查詢總數,發出的相應總數,發送和接收的UDP查詢數量,發送和接收的UDP響應的數量,以及發送和接收的TCP查詢數量,還有發送和接收的TCP響應的數量。(3).被記錄的查詢的詳情,包括每個類型的發送記錄的準確數量。(4).失敗的詳情以及位置,包括遞歸失敗、重試限制到達,以及收到不完整的回應。(5).動態更新的數量信息,每個更新類型的狀態,安全更新的打斷次數和狀態,被轉發的更新的數量,已經記錄被更新的類型。
(6).被DNS使用的內存數量信息,包括總的內存使用、標準分配,以及從標準到堆的分配。(圖4)
#p#副標題#e#
筆者建議,大家可使用“dnscmd /statistics”命令將DNS的狀態保存為一個文件,這樣可方便我們查看,因為命令行的緩沖限制被輸出的內容。另外,這樣也方便我們在空閑的時間查看服務器的狀態。例如我們執行命令“dnscmd 192.168.1.100 /statistics >dns-stats.txt”可將IP地址為192.168.1.100的DNS服務器上的狀態信息保存在dns-stats.txt文件中。(圖5)
4、在其他DNS服務器上檢查傳送
作為一條很好的安全策略,我們可利用Active Directory的復制功能將DNS的區域信息自動復制出來,這樣當某臺DNS服務器發生故障時,我們可以在其他DNS服務器上檢查傳送。默認情況下,Active Directory每180秒會檢查依次區域變動,為了滿足我們的需要,可以使用dnscmd命令設置目錄服務輪詢的時間間隔。命令格式為“dnscmd servername /config /dspollinginterval interval”,其中servername是DNS服務器的名稱或IP地址,而interval是要使用的輪詢間隔的時間。如果問題和到輔助服務器失敗的變動傳送有關,要確保區域傳送已經啟用。如果區域傳送的配置正確,可嘗試更新主要服務器上區域記錄的序列號。在DNS控制臺中,用鼠標右鍵單擊服務器項,然后選擇“更新服務器數據文件”命令即可。這樣就會按照需要增加區域的序列號,隨后如果有必要,會觸發區域傳送。(圖6)
5、檢查區域和區域記錄
檢查區域和區域記錄,這也是我們在進行DNS排錯時應該做的。同樣還是利用dnscmd工具,它提供了多個有用的命令,可以幫助我們了解好記錄有關的問題。例如執行命令“dnscmd servername /enumzones”會列出DNS服務器中所有可用的區域,命令的輸出如圖所示。其中可以操作的區域名稱都會列在最左側一列中,其他內容則告訴我們區域的類型以及配置方式。在檢查了服務器上區域的這些設置后,可以使用“dnscmd servername /zoneprint zonename”命令將可疑區域的配置記錄輸出然后進行深入分析。其中,servername是DNS服務器的名稱或IP地址,zonename是區域的名稱。(圖7)
總結:作為管理員我們深知DNS服務器的重要性,而相對來說其排錯也比較麻煩,所以明晰思路掌握排錯技巧是非常必要的。當然,本文不可能囊括所有的技巧,但上述介紹的這些技巧卻是最使用的。最后,希望本文對大家有所幫助?! ?/p>