對 DNS 伺服器進行疑難排解

試用虛擬助理 - 此功能可協助您快速找出並修正常見的 DNS 問題。

本文討論如何針對 DNS 伺服器上的問題進行疑難排解。

檢查 IP 設定

  1. 在命令提示字元中執行 ipconfig /all,並確認 IP 位址、子網路遮罩和預設閘道。

  2. 檢查 DNS 伺服器對正在查閱的名稱是否有權威。 如果是,請參閱使用權威資料檢查問題

  3. 執行以下命令:

    nslookup <name> <IP address of the DNS server>
    

    例如:

    nslookup app1 10.0.0.1
    

    如果您收到失敗或逾時回應,請參閱檢查遞迴問題

  4. 清除解析器快取。 若要進行此動作,請在系統管理命令提示字元視窗中執行下列命令:

    dnscmd /clearcache
    

    或者,在系統管理 PowerShell 視窗中執行下列 Cmdlet:

    Clear-DnsServerCache
    
  5. 重複步驟 3。

檢查 DNS 伺服器問題

事件記錄檔

檢查下列記錄檔,檢視是否有任何錯誤記錄:

  • 應用程式

  • 系統

  • DNS 伺服器

使用 nslookup 查詢進行測試

執行下列命令,並檢查是否可以從用戶端電腦連線至 DNS 伺服器。

nslookup <client name> <server IP address>
  • 如果解析器傳回用戶端的 IP 位址,表示伺服器沒有任何問題。

  • 如果解析程式傳回「伺服器失敗」或「查詢拒絕」回應,則區域可能會暫停,或伺服器可能超載。 您可以檢查 DNS 主控台中區域屬性的 [一般] 索引標籤來了解其是否暫停。

如果解析器傳回「對伺服器的要求逾時」或「伺服器沒有回應」回應,則 DNS 服務可能未執行。 在伺服器上的命令提示字元輸入下列命令,嘗試重新啟動 DNS 伺服器服務:

net start DNS

如果服務執行時發生問題,伺服器可能無法接聽您在 nslookup 查詢中使用的 IP 位址。 在 DNS 主控台中伺服器屬性頁面的 [介面] 索引標籤上,系統管理員可限制 DNS 伺服器僅接聽選取的位址。 如果 DNS 伺服器已設定將服務僅限於其設定 IP 位址的特定清單,則可能是用來連絡 DNS 伺服器的 IP 位址不在清單中。 您可以嘗試清單中的其他 IP 位址,或將 IP 位址新增至清單。

在少數情況下,DNS 伺服器可能會有進階安全性或防火牆設定。 如果伺服器位於只能透過中繼主機 (例如封包篩選路由器或 Proxy 伺服器) 連線的其他網路,則 DNS 伺服器可能會使用非標準的連接埠接聽和接收用戶端要求。 根據預設,nslookup 會將查詢傳送至 UDP 連接埠 53 上的 DNS 伺服器。 因此,如果 DNS 伺服器使用任何其他連接埠,nslookup 查詢就會失敗。 如果您認為這可能是問題所在,請檢查是否有中繼篩選器專門用於封鎖已知 DNS 連接埠上的流量。 如果不是,請嘗試修改防火牆上的封包篩選器或連接埠規則,以允許 UDP/TCP 連接埠 53 上的流量。

使用權為資料檢查問題

檢查傳回不正確回應的伺服器屬於區域的主要伺服器 (區域的標準主要伺服器,或使用 Active Directory 整合載入區域的伺服器),或是裝載區域次要複本的伺服器。

如果伺服器是主要伺服器

當使用者將資料輸入區域時,使用者錯誤可能會造成此問題。 或者,這可能是由影響 Active Directory 複寫或動態更新的問題所造成。

如果伺服器是裝載區域的次要複本

  1. 檢查主要伺服器上的區域 (此伺服器從中提取區域傳輸的來源伺服器)。

    注意

    您可以檢查 DNS 主控台中次要區域的屬性,以判斷哪個伺服器是主要伺服器。

    如果主要伺服器上的名稱不正確,請移至步驟 4。

  2. 如果主要伺服器上的名稱正確,請檢查主要伺服器上的序號是否小於或等於次要伺服器上的序號。 如果是,請修改主要伺服器或次要伺服器,讓主要伺服器上的序號大於次要伺服器上的序號。

  3. 在次要伺服器上,從 DNS 主控台內強制執行區域傳輸,或執行下列命令:

    dnscmd /zonerefresh <zone name>
    

    例如,假設區域是 corp.contoso.com,請輸入:dnscmd /zonerefresh corp.contoso.com

  4. 再次檢查次要伺服器,查看區域是否已正確傳輸。 如果沒有,可能存在區域傳輸問題。 如需詳細資訊,請參閱區域傳輸問題

  5. 如果區域已正確傳輸,請檢查資料現在是否正確。 如果沒有,表示主要區域中的資料不正確。 當使用者將資料輸入區域時,使用者錯誤可能會造成此問題。 或者,這可能是由影響 Active Directory 複寫或動態更新的問題所造成。

檢查遞迴問題

為了讓遞迴順利運作,遞迴查詢路徑中使用的所有 DNS 伺服器都必須能夠回應和轉送正確的資料。 如果有伺服器無法完成,遞迴查詢可能因為下列任一原因而失敗:

  • 查詢在完成之前逾時。

  • 查詢期間所使用的伺服器無法回應。

  • 查詢期間所使用的伺服器提供不正確的資料。

開始針對原始查詢中使用的伺服器進行疑難排解。 確認此伺服器是否會檢查 DNS 主控台中伺服器屬性的 [轉寄站] 索引標籤,藉此將查詢轉送至另一部伺服器。 如果已選取 [啟用轉寄站] 核取方塊,且有列出一或多部伺服器,表示此伺服器會轉寄查詢。

