一般
什麼是 Google 公用 DNS?
Google 公用 DNS 是免費的全域網域名稱系統 (DNS) 解析服務,可讓您做為目前 DNS 供應商的替代服務。
Google 為何要打造 DNS 服務?
我們認為,更快速安全的 DNS 基礎架構可大幅改善網路瀏覽體驗。Google 公用 DNS 在速度、安全性和結果有效性方面都有許多改善。我們已在說明文件中分享這些改善項目,以便持續與網路社群進行交流。
我可以使用 Google 公用 DNS 代管網域名稱嗎?
Google 公用 DNS 不是權威 DNS 代管服務,也無法用於此用途。如果您想使用 Google 基礎架構,取得高容量、可程式化的權威名稱伺服器,請試試 Google Cloud DNS。
Google 公用 DNS 是否提供封鎖或篩除不必要網站的功能?
Google 公用 DNS 是 DNS 解析和快取伺服器,不會執行任何形式的封鎖或篩選作業,但在少數情況下,會封鎖特定網域,原因如下:
- 我們認為這項措施有助於保護 Google 使用者免於遭受安全威脅
- 我們依法必須封鎖特定網域。(詳情請參閱「封鎖」頁面)。
但我們認為,封鎖功能通常由用戶端執行最為理想。如果您有意啟用這類功能,建議您為安裝這類功能而安裝用戶端應用程式或瀏覽器外掛程式。
Google 公用 DNS 是否有任何跨產品依附元件?
Google 公用 DNS 是獨立服務。
我需要 Google 帳戶才能使用 Google 公用 DNS 嗎?
使用 Google 公用 DNS 不需要任何帳戶。
Google 公用 DNS 與我的網際網路服務供應商 (ISP) 的 DNS 服務或其他開放 DNS 解析器有何不同?如何判斷是否有改善?
開放式解析器和您的網際網路服務供應商 (ISP) 全都提供 DNS 解析服務。 歡迎您試試 Google 公用 DNS 做為主要或次要 DNS 解析工具,以及其他替代 DNS 服務。找出適合自己的 DNS 解析工具時,需要考量許多因素,例如速度、可靠性、安全性和回應有效性。部分網際網路服務供應商 (ISP) 和開放式解析器會基於商業用途封鎖、篩選或重新導向 DNS 回應,這點與 Google 公用 DNS 不同。另請參閱「Google 公用 DNS 是否提供封鎖或篩除不必要網站的功能?」一文的解答。
Google 公用 DNS 如何處理不存在的網域?
如果您對不存在的網域名稱發出查詢,Google 公共 DNS 一律會依照 DNS 通訊協定標準傳回 NXDOMAIN 記錄。瀏覽器應會將此回應顯示為 DNS 錯誤。如果您收到的回應不是錯誤訊息 (例如,系統將您重新導向至其他頁面),可能是因為下列原因:
- 用戶端應用程式 (例如瀏覽器外掛程式) 會顯示不存在網域的替代網頁。
- 部分 ISP 可能會攔截並取代所有 NXDOMAIN 回應,改為回應連往自家伺服器的回應。如果您擔心自己的網際網路服務供應商 (ISP) 會攔截 Google 公用 DNS 要求或回應,建議您與 ISP 聯絡。
Google 公用 DNS 日後會用於放送廣告嗎?
我們致力於維護 DNS 通訊協定的完整性。Google 公用 DNS 絕不會傳回不存在的網域廣告伺服器位址。
什麼是 DNS over HTTPS (DoH)?
透過加密的 HTTPS 連線進行 DNS 解析。DNS over HTTPS 可大幅強化虛設常式解析器和遞迴解析器之間的隱私與安全性,並與 DNSSEC 相輔相成,提供端對端驗證的 DNS 查詢。
使用與支援
我目前使用其他 DNS 服務。我也可以使用 Google 公用 DNS 嗎?
您可以將 Google 公用 DNS 設為主要或次要 DNS 解析器,並與目前的 DNS 解析器搭配使用。請注意,作業系統會以不同的方式處理 DNS 解析器:有些系統會優先使用主要 DNS 解析器,並只在主要解析器無法回應時才使用次要解析器,其他系統則會輪流使用各個解析器。
如果已設定的解析器在安全性或篩選方面存在差異,則您會取得所有解析器中最弱的安全性或篩選機制。雖然 NXDOMAIN 篩選或重新導向至封鎖頁面有時會有效,但除非所有解析工具都傳回 SERVFAIL,否則 SERVFAIL 不會封鎖網域。
Google 公用 DNS 是否適用於所有類型的網際網路裝置?
Google 公用 DNS 可用於任何符合標準的網路裝置。如果發現 Google 公用 DNS 無法正常運作,請告訴我們。
我可以在辦公室的電腦上執行 Google 公用 DNS 嗎?
部分辦公室設有私人網路,可讓您存取無法在工作場所外存取的網域。使用 Google 公用 DNS 可能會限制您對這些私人網域的存取權。 請先查看貴公司 IT 部門的政策,再使用 Google 公用 DNS 服務。
Google 公用 DNS 可在哪些國家/地區使用?
這項功能適用於全球的網際網路使用者,但使用者體驗可能會因所在位置而有很大差異。
Google 公用 DNS 是否適用於所有 ISP?
Google 公用 DNS 應該適用於大部分網際網路服務供應商 (ISP),前提是您有權存取變更網路 DNS 設定。
我是否需要同時使用兩個 Google 公用 DNS IP 位址?
只要使用其中一個 IP 位址,即可使用 Google 做為主要服務。不過,請不要指定主要和次要伺服器的地址相同。
指定 IP 位址的順序會有什麼影響?
順序不拘。IP 都可以當做主要或次要名稱伺服器。
服務的服務水準協議為何?
免費的 Google 公共 DNS 服務沒有服務水準協議 (SLA)。
我是網際網路服務供應商 (ISP) 的經營者。可以將使用者重新導向至 Google 公用 DNS 嗎?
如要使用 Google 公用 DNS,網際網路服務供應商 (ISP) 應按照ISP 操作說明操作,瞭解是否需要在傳送查詢至 Google 公用 DNS 之前執行任何操作。
如何取得 Google 公用 DNS 團隊的支援?
建議您加入 Google 網路論壇,取得 Google 團隊提供的實用最新消息,並提出問題。 如果您遇到問題並想要回報,請參閱「回報問題」一文瞭解相關程序。
技術
Google 公用 DNS 如何知道要將查詢傳送到哪裡?
Anycast 路由會將查詢轉送至最近的 Google 公用 DNS 伺服器。如要進一步瞭解任一傳播轉送,請參閱 Wikipedia 項目。
Google 公共 DNS 會使用 DNS 根區域和頂層網域區域中發布的名稱伺服器 (NS) 記錄,找出任何網域的權威 DNS 伺服器名稱和地址。其中有些名稱伺服器也會使用任意傳播路由。
您的伺服器目前位於何處?
Google 公用 DNS 伺服器可在全球使用。這個問題有兩個答案,一個是用於用戶端,另一個是用於 DNS 伺服器,Google 公用 DNS 會從這裡取得回應給用戶端。
當用戶端向 Google 公用 DNS 傳送查詢時,系統會將查詢導向最近的廣告位置,以便使用任何廣播位址 (8.8.8.8
、8.8.4.4
或 2001:4860:4860::
中的其中一個 IPv6 位址)。廣告位置會根據網路狀況和流量負載而變更,其中包括 Google Edge Network 中的幾乎所有核心資料中心和邊緣服務點 (PoP)。
Google 公共 DNS 會將查詢傳送至核心資料中心和 Google Cloud 區域位置的權威伺服器。Google 會發布 Google 公開 DNS 可能用來查詢權威 DNS 伺服器的 IP 位址範圍清單 (並非清單中的所有範圍都會使用)。您可以將這個方法用於缺少 EDNS Client subnet (ECS) 資料的 DNS 查詢地理位置,以及將 ACL 設定為允許來自 Google 公用 DNS 較高的查詢率。
除了這份常見問題外,Google 也會將這份清單發布為 DNS「TXT」記錄。Google 每週都會更新這兩個來源,加入、新增、修改和移除內容。 每個 IP 位址範圍項目都包含最近機場的 IATA 代碼。自動化動作應透過 DNS 取得地理區域資訊或 ACL 資料,而非透過擷取網頁內容 (如需範例,請參閱下方說明)。
Google 公用 DNS 用於傳送查詢的 IP 位址範圍位置
透過程式輔助方式取得位置資料
位址範圍可以擷取如下:
-
curl https://www.gstatic.com/ipranges/publicdns.json
-
curl https://www.gstatic.com/ipranges/publicdns_geofeed.txt
您可以使用以下 Python 指令碼,建立 IP 位址範圍清單,Google 公用 DNS 會使用這份清單向權威 DNS 伺服器提出查詢。
這項資料也可以在 locations.publicdns.goog.
中以 TXT 記錄的形式取得。不過,由於資料大小已超過 DNS TXT 記錄的適當格式,我們會將 TXT 記錄替換為上述 JSON 格式的檔案。如果您使用 TXT 記錄,請改用 JSON 檔案,因為我們預計在日後移除 TXT 記錄。
指令列
您可以使用 curl
和 jq
工具,從指令列中擷取 Google 公用 DNS IP 範圍。
curl https://www.gstatic.com/ipranges/publicdns.json | jq '.prefixes[] | .ipv4Prefix // .ipv6Prefix '
這需要下列項目:
Python
您可以使用下列 Python 指令碼,建立 Google 公用 DNS 使用的 IP 位址範圍清單。
#!/usr/bin/env python3 """An example to fetch and print the Google Public DNS IP ranges.""" import ipaddress import json import urllib.request publicdns_url = 'https://www.gstatic.com/ipranges/publicdns.json' def read_url(url): try: s = urllib.request.urlopen(url).read() return json.loads(s) except urllib.error.HTTPError: print('Invalid HTTP response from %s' % url) return {} except json.decoder.JSONDecodeError: print('Could not parse HTTP response from %s' % url) return {} def main(): publicdns_json = read_url(publicdns_url) print('{} published: {}'.format(publicdns_url, publicdns_json.get('creationTime'))) locations = dict() ipv4, ipv6 = set(), set() for e in publicdns_json['prefixes']: if e.get('ipv4Prefix'): ip = ipaddress.IPv4Network(e.get('ipv4Prefix'), strict=False) ipv4.add(ip) if e.get('ipv6Prefix'): ip = ipaddress.IPv6Network(e.get('ipv6Prefix'), strict=False) ipv6.add(ip) locations[ip] = e.get('scope') print('IP ranges used by Google Public DNS for contacting ' 'authoritative DNS servers:') for i in list(ipv4) + list(ipv6): print(i, locations[i]) if __name__ == '__main__': main()
如果是 macOS,這個指令碼需要的 Python 3 執行階段必須按照下列方式設定:
- 安裝 macOS 適用的最新版 Python 3 執行階段。
- 從「應用程式」資料夾中的 Python 資料夾執行隨附的
Install Certificates.command
,即可安裝可供 Python 執行階段使用的信任的根憑證清單 (cert.pem
)。將VERSION
替換為安裝的 Python 版本 (例如3.8
):sudo "/Applications/Python
VERSION
/Install Certificates.command"
Google 公用 DNS 是否以 BIND 等開放原始碼軟體為基礎?
Google 公用 DNS 是 Google 自行實作的 DNS 標準。
是否有計劃將 Google 公用 DNS 程式碼發布為開放原始碼軟體?
目前沒有開放 Google 公開 DNS 原始碼的計畫。不過,我們詳細列出了提高速度、安全性和標準遵循情況的所有步驟。
Google 公用 DNS 是否支援 IPv6?
Google 公開 DNS 服務會為具有 IPv6 連線能力的用戶端傳入要求提供 IPv6 位址,並回應所有 IPv6 位址要求,並在可用時傳回 AAAA 記錄。我們完全支援僅限 IPv6 的權威名稱伺服器。如需 IPv6 解析器位址,請參閱開始使用 Google 公用 DNS 的操作說明。
請注意,您可能不會看到 Google 網站的 IPv6 結果。 為最佳化使用者體驗,Google 只會向具備良好 IPv6 連線的用戶端提供 AAAA 記錄。這項政策完全獨立於 Google 公用 DNS,並由 Google 的權威名稱伺服器強制執行。詳情請參閱「Google over IPv6」網頁。
如果是僅限 IPv6 的網路和系統,您可以使用 Google 公用 DNS64,為具有 A 記錄但沒有 AAAA 記錄的網域名稱取得綜合 AAAA 記錄。這些合成的 AAAA 記錄會使用預留給 NAT64 服務的已知 IPv6 前置字串,將僅限 IPv6 的用戶端導向 NAT64 閘道。只要按照開始的操作說明設定系統,並將解析器位址替換為 DNS64 IPv6 設定即可。
Google 公用 DNS 是否支援 DNSSEC 通訊協定?
Google 公用 DNS 是驗證解析器,可提供安全性相關資訊。除非用戶端在 DNS 要求中明確設定 CD 標記來停用驗證功能,否則 DNSSEC 簽署區域的所有回應都會經過驗證。
如何確認是否使用 DNSSEC?
如要進行簡單測試,請前往 http://www.dnssec-failed.org/。由於驗證鏈條中斷,這個網站已特別設定為傳回 DNS 錯誤。如果沒有收到錯誤訊息,表示您並未使用 DNSSEC。
Google 公用 DNS 如何處理 DNSSEC 驗證失敗的查詢?
如果 Google 公用 DNS 無法驗證回應 (因為設定錯誤、缺少或不正確的 RRSIG 記錄等),則會改為傳回錯誤回應 (SERVFAIL)。不過,如果影響程度重大 (例如非常熱門的網域驗證失敗),我們可能會暫時停用該區域的驗證功能,直到問題修正為止。
如何找出特定網域無法通過 DNSSEC 驗證的原因?
Verisign Labs 的 DNS Analyzer 和 Sandia National Laboratories 的 DNSViz 是兩個 DNSSEC 圖像化工具,可顯示任何網域的 DNSSEC 驗證鏈結。這些記錄會顯示發生中斷的位置,並可用於查詢 DNSSEC 失敗的原因。
Google 公用 DNS 會提供舊資料。我可以強制重新整理資料嗎?
您可以使用「清除快取」工具,為常見的記錄類型和大多數網域名稱重新整理 Google 公用 DNS 快取。您不需要證明網域的擁有權,即可清除網域,但必須回答 reCAPTCHA 問題,以防服務遭到自動濫用。
針對您已註冊或以 NS 記錄子委派的網域,清除任何記錄類型不僅會清除該類型的快取回應,還會清除該網域名稱伺服器的委派資訊。如果您最近變更了名稱伺服器 (變更註冊商或 DNS 代管服務供應商),請務必在清除 www
等子網域之前執行這項操作,以免從舊 DNS 伺服器上的舊資料重新整理。
如果 Google 公共 DNS 傳回的答案含有過時的 CNAME 記錄,您就需要清除每個 CNAME 網域的 CNAME 記錄類型,從鏈結中的最後一個 CNAME 開始,並逐一回溯至查詢的名稱。清除所有 CNAME 後,請使用任何以過時 CNAME 回應的記錄類型,清除查詢名稱。
但請注意,您只能清除下列項目:
使用 EDNS Client Subnet (ECS) 進行地理位置設定的網域無法清除,因此請為使用 ECS 的任何網域,將支援 ECS 的記錄的 TTL 設為足夠短 (15 分鐘或更短),這樣就永遠不需要清除這些記錄。
清除所有子網域或網域名稱的所有記錄類型,唯一的方法就是為每個要清除的網域名稱清除每個記錄類型。如果這不切實際,您可以等待記錄 TTL 到期 (即使實際 TTL 較長,也通常會限制為六小時)。
如要清除
пример.example
等國際化網域名稱,請使用網域名稱代碼格式 (上述範例為xn‑‑e1afmkfd.example
)。含有 ASCII 英文字母、數字、連字號或底線以外字元的網域無法清除。
Google 公用 DNS 是否會加密與用戶端之間的通訊,藉此保護所謂的「最後一個躍點」?
傳統 DNS 流量會透過 UDP 或 TCP 傳輸,且未經過加密。我們也提供 DNS over TLS 和 DNS over HTTPS,可用於加密用戶端和 Google 公用 DNS 之間的流量。你可以前往 https://dns.google 試用。
既然我們已經有 DNSSEC,為什麼還需要使用 DNS over HTTPS?
DNS over HTTPS 和 DNSSEC 是互補的。Google 公用 DNS 會盡可能使用 DNSSEC 驗證名稱伺服器的回應。不過,為了安全地驗證來自 Google 公用 DNS 的傳統 UDP 或 TCP 回應,用戶端必須重複執行 DNSSEC 驗證 (目前只有極少數用戶端解析器)。DNS over HTTPS 會將虛設常式解析器和 Google 公用 DNS 之間的流量加密,並補充 DNSSEC 以提供端對端驗證的 DNS 查詢。
我可以使用哪些工具測試 Google 公用 DNS 和其他 DNS 服務的效能?
您可以使用許多免費工具來評估 Google 公用 DNS 的回應時間。我們建議使用 Namebench。無論您使用哪種工具,都應針對大量網域 (超過 5000 個) 執行該工具,以確保統計顯著的結果。雖然測試需要較長的時間才能執行,但使用至少 5000 個網域,可確保網路延遲 (封包遺失和重新傳送) 造成的變化降到最低,並徹底執行 Google 公用 DNS 的大型名稱快取。
如要設定 Namebench 中的網域數量,請使用「Number of tests」GUI 選項或 -t
指令列旗標;詳情請參閱 Namebench 說明文件。
當我針對 Google 公用 DNS 解析工具執行 ping
或 traceroute
時,回應延遲時間會比其他服務還要長。這是否表示 Google 公用 DNS 一律會比較慢?
除了查詢時間外,您還需要考量解析名稱的平均時間。舉例來說,如果 ISP 的連線偵測 (ping) 時間為 20 毫秒,但平均名稱解析時間為 500 毫秒,則整體平均回應時間是 520 毫秒。 如果 Google 公用 DNS 的連線偵測 (ping) 時間為 300 毫秒,但解析許多名稱的時間在 1 毫秒內,則建議網域的整體回應時間是 301 毫秒,比較成效越好。
Google 公用 DNS 如何與 CDN 地理位置服務搭配運作?
許多提供可下載或串流多媒體內容的網站,會使用 Akamai 等 DNS 第三方內容傳播網 (CDN) 代管內容。當 DNS 解析器查詢權威名稱伺服器的 CDN IP 位址時,名稱伺服器會傳回離解析器最近的地址 (以網路距離計算),而不是傳回給使用者。在某些情況下,ISP 解析器和 Google 公用 DNS 等公用解析器可能不會位於使用者附近。在這種情況下,瀏覽體驗可能會變慢。Google 公用 DNS 和其他 DNS 供應商一樣。
為了縮短 DNS 伺服器與使用者之間的距離,Google 公用 DNS 已在世界各地部署伺服器。尤其是,歐洲的使用者應該導向至歐洲的 CDN 內容伺服器,亞洲的使用者應導向至亞洲的 CDN 伺服器,而美國中東、中西和美國的使用者,應該導向至這些地區的 CDN 伺服器。我們也發布了這份資訊,協助 CDN 為多媒體使用者提供良好的 DNS 結果。
此外,Google 公用 DNS 會使用 RFC 中所述的 EDNS 用戶端子網路技術解決方案。這可讓解析器將用戶端 IP 位址的部分內容 (分別為 IPv4/IPv6 的前 24/56 位元) 做為 DNS 訊息中的來源 IP 傳遞,讓名稱伺服器可根據使用者的所在位置,而非解析器的所在位置,傳回最佳化結果。
隱私權
當我使用 Google 公用 DNS 服務時,Google 會記錄哪些資訊?
在 Google 公用 DNS 隱私權頁面中,您可以查看我們收集的完整資訊清單。Google 公用 DNS 遵循 Google 的主要隱私權政策,詳情請參閱隱私權中心。
我們只會暫時記錄您的用戶端 IP 位址 (資料會在一或兩天內清除),但為了提供更快速、更好且更安全的服務,系統會保留與 ISP 和城市/都會區層級位置的相關資訊。
是否有任何收集到的資訊會儲存在我的 Google 帳戶中?
已儲存的資料不會與任何 Google 帳戶建立關聯。
Google 是否會將從 Google 公用 DNS 服務收集到的資訊,分享給 Google 以外的任何人?
不可以,除了 Google 隱私權政策所述的少數特殊情況外,例如法律函狀和強制性政府要求。(另請參閱 Google 的使用者資料調閱要求資訊公開報告)。
Google 會將臨時或永久記錄的資訊與我就其他服務提供給 Google 的任何個人資訊建立關聯或結合使用嗎?
如隱私權頁面所述,我們不會以這種方式結合或關聯記錄資料。