常见问题解答

一般问题

什么是 Google 公共 DNS?

Google 公共 DNS 是一项免费的全球域名系统 (DNS) 解析服务,您可以将其作为当前 DNS 提供商的替代方案。

Google 为什么要开发 DNS 服务?

我们相信,更快、更安全的 DNS 基础架构可以显著改善网页浏览体验。Google 公共 DNS 在结果的速度、安全性和有效性方面进行了许多改进。我们在文档中分享了这些改进措施,以便为网络社区内持续的对话做出贡献。

我可以使用 Google 公共 DNS 来托管域名吗?

Google 公共 DNS 不是权威的 DNS 托管服务,不能用作服务。如果您要查找使用 Google 基础架构的高容量、可编程权威服务器,请尝试使用 Google 的 Cloud DNS

Google 公共 DNS 是否提供屏蔽或滤除垃圾网站的功能?

{0/}但我们相信,屏蔽功能通常最好由客户端执行。如果您想启用此类功能,应考虑安装客户端应用或浏览器插件来实现此目的。

使用 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 始终会根据 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 解析器,而该 解析器仅在响应失败时使用辅助 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 可以是您的主要或辅助域名服务器。

该服务的服务等级协议 (SLA) 是什么?

免费的 Google 公共 DNS 服务没有服务等级协议 (SLA)。

运行 ISP。我可以将用户重定向到 Google 公共 DNS 吗?

想要使用 Google 公共 DNS 的 ISP 应按照 ISP 说明操作,确定在向 Google 公共 DNS 发送查询之前是否需要执行任何操作。

如何从 Google 公共 DNS 团队获取支持?

建议您加入我们的 Google 网上论坛,从该团队处获取有用的动态,并提出您的任何问题。如果您遇到问题并希望报告,请参阅报告问题了解相关程序。

技术

Google 公共 DNS 如何确定将查询发送到何处?

任播路由会将您的查询定向到最近的 Google 公共 DNS 服务器。如需详细了解任播路由,请参阅 Wikipedia 条目

Google 公共 DNS 使用域名服务器 (NS) 记录(在 DNS 根可用区和顶级域名可用区中发布)来查找对任何域名权威的 DNS 服务器的名称和地址。其中一些域名服务器还使用任播路由。

您的服务器目前位于何处?

Google 公共 DNS 服务器在全球范围内可用。此问题有两个答案:一个针对客户端,另一个针对 DNS 服务器,Google 公共 DNS 会从该服务器获取返回到客户端的答案。

当客户端向 Google 公共 DNS 发送查询时,系统会将他们路由到通告的任播地址(8.8.8.88.8.4.42001:4860:4860:: 中的一个 IPv6 地址)的最近位置。通告这些任播地址的具体位置会由于网络条件和流量负载而变化,并且包括 Google Edge 网络中的几乎所有核心数据中心和边缘入网点 (PoP)。

Google 公共 DNS 从核心数据中心和 Google Cloud 区域位置向权威服务器发送查询。Google 会发布一个 IP 地址范围列表,供 Google 公共 DNS 查询权威 DNS 服务器(并非使用列表中的所有范围)。您可以将它用于缺少 EDNS 客户端子网 (ECS) 数据的 DNS 查询的地理位置,并配置 ACL 以允许来自 Google 公共 DNS 的更高查询速率。

除了此常见问题解答之外,Google 还会以 DNS“TXT”记录的形式发布该列表。 Google 每周都会更新这两种来源的内容,添加、修改和移除。 每个 IP 地址范围条目都包含最近机场的 IATA 代码。GeoIP 数据或 ACL 的自动化功能应通过 DNS 获取这些数据,而不是通过抓取此网页获取(如需查看示例,请参见下文)。

Google 公共 DNS 用于发送查询的 IP 地址范围的位置

以编程方式获取位置数据

系统会以 JSON 文件的形式提取地址范围:

curl https://www.gstatic.com/ipranges/publicdns.json

您可以使用以下 Python 脚本创建 IP 地址范围列表,Google 公共 DNS 将使用该 IP 地址范围向权威 DNS 服务器进行查询。

