疑難排解

Google 公用 DNS 首頁

如果您無法透過 Google 公用 DNS 解析網域,請先前往 https://dns.google/ 查看 Google 公用 DNS 首頁。其中包含簡單的 DNS 查詢表單,如下所示。

如果瀏覽器找不到 dns.google 伺服器,或是伺服器沒有回應,請確認您可使用指令列診斷功能連線至 Google Public DNS 伺服器

輸入 google.com (或任何網域名稱或 IP 位址),然後按下 Enter 鍵,查看詳細的 DNS 結果頁面,如下所示:

Google 公用 DNS 詳細資料頁面

排解 Google 公用 DNS 問題

DNS 解析問題有很多種,請按照標題下方的指示找出最相符的問題。如果您需要回報問題並取得說明,請在報表的診斷頁面中提供任何指令或文字的輸出內容。

解析網域時發生問題

如果 Google 公用 DNS 無法順利解析特定網域名稱,請在 dns.google 詳細資料頁面中輸入該網域名稱。如果問題與特定 DNS 資源記錄 (RR) 類型有關,請在「RR 類型」文字欄位中輸入 (也可以輸入數字)。按下 Enter 鍵或點選 [解決] 即可查看結果。

在詳細結果中,系統可能會在底部顯示包含 "Comment": 查詢的 DNS 查詢。舉例來說,您可能會看到
"DNSSEC validation failure. Check http://dnsviz.net/d/dnssec-failed.org/dnssec/ and http://dnssec-debugger.verisignlabs.com/dnssec-failed.org for errors"

您可以造訪所有留言網址 (這些連結並非有效連結,然後複製並貼到瀏覽器中) 來查看詳細的診斷資訊,藉此找出問題的解決原因。

如果註解項目與下列任一項目相符,請按一下對應的連結,直接前往特定診斷步驟,或是先從網域疑難排解的第一個步驟開始。

DNSSEC validation failure
如果看到這個選項,請按一下 DNSSEC 切換按鈕來停用驗證功能,然後按一下「Resolve」來重試查詢。如果成功 ("Status": 0),則發生 DNSSEC 問題;請參閱 DNSSEC 疑難排解一節。否則,請參閱名稱伺服器疑難排解
Name servers
請參閱名稱伺服器疑難排解
Resolution failureLame delegation
請參閱委派疑難排解

如果大型記錄 (通常是 DNSSEC 金鑰或 TXT 記錄) 發生問題,請參閱排解大型回應問題

傳回網域錯誤的答案

Google 公用 DNS 傳回錯誤答案的原因有很多,請根據本身對網域的瞭解,嘗試下列所有可能的解決方法。

如果網域的伺服器最近有異動

尤其是,如果網域有新的 DNS 伺服器或新的 DNS 註冊商,Google 公用 DNS 可能會傳回舊 (但尚未過期) 的快取答案。 使用清除快取 (說明文件) 來清除已註冊的網域,以及傳回過時答案的特定網域名稱。

