常见的 DNS 问题及解决方法

有时,网站或应用程序会由于 DNS 问题而无法正常运行,这些问题包括 DNS 记录配置不当、延迟或恶意攻击。

学习目标

阅读本文后,您将能够:

  • 说明 DNS 的作用
  • 了解如何解决常见 DNS 问题
  • 了解“DNS_PROBE_FINISHED_NXDOMAIN”错误来自何处

复制文章链接

常见的 DNS 问题及解决方法

域名系统 (DNS) 将域名映射到 IP 地址,这样,人们无需记住精确的网络地址就可以使用 Web 应用。DNS 还用于存储与域相关的许多其他信息,例如,将电子邮件发送到何处。如果 DNS 设置不正确、攻击者将其作为目标或出现其他技术挑战,DNS 可能会导致问题。下面简要介绍了网站管理员可能面临的一些最常见的 DNS 问题。

DNS 记录不正确

域的 DNS 记录可能配置不正确。如果记录中的域名拼写错误、记录中列出的 IP 地址错误,或者其他重要信息缺失或错误,DNS 很可能会无法解析。

除了这些基本错误之外,一个域还与多种类型的 DNS 记录相关联。这些记录出现问题可能会导致 DNS 错误。例如,域名可能具有 A 记录但缺少 AAAA 记录,这会导致使用 IPv6 的客户端的 DNS 解析在最开始就失败。或者,如果客户端尝试访问替代域名(例如“blog.example.com”而不是“www.example.com”),则该域名的 CNAME 记录可能不会指向正确的位置。

要修复此错误,网站管理员应检查其托管提供商或 DNS 提供商仪表板中的 DNS 记录,确保没有错误。然后,DNS 解析器(回复 DNS 查询的服务器)需要获取 DNS 记录,以便系统中包含最新版本。只要 TTL 设置得不太高(见下文),这个过程就不会花费太长时间。

生存时间 (TTL) 设置过高

所有 DNS 记录都包含生存时间 (TTL)*,即服务器在必须重新查询更新之前认为记录有效的秒数。本质上,TTL 就像包装食品上的“有效期”:在 TTL 时间结束之前,记录都被视为可用。

如果 TTL 设置得太高,服务器将等待太长时间才会检查 DNS 记录的更新。这意味着更改在域名系统中的传播速度会非常慢。如果某个域的 DNS 记录已更新,但浏览器未收到更新,则浏览器可能会尝试访问错误 IP 地址的网站。

为避免出现此 DNS 问题,请确保 TTL 不要太大:通常,绝对最大值为 86400(以秒为单位,相当于 24 小时),但大多数 TTL 要短得多(6 小时或更短)。记录的确切 TTL 应取决于该记录预计在未来更新的频率和速度。(请参阅有关 Cloudflare DNS 记录的 TTL 的信息。)

此外,一些 DNS 解析器允许域管理员强制刷新域的缓存——您可以在此处为 Cloudflare 的 1.1.1.1 执行此操作。但这样做不会刷新全球所有解析器的所有缓存,因此这种做法并不能作为正确设置 TTL 的替代方案。

*TTL 也用于其他网络领域,例如路由和缓存。

DNS DDoS 攻击

顾名思义,分布式拒绝服务 (DDoS) 攻击旨在拒绝服务。DDoS 攻击会用垃圾流量轰炸目标,使合法用户无法使用服务。这些攻击可能会导致网站、应用程序、API 或服务器在几分钟或几小时内不可用。

当 DDoS 攻击目标是 DNS 本身时,浏览器将无法解析域名,这意味着用户无法加载网站和应用程序,因为无法找到其 IP 地址。2016 年发生了一次此类型的重大攻击,当时 Dyn 遭到攻击,导致全球许多地区的用户无法使用互联网。针对 DNS 的较小规模 DDoS 攻击经常发生,而且可能更具针对性。

通过确保每个域的 DNS 提供商都已实施 DDoS 防护,或为自托管 DNS 解析实施 DDoS 缓解措施来避免此问题。

高延迟

延迟是数据从一个点到另一点所花费的时间。高延迟会导致响应缓慢,甚至导致请求超时而终止连接。

网络拥塞可能会导致延迟,但最大的罪魁祸首往往是服务器位置。与其他 Web 流量相比,DNS 查询相当轻量,但较远的 DNS 解析器意味着,在从用户请求传输到服务器到用户收到服务器传回的响应期间,用户可能需要等待几秒钟的时间。当用户尝试从意外位置或不同于正常位置的世界其他地区(远离 DNS 提供商的服务器网络)加载网络内容时,可能会出现此问题。

要解决高 DNS 延迟问题,请使用在靠近全球各地互联网用户的位置设有接入点的 DNS 提供商。了解 Cloudflare 全球网络

DNS 缓存投毒

DNS 缓存投毒攻击中,恶意方会诱使 DNS 解析器缓存某个域的错误 IP 地址。结果是,尝试加载该域的用户会被定向到攻击者提供的 IP 地址。

采用 DNSSEC 是一种防止未经验证的数据进入 DNS 解析器缓存的方法。DNSSEC 可验证 DNS 服务器之间的消息(如果没有 DNSSEC,DNS 将基于信任原则运行,而攻击者可以利用这一原则)。

域名劫持

域名劫持攻击是指攻击者更改与域名关联的 DNS 记录。他们通常通过让域名注册商将域名转让给他们来实现这一点。其结果是,网站访问者可能会加载错误的网页(通常是恶意网页),或者域名根本无法解析。

域名注册商和注册机构级别应用域名锁可以使攻击者更难以进行 DNS 劫持。

页面访问者收到“DNS_PROBE_FINISHED_NXDOMAIN”错误,这意味着什么?

“NXDOMAIN”是计算机术语,表示“不存在的域”。从本质上讲,此错误意味着,就用户设备所知,该域不存在——就像尝试拨打不存在的电话号码或将包裹发送到不存在的城市一样。

这是一个很普遍的错误,可能由上面列出的问题以及客户端(用户尝试加载网站的设备)问题引起:

  • 客户端可能已断开与互联网的连接
  • 客户端尝试访问的 URL 中可能存在拼写错误
  • 浏览器 DNS 缓存需要刷新
  • 客户端的默认 DNS 解析器可能已关闭

用户可以尝试重新连接到本地网络、硬刷新网页 (Ctrl/Command + Shift + R)、在其他浏览器中打开网页,或者更改其 DNS 设置以使用其他解析器(Cloudflare 免费提供高度可靠的 1.1.1.1 DNS 解析器)。

“DNS 服务器未响应”是什么意思?

“NXDOMAIN”错误可能导致浏览器中出现“无法访问此站点”或“DNS 服务器未响应”消息。如上所述,许多问题都可能导致此错误消息。

Cloudflare 如何帮助防止这些 DNS 问题?

对于运行 Web 应用程序的个人和企业而言,其中大多数问题都可以通过采用 Cloudflare 来解决或缓解,Cloudflare 代理网站流量,并使用最新的安全措施来防范 DDoS 攻击、DNS 劫持、DNS 缓存投毒和 DNS 配置错误。请参阅 Cloudflare 计划以开始使用