有时,网站或应用程序会由于 DNS 问题而无法正常运行,这些问题包括 DNS 记录配置不当、延迟或恶意攻击。
阅读本文后,您将能够:
复制文章链接
域名系统 (DNS) 将域名映射到 IP 地址,这样,人们无需记住精确的网络地址就可以使用 Web 应用。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 设置得不太高(见下文),这个过程就不会花费太长时间。
所有 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 也用于其他网络领域,例如路由和缓存。
顾名思义,分布式拒绝服务 (DDoS) 攻击旨在拒绝服务。DDoS 攻击会用垃圾流量轰炸目标,使合法用户无法使用服务。这些攻击可能会导致网站、应用程序、API 或服务器在几分钟或几小时内不可用。
当 DDoS 攻击目标是 DNS 本身时,浏览器将无法解析域名,这意味着用户无法加载网站和应用程序,因为无法找到其 IP 地址。2016 年发生了一次此类型的重大攻击,当时 Dyn 遭到攻击,导致全球许多地区的用户无法使用互联网。针对 DNS 的较小规模 DDoS 攻击经常发生,而且可能更具针对性。
通过确保每个域的 DNS 提供商都已实施 DDoS 防护,或为自托管 DNS 解析实施 DDoS 缓解措施来避免此问题。
延迟是数据从一个点到另一点所花费的时间。高延迟会导致响应缓慢,甚至导致请求超时而终止连接。
网络拥塞可能会导致延迟,但最大的罪魁祸首往往是服务器位置。与其他 Web 流量相比,DNS 查询相当轻量,但较远的 DNS 解析器意味着,在从用户请求传输到服务器到用户收到服务器传回的响应期间,用户可能需要等待几秒钟的时间。当用户尝试从意外位置或不同于正常位置的世界其他地区(远离 DNS 提供商的服务器网络)加载网络内容时,可能会出现此问题。
要解决高 DNS 延迟问题,请使用在靠近全球各地互联网用户的位置设有接入点的 DNS 提供商。了解 Cloudflare 全球网络。
在 DNS 缓存投毒攻击中,恶意方会诱使 DNS 解析器缓存某个域的错误 IP 地址。结果是,尝试加载该域的用户会被定向到攻击者提供的 IP 地址。
采用 DNSSEC 是一种防止未经验证的数据进入 DNS 解析器缓存的方法。DNSSEC 可验证 DNS 服务器之间的消息(如果没有 DNSSEC,DNS 将基于信任原则运行,而攻击者可以利用这一原则)。
域名劫持攻击是指攻击者更改与域名关联的 DNS 记录。他们通常通过让域名注册商将域名转让给他们来实现这一点。其结果是,网站访问者可能会加载错误的网页(通常是恶意网页),或者域名根本无法解析。
在域名注册商和注册机构级别应用域名锁可以使攻击者更难以进行 DNS 劫持。
“NXDOMAIN”是计算机术语,表示“不存在的域”。从本质上讲,此错误意味着,就用户设备所知,该域不存在——就像尝试拨打不存在的电话号码或将包裹发送到不存在的城市一样。
这是一个很普遍的错误,可能由上面列出的问题以及客户端(用户尝试加载网站的设备)问题引起:
用户可以尝试重新连接到本地网络、硬刷新网页 (Ctrl/Command + Shift + R)、在其他浏览器中打开网页,或者更改其 DNS 设置以使用其他解析器(Cloudflare 免费提供高度可靠的 1.1.1.1 DNS 解析器)。
“NXDOMAIN”错误可能导致浏览器中出现“无法访问此站点”或“DNS 服务器未响应”消息。如上所述,许多问题都可能导致此错误消息。
对于运行 Web 应用程序的个人和企业而言,其中大多数问题都可以通过采用 Cloudflare 来解决或缓解,Cloudflare 代理网站流量,并使用最新的安全措施来防范 DDoS 攻击、DNS 劫持、DNS 缓存投毒和 DNS 配置错误。请参阅 Cloudflare 计划以开始使用。