问题排查

Google 公共 DNS 首页

如果您在使用 Google 公共 DNS 解析网域时遇到问题,请先访问 https://dns.google/ 查看 Google 公共 DNS 首页。它具有简单的 DNS 查找表单,如下所示。

如果您的浏览器找不到 dns.google 服务器,或该服务器没有响应,请使用命令行诊断检查您能否访问 Google 公共 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”中的第一个数字)。如果您有时会获得不同的序列号,则某些权威域名服务器可能会提供过时的数据,网域的 DNS 运算符需要解决该问题。

如果内容分发网络 (CDN) 网域的地址相距较远

如果系统应返回较近的地址,可能是权威域名服务器未正确实现 EDNS 客户端子网 (ECS)。网域的 DNS 运营商应确认他们遵循该页面中的所有指南。

如果您的应用显示的地址与 dns.google 网页结果中的地址不同

如果 dns.google 网站遭到屏蔽或显示的结果截然不同,请先检查您是否使用 Google 公共 DNS。如有不同,可能是强制性 Wi-Fi 门户执行的 DNS 黑客攻击、您的路由器、您的 ISP 或其网络中的恶意软件导致的。请参阅有关屏蔽和盗用的问题排查说明。

解析域名太慢

虽然 tracerouteping 等工具会报告网络延迟,但它们不会测量 DNS 解析的速度,并且仅在尝试查找延迟位置或确认网络可达性时很有用。Google 不会阻止 ICMP 或随机 UDP 发送到 Google 公共 DNS IP 地址,但对 ICMP 错误回复存在速率限制,并且 ICMP 流量可能会在 Google 网络中降低优先级。

如需测量 DNS 解析速度,您需要使用 DNS 测试工具,例如 farrokhi/dnsdiag(Python、GitHub)或 dnsping(C#、SourceForge)。您可以使用 Namebench 或 GRC DNS 基准(适用于 Windows)执行更全面的测量。

确定查询的都市圈

您的设备与 Google 公共 DNS 解析器之间的网络距离会直接影响解决速度。我们实现了域名服务器标识符选项,以报告处理 DNS 查询的都市圈的机场代码。如果都市圈位置离您所在位置很远,查询延迟时间将会更长。可能的原因有多种,包括网络与 Google 之间的路由不够理想,或者距离较近的都市圈缺乏服务容量。

如需查找机场代码,您可以查询已设置 EDNS 选项域名服务器标识符 (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,则说明您的 ISP 与 Google 之间的 IPv6 连接质量欠佳。与 Google 建立对等互连的 ISP 应检查 IPv6 跟踪记录路由输出中较大的跃点数(请参阅访问 Google 公共 DNS 服务器),或检查其 ISP 信息中心中显示的 BGP 路由的其他问题;如果 IPv6 路由的着陆路径似乎与 IPv4 不同,请向 Google NOC 发送电子邮件

我的(部分)DNS 查询无响应

极少数 UDP DNS 请求被丢弃是正常的,但如果您发现一个或多个查询的丢弃率下降,请使用上一部分中所述的 DNS 测试工具。

如果 DNS 测试工具显示高水平的未解答查询(尤其是在 pingtraceroute 显示类似丢弃率时),请检查您的 IP 地址是否每秒生成 1000 个以上的查询,这可能触发速率限制。如果是这种情况,您可以申请提高问题跟踪器的速率限制

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

解析网域太慢中所述的 Farorokhi/dnsdiag DNS 测试工具的 dnstraceroute 命令可用于跟踪实际 DNS 查询的路由(即使在 Windows 上)。

如果其中一些命令有效,而其他命令返回网络错误或超时,则网络过滤可能会阻止您访问 Google 公共 DNS。请与您的网络管理员或 ISP 支持团队联系以进行确认。

如果上述命令都不成功,请与您的(上游)ISP 联系,如果您是与 Google 对等互连的 ISP,请与 Google NOC 联系。最后一行没有三颗星的 traceroute 输出* * *(显示一致的超时)可能表示出现问题的位置。