在 DNS Server 中排除 DNS over HTTPS 問題(預覽版)

這很重要

Windows Server 上 DNS Server 的 DNS over HTTPS(DoH)目前處於預覽階段。 這項資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft針對此處提供的資訊,不提供任何明示或默示擔保。

你的客戶端是無法用 DoH 連接你的 DNS 伺服器,還是加密的 DNS 查詢無故失敗? 本文協助你辨識並修正 Windows DNS Server 上常見的 DNS over HTTPS(DoH)問題。 無論您面臨憑證綁定錯誤、埠衝突或效能問題,都能找到逐步指引,確保 DoH 正確運作。

先從故障排除清單開始,快速找出問題所在,接著依症狀分類的細節步驟解決。 本文適用於啟用 DoH 預覽功能的 Windows Server 2025 及更新版本。

先決條件

在排除 DoH 問題之前,請確保已具備以下條件:

  • 安裝 2026-02 安全更新((KB5075899))或更新版本的 Windows Server 2025。

  • DNS Server 服務上的 DNS over HTTPS 是在使用Windows DNS Server 上的 DoH:公開預覽註冊申請存取權限後,依照提供的說明來啟用的。

  • 對託管 DNS Server 服務的 Windows Server 擁有管理權限或等效權限。

衛生部證書必須符合以下要求:

  • 增強型金鑰使用擴充:必須包含伺服器認證(1.3.6.1.5.5.7.3.1)物件識別碼

  • 主體或主體替代名稱:簽署的證書,包含主體替代名稱(SAN),並包含完全符合您設定的DoH URI範本的完整資格網域名稱或IP位址

  • 私鑰:必須存在於本地電腦的儲存庫中,且與憑證正確關聯,且不得啟用強私鑰保護

  • 信任鏈:必須由 DNS 用戶端信任的 CA 發布

疑難排解檢查清單

依照這份清單進行,找出你的DoH問題。 每一次檢查都連結到詳細的解決步驟。

1. 驗證DoH狀態

✅ DoH 已啟用: Get-DnsServerEncryptionProtocol 顯示 EnableDoh : True

✅ DNS 服務正在運行: Get-Service DNS 顯示 Running

✅ 已設定的埠正在監聽: netstat -an | findstr :<port> 顯示 LISTENING。 預設埠口是 443。

要解決服務設定問題,請參見 症狀:DoH 未設定或執行

2. 驗證 DoH 初始化

✅ 事件 ID 822 會在服務重新啟動後出現在 DNS 伺服器事件日誌中

✅ 事件日誌中無錯誤事件(823、824、825、826)

✅ 憑證綁定到你設定的埠口: netsh http show sslcert

要解決初始化失敗,請參見 症狀:DoH 初始化失敗

3. 驗證用戶端連接性

✅ 用戶端預設可透過設定的 DoH 埠口(使用瀏覽器測試)連接 DNS 伺服器,預設為 443

✅ 防火牆允許在設定的 DoH 埠口接收 TCP 進站

✅ 客戶端信任伺服器憑證(沒有憑證警告)

要解決連線問題,請參見 症狀:用戶端無法使用 DoH 連線

4. 驗證查詢處理

✅ 事件 ID 597(已接收的查詢)會出現在分析日誌中。

✅ 事件ID 598(已發送的回應)會出現在分析日誌中

✅ 無事件 ID 599(回應失敗)或事件 ID 600(查詢被拒絕)

要解決查詢處理問題,請參見 症狀:DoH 查詢失敗或逾時

小提示

如果事件編號 597 沒有出現,請先排除用戶端連線問題。 請參見 症狀:客戶端無法使用 DoH 連線

5. 驗證效能

✅ DoH 請求 丟棄/秒數計數器 = 0

✅ DoH 回覆已發送每秒 ≈ DoH 請求收到每秒

✅ 查詢延遲是可以接受的

要解決效能問題,請參見 症狀:DoH 效能問題

症狀:DoH 未設定或未運行

你嘗試使用 DoH,但客戶端仍使用未加密的 DNS,或者你無法驗證伺服器上的 DoH 是否啟用。

常見原因:

  • 伺服器上沒有啟用 DoH

  • DNS 服務中斷

  • DoH 設定中的設定錯誤

如何診斷:

要檢查 DoH 設定,請執行以下指令:

Get-DnsServerEncryptionProtocol

如果 DoH 設定得當,你應該會看到:

EnableDoh   : True
UriTemplate : https://dns.contoso.com:443/dns-query

要檢查 DNS 服務狀態,請執行以下指令:

