如果您在使用 Google 公共 DNS 解析网域时遇到问题,请先访问 https://dns.google/ 查看 Google 公共 DNS 首页。它具有简单的 DNS 查找表单,如下所示。
如果您的浏览器找不到 dns.google
服务器,或该服务器没有响应,请使用命令行诊断检查您能否访问 Google 公共 DNS 服务器。
输入 google.com
(或任何域名或 IP 地址)并按 Enter 键,以查看详细的 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 failure
或Lame 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 或其网络中的恶意软件导致的。请参阅有关屏蔽和盗用的问题排查说明。
解析域名太慢
虽然 traceroute
和 ping
等工具会报告网络延迟,但它们不会测量 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 测试工具显示高水平的未解答查询(尤其是在 ping
和 traceroute
显示类似丢弃率时),请检查您的 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 输出* * *
(显示一致的超时)可能表示出现问题的位置。