如果清除作業後仍舊看到過時的答案,請在 dns.google 詳細資料頁面中查詢註冊網域的 SOA RR 類型,然後檢查可用區序號 (亦即「Answer"data」」中的第一個數字)。如果有時會取得不同的序號,部分權威名稱伺服器可能提供了過時的資料,且網域的 DNS 運算子必須修正問題。

如果內容傳遞聯播網 (CDN) 網域的位址距離很遠

有應傳回的更接近位址時,權威名稱伺服器可能無法正確實作 EDNS 用戶端子網路 (ECS)。網域的 DNS 運算子應會依據「該頁面」的指南進行確認。

如果您的應用程式與 dns.google 網頁搜尋結果顯示的地址不同

如果 dns.google 網站遭到封鎖或顯示截然不同的結果,請先確認您已使用 Google 公用 DNS。如果有,不同的答案可能是由 Wi-Fi 入口網站、DNS 駭客攻擊、路由器、網際網路服務供應商 (ISP) 或其網路的 DNS 遭到盜用。請參閱封鎖和盜用的疑難排解操作說明。

解析網域的速度太慢

雖然 tracerouteping 等工具會回報網路延遲,但後者不會測量 DNS 解析速度,而且只有在嘗試尋找延遲時間或確認網路可連性的情況下才能發揮作用。Google 不會封鎖 ICMP 或隨機 UDP 傳送至 Google 公用 DNS IP 位址,但 ICMP 錯誤回覆的頻率限制,而且 Google 聯播網的 ICMP 流量可能會優先順序降低。

如要評估 DNS 解析速度,您必須使用 DNS 測試工具,例如 farrokhi/dnsdiag (Python、GitHub) 或 dnsping (C#、SourceForge)。可使用 Namebench 或 GRC DNS Benchmark (適用於 Windows) 等工具執行更全面的評估。

決定提供查詢的都會區

裝置與 Google 公用 DNS 解析器之間的網路距離會直接影響解析度。我們實作網域名稱伺服器 ID 選項,以回報處理 DNS 查詢所在都會區的機場代碼。如果都會區位置距離您的位置很遠,則查詢延遲時間也會較長。可能的原因有很多,包括您的網路和 Google 之間的最佳最佳轉送設定,或是鄰近都會區的容量不足。

如要尋找機場代碼,你可以使用已設定的 DNS 選項網域名稱伺服器 ID (NSID) 向 DNS 解析器進行查詢。回應的格式為 gpdns-<airport code>。執行下列指令,瞭解回應的都會區:

macOS 或 Linux

$ dig @dns.google. +nsid | grep NSID
; NSID: 67 70 64 6e 73 2d 63 68 73 ("gpdns-chs")
$ dig www.google.com @dns.google. +nsid | grep NSID
; NSID: 67 70 64 6e 73 2d 63 68 73 ("gpdns-chs")

IPv6 的解析速度較慢

如果 IPv6 的解析度延遲時間比 IPv4 長,IP 與 Google 之間的 IPv6 連線效能可能較不理想。 與 Google 的網際網路服務供應商 (ISP) 對等互連必須與 Google6 的 IPv6 追蹤路徑輸出 (請參閱存取 Google 公用 DNS 伺服器) 或那些與 BGP 轉送相同的問題 (如果其 IPv6 轉送可能與 IPv4 位於不同都會區) 應檢查更多。

沒有回應我的部分 DNS 查詢

雖然系統會捨棄極少數的 UDP DNS 要求,這是正常現象,但如果您發現查詢百分比下降了超過百分之一,請使用 DNS 測試工具 (如上一節所述)。

如果 DNS 測試工具顯示大量未回答的查詢 (尤其是在 pingtraceroute 未顯示可比較的放置率時),請檢查 IP 位址每秒是否產生超過 1000 次查詢,這可能會觸發頻率限制。若是如此,您可以前往我們的 Issue Tracker 要求提高頻率限制

DNS 封鎖和盜用

如果您未收到 DNS 查詢的「任何」回應 (但 dns.google 網頁運作正常),UDP 和 TCP 查詢可能遭到封鎖或遭盜用。執行下列指令,檢查 UDP 和 TCP 查詢是否觸及 Google 公用 DNS:

Windows

nslookup -debug -type=TXT test.dns.google.com. dns.google.
nslookup -debug -type=TXT -vc locations.dns.google.com. dns.google.

macOS 或 Linux

dig -t TXT test.dns.google.com. '@dns.google.'
dig -t TXT +tcp locations.dns.google.com. '@dns.google.'

如果第一個指令的輸出內容顯示 "Thanks for using Google Public DNS.",您的 UDP 查詢會到達 Google 公用 DNS;如果第二個指令的輸出內容包含 locations.publicdns.goog.,表示 TCP 查詢也到達 Google。

如果輸出顯示 NXDOMAIN,表示你觸及了另一個 DNS 解析器。如果輸出顯示逾時,系統就會封鎖傳送至 Google 公用 DNS 的 DNS 查詢。 請參閱下一節的 UDP 或 DNS 追蹤路徑指令,瞭解駭客入侵或封鎖的可能位置。

確認您連線至 Google 公用 DNS 伺服器

如果您無法開啟 dns.google 首頁,則可能是網路問題或封鎖導致你無法存取 Google 公用 DNS。

如果系統設為使用 Google 公用 DNS 做為 DNS 解析器,您可能需要在下列指令中將 dns.google 名稱替換成 Google 公用 DNS IP 位址。請先嘗試名稱,如果失敗,請使用 8.8.8.8 或其他地址。

使用命令提示字元開啟終端機視窗,然後執行這些 traceroute 指令:

Windows

使用 ICMP 回應要求追蹤追蹤記錄:

tracert -d -w 2000 dns.google

如何測試 IPv6 連線:

tracert -6 -d -w 2000 dns.google

macOS 或 Linux

使用非 DNS UDP 封包的追蹤記錄轉送:

/usr/sbin/traceroute -n -w 2 -m 30 dns.google

如何測試 IPv6 連線:

/usr/sbin/traceroute6 -n -w 2 -m 30 dns.google

如果系統顯示您沒有執行 traceroute 的權限,請使用 sudo 指令執行該程式碼:

sudo /usr/sbin/traceroute -n -w 2 -m 30 dns.google

如果輸出結果的最後一行未顯示 Google 公用 DNS IP 位址 (8.8.8.8、8.8.4.4 或開頭為 2001:4860:4860 的 IPv6 位址),則「可能」發生網路問題,導致您無法連線至 Google。

在非 Windows 系統中,使用 -I-U 選項重複上述指令,以使用傳送至 DNS 通訊埠 (53) 的 ICMP 封包或非 DNS UDP 封包。如果無法辨識 -I 選項,請嘗試使用 ping 指令傳送 ICMP:

macOS 或 Linux

ping -c 2 dns.google

解析網域速度太慢下所述的 longrokhi/dnsdiag DNS 測試工具的 dnstraceroute 指令可用於追蹤實際 DNS 查詢的路徑 (即使是在 Windows 上)。

如果這些指令中的「部分」有效,而其他指令傳回網路錯誤或逾時,則網路篩選功能可能會導致您無法存取 Google 公用 DNS。請聯絡網路管理員或 ISP 支援團隊來確認。

如果上述任一指令失敗,請與 (上游) 網際網路服務供應商 (ISP) 聯絡。如果您是與 Google 對等互連的網際網路服務供應商 (ISP),請與 Google NOC 聯絡。如果追蹤記錄路徑的最後一行沒有三顆星 * * * (顯示一致的逾時),可能代表發生問題發生。