Get-Service DNS

輸出應該會顯示Status: Running

要確認你設定的埠正在監聽,請執行以下指令。 如果不同,請替換 443 成你設定的埠:

netstat -an | findstr :443

你應該會看到 TCP 條目在狀態 LISTENING

如需詳細監控程序,請參見 Monitor DNS over HTTPS

如何解決:

EnableDohFalse,則啟用 DoH,請執行以下指令:

Set-DnsServerEncryptionProtocol -EnableDoh $true -UriTemplate "https://dns.contoso.com:443/dns-query"

用你 DNS 伺服器的 FQDN 取代 dns.contoso.com ,該 FQDN 與你的憑證 SAN 相符。

要重新啟動 DNS 伺服器服務,請執行以下指令:

Restart-Service -Name DNS

如果 DoH 之前沒有設定,請參閱 Windows DNS Server 啟用 DNS over HTTPS 的完整設定說明,包括憑證要求。


症狀:DoH 無法初始化

你啟用了 DoH,但服務沒有正確初始化。 客戶無法使用 DoH 連線。

常見原因:

  • 憑證綁定問題(事件 ID 823)。

  • 港口衝突(事件ID 825、826)。

  • URI 模板設定無效。

如何診斷:

請檢查 Windows 事件檢視器中的 DNS 伺服器事件。 前往 應用程式與服務>DNS 伺服器

完整事件詳情請參見 Monitor DNS over HTTPS - Server Events

請留意以下特定事件:

  • 事件 ID 823 (DNS_EVENT_HTTP_SERVER_INIT_FAILED):HTTP 伺服器初始化失敗,通常因憑證綁定問題或埠衝突所致。

  • 事件 ID 824 (DNS_EVENT_HTTP_SERVER_SESSION_FAILED):HTTP 伺服器會話建立失敗,通常因資源限制。

  • 事件識別碼 825(DNS_EVENT_HTTP_CREATE_URL_FAILED):因 URI 格式無效或埠衝突,URL 註冊失敗。

尋找事件ID 822(DNS_EVENT_HTTP_URL_REGISTERED),表示初始化成功。 如果服務重啟後此事件未出現,則表示初始化失敗。

如何解決:

憑證綁定問題

若看到事件 ID 823,請執行以下指令以驗證憑證綁定:

netsh http show sslcert

尋找符合你 IP 位址和埠口的條目(例如, 0.0.0.0:443)。 確認它顯示的是你 DNS 伺服器憑證的指紋。

如果證書未被綁定或顯示錯誤的指紋,請參閱「 綁定證書 」了解如何綁定正確證書的步驟。

確保證書符合以下要求:

  • LocalMachine\My store 中的有效 SSL/TLS 憑證

  • 主體替代名稱(SAN)與你的 DoH URI 中的 FQDN 相符

  • 私鑰已安裝

  • 沒有過期

關於詳細憑證設定,請參閱 Windows DNS Server 啟用 DNS over HTTPS。

連接埠衝突

如果你看到事件 ID 825 或 826,表示其他服務可能正在使用 443 埠。 要檢查使用該埠的是什麼,請執行以下指令:

netstat -ano | findstr :443

如果其他程序使用 443 埠,則:

  • 停止衝突服務,或
  • 要設定 DoH 使用不同埠,請執行以下指令:
Set-DnsServerEncryptionProtocol -EnableDoh $true -UriTemplate "https://dns.contoso.com:8443/dns-query"

然後將憑證綁定到新埠口,並相應更新防火牆規則。

設定錯誤

確認你的 URI 範本格式正確:

  • 開頭為 https://

  • 包含與你憑證SAN相符的FQDN

  • 包含路徑 /dns-query

  • 範例:https://dns.contoso.com:443/dns-query

要檢查目前的 URI 範本設定,請執行以下指令:

Get-DnsServerEncryptionProtocol | Select-Object UriTemplate

如果 URI 範本錯誤或缺失,請執行以下指令重新設定:

Set-DnsServerEncryptionProtocol -EnableDoh $true -UriTemplate "https://dns.contoso.com:443/dns-query"

用你 DNS 伺服器的 FQDN 取代 dns.contoso.com 。 確保 FQDN 與你證書中的主體替代名稱(SAN)完全一致。

解決問題後,執行以下指令重新啟動 DNS 服務。 請檢查事件 ID 822 以確認初始化成功。

Restart-Service -Name DNS

症狀:客戶無法使用 DoH 連線

你可以在伺服器上設定並啟動 DoH,但客戶端無法連線或會收到憑證錯誤。