如果此伺服器確實有將查詢轉送至另一部伺服器,請檢查此伺服器轉送查詢的目標伺服器是否受到問題影響。 若要檢查問題,請參閱檢查 DNS 伺服器問題。 當該小節指示您在用戶端上執行工作時,請改為在伺服器上執行該工作。

如果伺服器狀況良好且可以轉送查詢,請重複此步驟,並檢查此伺服器轉送查詢的伺服器。

如果此伺服器未將查詢轉送至另一部伺服器,請測試此伺服器是否可以查詢根伺服器。 若要這樣做,請執行下列命令:

nslookup
server <IP address of server being examined>
set q=NS
  • 如果解析器傳回根伺服器的 IP 位址,在根伺服器與嘗試解析的名稱或 IP 位址之間可能有中斷的委派。 遵循測試中斷的委派程序,判斷您委派中斷的位置。

  • 如果解析程式傳回「伺服器的要求逾時」回應,請檢查根目錄提示是否指向正常運作的根伺服器。 若要進行此操作,請使用檢視目前的根目錄提示程序。 如果根目錄提示確實指向運作中的根伺服器,表示您的網路可能有問題,或者伺服器可能使用進階防火牆設定來防止解析器查詢伺服器,如檢查 DNS 伺服器問題一節中所述。 這也可能是遞迴逾時的預設值過短所導致。

測試中斷的委派

透過查詢有效的根伺服器,依照下列程序開始測試。 此測試會引導您完成查詢所有 DNS 伺服器的程序,從根目錄到您要測試中斷委派的伺服器。

  1. 在測試伺服器上的命令提示字元中,輸入下列命令:

    nslookup
    server <server IP address>
    set norecursion
    set querytype= <resource record type>
    <FQDN>
    

    注意

    資源記錄類型是您在原始查詢中查詢的資源記錄類型,而 FQDN 是您查詢的 FQDN (以句點結束)。

  2. 如果回應包含委派伺服器的「NS」和「A」資源記錄清單,請針對每部伺服器重複步驟 1,並使用「A」資源記錄中的 IP 位址作為伺服器 IP 位址。

    • 如果回應未包含「NS」資源記錄,表示委派中斷。

    • 如果回應包含「NS」資源記錄,但沒有「A」資源記錄,請輸入 set recursion,並單獨查詢「NS」記錄中所列伺服器的「A」資源記錄。 如果在區域中的每個 NS 資源記錄內找不到任何「A」資源記錄的有效 IP 位址,則會產生中斷的委派。

  3. 如果您判斷存在委派中斷,請在上層區域中新增或更新「A」資源記錄,使用委派區域正確 DNS 伺服器的有效 IP 位址進行修正。

檢視目前的根目錄提示

  1. 啟動 DNS 主控台。

  2. 新增或連線至遞迴查詢失敗的 DNS 伺服器。

  3. 以滑鼠右鍵按一下該伺服器,然後選取 [屬性]

  4. 按一下 [根目錄提示]。

檢查根伺服器的基本連線能力。

  • 如果根目錄提示看起來已正確設定,請檢查失敗名稱解析所使用的 DNS 伺服器是否可依 IP 位址 ping 其根伺服器。

  • 如果根伺服器未回應 IP 位址的 ping,則根伺服器的 IP 位址可能已變更。 不過,根伺服器的重新設定並不常見。

區域傳輸問題

執行下列檢查:

  • 檢查主要和次要 DNS 伺服器的事件檢視器。

  • 檢查主要伺服器,確認其是否拒絕傳送傳輸的安全性。

  • 檢查 DNS 主控台中區域屬性的 [區域傳輸] 索引標籤。 如果伺服器的區域傳輸僅限於伺服器清單,例如區域屬性的 [名稱伺服器] 索引標籤上所列的伺服器,請確定次要伺服器位於該清單中。 請確定伺服器已設定為傳送區域傳輸。

  • 遵循檢查 DNS 伺服器問題一節中的步驟,檢查主要伺服器是否存在問題。 當系統提示您在用戶端上執行工作時,請改為在次要伺服器上執行工作。

  • 檢查次要伺服器是否正在執行另一個 DNS 伺服器實作,例如 BIND。 如果是,問題可能為下列其中一個原因:

    • Windows 主要伺服器可能是設定為傳送快速區域傳輸,但協力廠商的次要伺服器可能不支援快速區域傳輸。 若是這種情況,請從 DNS 主控台內伺服器屬性的 [進階] 索引標籤上選取 [Enable Bind secondaries] (啟用 Bind 次要) 核取方塊,藉此停用主要伺服器上的快速區域傳輸。

    • 如果 Windows 伺服器上的正向對應區域包含次要伺服器不支援的記錄類型 (例如 SRV 記錄),次要伺服器在提取區域時可能會有問題。

檢查主要伺服器是否正在執行另一個 DNS 伺服器實作,例如 BIND。 如果是,主要伺服器上的區域可能會包含 Windows 無法辨識的不相容資源記錄。

如果主要或次要伺服器正在執行另一個 DNS 伺服器實作,請檢查這兩部伺服器,確保兩者都支援相同的功能。 您可以在 DNS 主控台中,從 Windows 伺服器 [屬性] 頁面的 [進階] 索引標籤上檢查該伺服器。 除了 [Enable Bind secondaries] (啟用 Bind 次要) 方塊之外,此頁面還包含 [Name checking] (名稱檢查) 下拉式清單。 此功能可讓您針對 DNS 名稱中的字元選取強制執行嚴格的 RFC 合規性。