locations.publicdns.goog. 还提供了这些数据作为 TXT 记录。 但是,数据大小意味着 DNS TXT 记录不再是适当的格式。我们会将 TXT 记录替换为上述 JSON 格式的文件。如果您使用的是 TXT 记录,请改为使用 JSON 文件,因为我们计划在未来移除 TXT 记录。

命令行

您可以使用 curljq 工具从命令行中提取 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 的权威域名服务器。开始使用 Google 公共 DNS 的说明中提供了 IPv6 解析器地址。

请注意,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 是一种可验证安全性的验证解析器。来自 DNSSEC 签名区域的所有响应都会通过验证,除非客户端在 DNS 请求中明确设置 CD 标志以停用验证。

如何确定我是否在使用 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 客户端子网 (ECS) 进行地理定位的网域。对于使用 ECS 的任何网域,请为已启用 ECS 的记录设置 TTL(短至 15 分钟或更短),无需刷新。

  • 如需刷新域名的所有子网域或所有记录类型,唯一的方法是为要清空的每个域名刷新每个记录类型。如果此操作不可行,您随时可以等待记录 TTL 到期(即使实际 TTL 较长,这些 TTL 通常也限制为 6 小时)。

  • 如需刷新国际化域名(例如 пример.example),请使用 Punycode 编码形式(以上示例中的 xn‑‑e1afmkfd.example)。不能刷新包含 ASCII 字母、数字、连字符或下划线以外的字符的网域。

Google 公共 DNS 通过加密与客户的通信来保护所谓的“最后一跳”吗?

传统 DNS 流量通过 UDP 或 TCP 传输,而不进行加密。 我们还提供 DNS-over-TLSDNS over HTTPS,用于加密客户端和 Google 公共 DNS 之间的流量。您可以访问:https://dns.google

既然您已经拥有 DNSSEC,为什么需要 DNS 而不是 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。 无论您使用何种工具,都应该针对大量网域(超过 5000 个)运行该工具,以确保结果具有统计显著性。 虽然测试的运行时间更长,但至少使用 5000 个网域可确保因网络延迟(数据包丢失和重新传输)而发生的变化降至最低,并且 Google 公共 DNS 的大名称缓存得到充分测试。

如需在 Namebench 中设置网域数量,请使用测试数 GUI 选项或 -t 命令行标志;如需了解详情,请参阅 Namebench 文档

当我对 Google 公共 DNS 解析器运行 pingtraceroute 时,响应延迟时间高于其他服务的响应延迟时间。这是否意味着 Google 公共 DNS 的运行速度会变慢?

除了 ping 时间之外,您还需要考虑解析名称的平均时间。例如,如果您的 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 还使用一种名为 EDNS 客户端子网的技术解决方案,如 RFC 中所述。这样,解析器就可以将部分客户端 IP 地址(IPv4/IPv6 的前 24/56 位)作为来源 IP 在 DNS 消息中传递,从而使域名服务器可以基于用户的位置而不是解析器的位置返回优化结果。

隐私权

当我使用 Google 公共 DNS 服务时,Google 会记录哪些信息?

Google 公共 DNS 隐私权页面包含我们收集的信息的完整列表。Google 公共 DNS 符合 Google 的主要隐私权政策(可在我们的隐私权中心找到该政策)。

您的客户端 IP 地址只会被临时记录(在一两天内被清除),但 ISP 和城市/都市圈级别的信息会保持较长的时间,以便让我们的服务更快、更好、更安全。

收集的信息会存储在我的 Google 帐号中吗?

没有任何存储的数据与任何 Google 帐号相关联。

Google 是否会与 Google 以外的任何人分享通过 Google 公共 DNS 服务收集的信息?

否,Google 的隐私权政策中所述的少数情况除外,例如司法程序和强制性的政府要求。 (另请参阅 Google 的用户数据披露要求透明度报告)。

Google 会将临时或永久日志中的信息与我为 Google 提供的其他服务提供的任何个人信息相关联或结合吗?

隐私权页面所述,我们不会以这种方式组合或关联日志数据。