常見原因:

  • 網路或防火牆封鎖了預設的 DoH 埠口,預設是 443。

  • 證書信任問題。

  • 客戶端使用錯誤的 URI 或設定。

如何診斷:

透過開啟網頁瀏覽器並進入你的 DoH URI(例如,https://dns.contoso.com/dns-query)來測試用戶端機器的連線。 你應該會看到以下其中一種結果:

  • 空白頁面或簡短回應表示伺服器正在監聽且網路連線正常。

  • 憑證錯誤表示憑證信任問題,但也確認網路連線與防火牆規則正確。

  • 連線逾時表示網路或防火牆問題,阻止使用 DoH 存取 DNS 伺服器。

要檢查 DNS 伺服器的防火牆規則,請執行以下指令:

Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*DNS*" -or $_.DisplayName -like "*443*"} | Format-Table DisplayName, Enabled, Direction, Action

透過瀏覽器中的憑證詳細資料來驗證客戶端憑證的信任度。 檢查憑證鏈是否有效且可信。

如何解決:

網路連線

首先,透過 HTTPS 驗證用戶端與 DNS 伺服器的網路連線。 執行以下指令,如果你設定了非預設埠,請替換該埠:

Test-NetConnection -ComputerName dns.contoso.com -Port 443

如果 TcpTestSucceeded 回傳 False,請檢查用戶端與伺服器之間的網路路由與防火牆規則。

要在伺服器上建立新的 Windows 防火牆規則以允許入站連線,請執行以下指令。 如果不同,請替換 443 成你設定的埠:

New-NetFirewallRule -DisplayName "DNS over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

如果你使用硬體防火牆或網路安全群組,請確保它允許你設定的 DoH 埠口有 TCP 流量進入 DNS 伺服器。

證書信託

如果您使用私人憑證授權中心(CA):

  1. 確保你的 DNS 用戶端信任那個 CA。

  2. 在用戶端電腦上安裝根 CA 憑證。

  3. 確認伺服器上的憑證鏈是否完整。

或者,使用由客戶已信任且公開信任的 CA 簽署的憑證。

要測試用戶端與 DNS 伺服器 DoH 埠的網路連線,請執行以下指令。 如果不同,請替換 443 成你設定的埠:

Test-NetConnection -ComputerName dns.contoso.com -Port 443

要驗證憑證是否被客戶信任,請開啟網頁瀏覽器並前往 https://dns.contoso.com/dns-query。 如果瀏覽器顯示憑證警告,代表客戶端不信任憑證鏈。

關於憑證部署的指引,請參見 Windows DNS Server 啟用 DNS over HTTPS

用戶端組態

確認客戶端的 DoH 設定與你伺服器的 URI 完全一致:

  • Windows 11:設定 > 網路與網際網路 > [連線] > DNS 設定

  • DoH範本必須符合: https://dns.contoso.com:443/dns-query

  • 如果你使用非預設埠,請確保客戶端指定。

如果你設定了客戶端但他們仍使用未加密的 DNS,請檢查客戶端網路設定中的 DNS 伺服器 IP 地址是否與啟用 DoH 的 DNS 伺服器相符。


症狀:DoH 查詢失敗或逾時

用戶端會連接到 DNS 伺服器,但查詢失敗或無法收到回應。

常見原因:

  • 上游 DNS 解析問題(事件 ID 599)

  • 用戶端協定不相容(事件 ID 600)

  • 用戶端 DoH 設定問題

  • DNS 伺服器設定問題

如何診斷:

啟用分析日誌以捕捉每查詢的詳細事件:

  1. 打開事件檢視器,前往Microsoft>Windows>DNS-Server>

  2. 右鍵點擊 「分析」 並選擇 啟用日誌

如需詳細的分析日誌程序,請參見 Monitor DNS over HTTPS - 分析事件

請參考以下重要事件:

  • 事件 ID 597:收到 DoH 查詢 - 確認加密 DNS 查詢已達伺服器

  • 事件ID 598:DoH回應已送出——確認成功回應

  • 事件 ID 599:DoH 回應失敗 - 表示伺服器嘗試回應但無法回應(可能是上游解決問題)

  • 事件 ID 600:DoH 查詢被拒絕 - 伺服器正在積極丟棄某些 DoH 請求

  • 事件ID 601:DoH通道故障——在某些錯誤情況下可能伴隨600或599

尋找圖案:

  • 多個事件 ID 597 條目但沒有事件 ID 598 條目,表示伺服器無法解決查詢。

  • 事件 ID 600 的項目可能表示 HTTP 版本不相容或請求格式錯誤。

  • 事件 ID 599, SERVFAIL RCODE 暗示上游轉運者的問題。

如何解決:

上游 DNS 問題(事件 ID 599)

如果你看到事件 ID 599 或 SERVFAIL 類似錯誤,請檢查 DNS 伺服器上的上游 DNS 設定。 執行以下命令:

Get-DnsServerForwarder

要測試與轉發器的連線,請執行以下指令:

Test-NetConnection -ComputerName <forwarder-ip> -Port 53

如果轉發器無法聯繫或設定錯誤,請使用以下指令嘗試替代轉發器:

Set-DnsServerForwarder -IPAddress <new-forwarder-ip>

若要手動測試解析度,請執行以下指令:

Resolve-DnsName -Name microsoft.com -Server localhost

關於傳統 DNS 故障排除,請參見 DNS 伺服器故障排除

查詢拒絕(事件 ID 600)

事件 ID 600 表示查詢被拒絕。 常見的原因包括:

  • HTTP 請求不相容:DNS 伺服器因不支援或無效的 HTTP 請求特性而拒絕該請求。

  • 格式錯誤的請求:查詢不符合 RFC 8484。

  • DNS 政策限制:DNS 政策可能會拋棄查詢。

  • 伺服器端請求需求未被滿足:接收端介面未啟用 DoH,或 URI 範本不符,或伺服器端驗證、設定或政策檢查。

請查看活動細節以了解拒絕原因。 如果用戶端使用不相容的 HTTP 版本,請更新用戶端軟體或使用不同的 DoH 用戶端應用程式。

為了確認沒有 DNS 政策干擾,請執行以下指令:

Get-DnsServerQueryResolutionPolicy

客戶端DoH配置

如果特定客戶端的查詢失敗,但其他客戶端的查詢可正常運作,請確認該客戶端的 DoH 設定。 常見問題包括:

  • 錯誤的DoH URI範本
  • DNS 伺服器的 IP 位址與 DoH 使用的 DNS 伺服器不符
  • 客戶端未設定使用 DoH

關於用戶端設定指引,請參閱 Secure DNS Client over HTTPS (DoH)。

伺服器組態

如果查詢因非本文前述原因失敗,請檢查一般 DNS 伺服器設定:

  • 請確認根提示是否設定正確。

  • 檢查授權區域的區域載入狀態。

  • 如果伺服器應該執行遞迴解析,請檢查遞迴設定。

如需完整的 DNS 故障排除,請參見 「排除 DNS 伺服器」。

為避免過度產生事件,故障排除完成後請停用分析日誌。


症狀:DoH 性能問題

DoH 雖然有效,但你會遇到高延遲、查詢中斷,或是效能比未加密的 DNS 差。

常見原因:

  • 伺服器容量限制

  • TLS 握手的開銷

  • 網路擁塞或高 CPU 使用率

如何診斷:

啟用以下計數器的監控,使用 Monitor DNS over HTTPS - 監控效能

  • 每秒收到的DoH請求數
  • DoH 回應發送/秒
  • 每秒DoH請求丟棄數

績效問題的關鍵指標:

  • DoH 請求被丟棄/第 0 節>:伺服器會丟棄查詢。

  • 收到的請求數/秒遠高於回覆數/秒:許多查詢無法得到答案。

  • 在 DoH 查詢處理過程中,CPU 使用率過高或飆升

同時監控系統資源:

  • CPU 使用率

  • 記憶體使用量

  • 網路輸送量

如果只有某些查詢速度慢,問題可能出在 DoH 外部。 例如,針對特定網域,緩慢遞迴到上游伺服器。 為了將 DoH 的延遲和一般 DNS 的延遲隔離開來,應比較相同查詢的 DoH 和未加密 DNS 的速度表現。 如果兩者都很慢,問題很可能出在上游解析,而不是 DoH 特定問題。

如何解決:

放棄查詢

DoH Requests Dropped/sec 大於 0,則採取以下步驟:

  1. 與 DNS 伺服器日誌中的事件 ID 600 相關聯,以找出中斷原因。

  2. 檢查伺服器是否資源有限。

    Get-Counter '\Processor(_Total)\% Processor Time'
    Get-Counter '\Memory\Available MBytes'
    
  3. 如果 CPU 或記憶體持續偏高,請考慮:

    • 用更多 CPU 或 RAM 資源來擴充伺服器。
    • 新增額外的 DNS 伺服器來分散負載。
    • 實作 DNS 負載平衡。

高延遲

TLS 握手協議的開銷可能會增加查詢延遲,相較於未加密的 DNS 系統。 診斷延遲問題:

  • 將 DoH 查詢時間與未加密的 DNS 基準線相比,針對相同查詢進行比較。

  • 使用客戶端工具來衡量端到端的 DoH 查詢時間。

  • 如果 DoH 和未加密的 DNS 對相同查詢都很慢,問題出在上游解析度,而非 DoH 本身。

為了降低特定 DoH 的延遲:

  1. 驗證伺服器 CPU 容量:TLS 操作對 CPU 需求大。 要檢查 CPU 是否在 DoH 流量傳輸期間造成瓶頸,請執行以下指令:

    Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 1 -MaxSamples 30
    

    如果 CPU 在 DoH 流量期間持續超過 70-80%,建議升級伺服器資源或分配負載。

  2. 檢視證書鏈長度:較短的證書鏈驗證速度越快。 確保中間憑證設定妥當,以避免額外的查詢。

  3. 檢查網路路徑:用戶端與 DNS 伺服器之間的高網路延遲直接影響查詢時間。 使用 Test-NetConnectiontraceroute 找出網路瓶頸。

資源限制

如果伺服器配置不足:

  1. 監控正常作業期間的基線資源使用。

  2. 找出高峰使用時間,並與查詢量相關聯。

  3. 考慮:

    • 垂直擴展(較大的虛擬機或實體伺服器)。
    • 水平擴展(多個 DNS 伺服器在負載平衡器後方)。
    • 優化 DNS 區域設定以降低區域傳輸負擔。

要監控長期趨勢並規劃容量,請執行以下指令:

Get-Counter '\DNS-over-HTTPS\DoH Requests Received/sec' -Continuous

關於容量規劃的指引,請參見 Monitor DNS over HTTPS - 監控效能


進階診斷

當基本故障排除無法解決問題時,請運用這些進階技術收集詳細的診斷資訊。

啟用分析記錄

DNS 伺服器分析日誌會詳細記錄每次查詢的事件,包括 DoH 專屬的操作。 啟用日誌後,它會記錄每個 DoH 查詢、回應、失敗和拒絕的事件 ID 597-600。

關於啟用及使用分析日誌的逐步說明,請參見 「監控 DNS over HTTPS - 分析事件」。

這很重要

完成時請關閉分析日誌,因為它會在繁忙伺服器上產生大量事件。

詳細事件分析

在檢視DoH事件時,請檢視這些事件欄位以尋找診斷線索:

  • QNAME:查詢的網域名稱。 這個領域能幫助你辨識問題是否屬於特定領域。

  • QTYPE:DNS 記錄類型,例如 A、AAAA、MX 等。

  • RCODE:回應代碼,像是 NOERROR、SERVFAIL、NXDOMAIN 等。

  • 原因:對於事件ID 600,此欄位提供拒絕原因。

  • 用戶端 IP:查詢的來源。 這個領域能幫助你辨識有問題的客戶。

將事件進行時間上的相關性分析

  • 尋找模式。 故障會在特定時間發生嗎?

  • 檢查是否有多個客戶遇到相同問題。

  • 判斷故障是否與高負載週期相關。

與其他日誌交叉比對:

  • Schannel TLS 錯誤的系統日誌。

  • DNS 伺服器的區域與轉發器問題操作日誌。

  • 應用程序記錄服務級錯誤。

效能分析

深入績效分析:

  1. 在正常作業中建立基準指標。

  2. 將目前的表現與基線進行比較。

  3. 識別偏差,並與事件或配置變更相關聯。

需長期監控的關鍵績效計數器:

Get-Counter -Counter @(
    '\DNS-over-HTTPS\DoH Requests Received/sec',
    '\DNS-over-HTTPS\DoH Responses Sent/sec',
    '\DNS-over-HTTPS\DoH Requests Dropped/sec',
    '\Processor(_Total)\% Processor Time',
    '\Memory\Available MBytes'
) -SampleInterval 5 -MaxSamples 60

此指令每 5 秒間隔取樣計數器,持續 5 分鐘,以提供趨勢資料。

分析趨勢:

  • 效能會隨時間下降嗎?

  • 特定時間段會表現出問題嗎?

  • 效能會和查詢量相關嗎?

利用這些資料:

  • 規劃容量升級。

  • 找出配置瓶頸。

  • 優化 DNS 伺服器設定。

欲了解完整的效能監控指引,請參閱 Monitor DNS over HTTPS