一般
什麼是 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 解析工具時,需要考量許多因素,例如速度、可靠性、安全性和回應有效性。與 Google 公用 DNS 不同,部分 ISP 和開放解析器會基於商業目的封鎖、篩選或重新導向 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 可能會限制您存取這些私人網域的權限。在辦公室電腦上使用 Google 公用 DNS 之前,請先檢查 IT 部門的政策。
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 公用 DNS 如何得知要將查詢傳送至何處?
Anycast 路由會將查詢轉送至最近的 Google 公用 DNS 伺服器。如要進一步瞭解 Anycast 轉送,請參閱 維基百科條目。
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 用戶端子網路 (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 執行階段。
- 從「Applications」資料夾中的 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 只會將 AAAA 記錄提供給 IPv6 連線良好的用戶端。這項政策完全獨立於 Google 公用 DNS,並由 Google 的權威名稱伺服器強制執行。詳情請參閱「透過 IPv6 連線的 Google」頁面。
如果是僅限 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 分析工具和 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
),請使用 Punycode 格式 (上述範例的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 驗證,目前只有少數用戶端解析器會這麼做。透過 HTTPS 的 DNS 會加密輔助解析器和 Google 公用 DNS 之間的流量,並補足 DNSSEC,提供端對端驗證的 DNS 查詢。
有沒有工具可以用來測試 Google 公用 DNS 與其他 DNS 服務的效能?
您可以使用許多免費工具來評估 Google 公用 DNS 的回應時間。我們建議使用 Namebench。無論使用的工具為何,都應針對超過 5,000 個網域 (超過 5,000 個) 執行這項工具,確保結果具有統計顯著性。 雖然測試需要較長的時間,但至少使用 5,000 個網域可以確保因網路延遲 (封包遺失和重新傳輸) 而產生的變異性能降到最低,還能讓 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 地理位置服務搭配運作?
許多提供可下載或串流多媒體內容的網站,會透過 DNS 的第三方內容發布網路 (CDN,例如 Akamai) 代管內容。當 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 的任何個人資訊進行關聯或合併?
如隱私權頁面所述,我們不會以這種方式合併或關聯記錄資料。