什么是 DNS (域名系统)?

同事使用平板电脑时,快乐的商务人士展开讨论

作者

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

Michael Goodwin

Staff Editor, Automation & ITOps

IBM Think

什么是 DNS?

DNS (域名系统) 是互联网标准协议的组成部分,负责将人类友好的域名转换为计算机用于识别彼此的的互联网协议 (IP) 地址。

通常被称为“互联网的电话簿”,一个更现代的类比是 DNS 管理域名的方式与智能手机管理联系人的方式类似。智能手机通过将电话号码存储在易于搜索的联系人列表中,用户无需记住单个电话号码。

同样,DNS 使用户能够使用互联网域名而不是 IP 地址连接到网站。例如,用户不必记住 Web 服务器的 IP 地址是“192.0.2.1”,只需转到网页“www.example.com”,即可获得他们想要的结果。

高速公路鸟瞰图,叠加森林背景

在云端保持清醒头脑 


获取每周 Think 时事通讯,了解有关在 AI 时代优化多云设置的专家指导。

DNS 区域文件和资源记录

除了主要服务器类型之外,DNS 还使用区域文件和多种记录类型来帮助完成解析过程。区域文件是基于文本的文件,其中包括有关 DNS 区域内域的映射和信息。

区域文件的每一行指定一个 DNS 资源记录(有关特定类型或数据的单条信息)。资源记录确保在用户提交查询时,DNS 可以快速将域名转换为可操作的信息,将用户定向到正确的服务器。

DNS 区域文件以两条必需记录开头:名称服务器 (NS) 记录,用于指明某个域的权威名称服务器;以及起始授权 (SOA) 记录,用于指定该 DNS 区域的主权威名称服务器。

除了两个主要记录之外,区域文件还可以包含其他几种记录类型,其中包括:

记录类型用途
A 记录和 AAAA 记录将域名映射至 IPv4 地址(A 记录)及 IPv6 地址(AAAA 记录)。
邮件交换记录(MX 记录)为域指定 SMTP 电子邮件服务器
规范名称记录(CNAME 记录)将主机名从别名重定向到另一个域(“规范域”)
指针记录(PTR 记录)指定反向 DNS 查找流程,将 IP 地址映射回域名
发件人策略框架 (SPF) 记录用于识别被授权通过某个域发送电子邮件的邮件服务器
文本记录(TXT 记录)用于人类可读的注释以及自动化处理,例如用于电子邮件身份验证的发件人策略框架

DNS 的历史

在 DNS 出现之前,互联网是不断增长的计算机网络,主要供学术和研究机构使用。开发人员通过使用名为 HOSTS.TXT 的简单文本文件,手动将主机名映射到 IP 地址。SRI International 维护这些文本文件并将其分发到互联网上的所有计算机。然而,随着网络的扩大,这种方法越来越难以为继。

为了解决 HOSTS.TXT 的局限性并创建更具可扩展性的系统,南加州大学计算机科学家 Paul Mockapetris 于 1983 年发明了域名系统。一批互联网先驱协助创建了 DNS,并撰写了第一份详细说明新系统规范的征求意见稿 (RFC),即 RFC 882 和 RFC 883。RFC 1034 和 RFC 1035 后来取代了早期的 RFC。

最终,随着 DNS 的扩展,DNS 管理成为互联网号码分配机构 (IANA) 的责任,最终于 1998 年由非营利组织互联网名称与数字地址分配机构 (ICANN) 管控。

NS1 Connect

IBM NS1 Connect

使用 IBM NS1 Connect 增强网络弹性。我们将在本视频中讨论 IBM NS1 Connect 在应用程序弹性和性能方面的价值。

DNS 服务器的类型

要理解 DNS 的运作机制,首先需要了解其所涉及的各个组成部分。

最初,开发人员为 DNS 设计了分层分布式数据库结构,以促进更动态的域名解析方法,这种方法可以与快速扩展的计算机网络保持同步。该层次结构从根级开始,使用点 (.) 表示,然后分支为顶级域 (TLD),比如“.com”、“.org”、“.net”或国家/地区代码 TLD (ccTLD),比如“.uk”和“.jp”,以及二级域名。

显示根域、顶级域和二级域的 DNS 层次结构图

DNS 架构包括两种类型的 DNS 服务器,即递归服务器和权威服务器。递归 DNS 服务器是执行“询问”的服务器,搜索将用户连接到网站的信息。权威服务器给出了“解决方案”。

递归服务器

递归服务器,也称为递归解析器或 DNS 解析器,通常由互联网服务提供商 (ISP) 或其他第三方 DNS 服务提供商管理。组织也可以自行部署并管理自己的解析器。

递归解析器代表最终用户将域名解析为 IP 地址。递归解析器还会在一段时间内缓存(即临时存储近期 DNS 查询的结果)查询响应,其缓存时长由生存时间(Time-To-Live,TTL) 值决定,从而提升系统效率,使后续对同一域名的查询能够更快得到响应。

当用户在搜索浏览器中输入网址时,浏览器会连接到递归 DNS 服务器来解析请求。如果递归服务器恰好缓存了答案,它可以连接用户并完成请求。否则,递归解析器将沿着 DNS 层级逐级查询,直至获取包含目标域名 IP 地址的 A(或 AAAA)记录。

权威服务器

权威域名服务器保存域名的最终记录,并响应有关其各自区域内存储的域名的请求(通常由域名所有者配置答案)。存在多种权威 DNS 服务器,它们各自负责域名空间中的不同部分。

根域名服务器

根域名服务器位于 DNS 层次结构的顶部,负责服务根区域(DNS 的中央数据库)。共有 13 个根域名服务器“身份”或“权威组”(即根服务器的逻辑分组),分别以字母 A 至 M 标识。它们负责响应根区域中记录的查询,并将请求转发至相应的顶级域 (TLD) 域名服务器。

顶级域名 (TLD) 服务器

TLD 服务器负责管理层次结构的下一级,包括通用顶级域 (gTLD)。TLD 域名服务器将查询定向到其 TLD 中特定域名的权威域名服务器。因此“.com”的 TLD 域名服务器将引导以“.com”结尾的域,而“.gov”的 TLD 域名服务器将引导以“.gov”结尾的域,等等。

其他域名服务器

二级域名服务器(也是数量最多的一类域名服务器)维护着区域文件,其中包含完整域名(如 “ibm.com”)对应的 IP 地址记录。

DNS 是如何工作的?

每个查询(有时称为 DNS 请求)都遵循相同的逻辑来解析 IP 地址。查询的发起方式多种多样——以一个常见场景为例,我们来看用户通过网络浏览器发起请求的情况。

当用户在 Web 浏览器中输入 URL 时,浏览器会将查询发送至 DNS 解析器,该解析器随后逐级查询权威 DNS 服务器,以定位存储域名记录(包括对应 IP 地址)的权威名称服务器。最终,解析出的 IP 地址会返回给浏览器,用户即可连接到目标网站。

用于展示 DNS 查询流程的示意图,呈现客户端、递归解析器、根域名服务器、顶级域 (TLD) 服务器以及权威域名服务器之间的交互关系。

更具体地说,DNS 中的查询解析涉及多个关键流程和组件。

  • 查询启动。用户在浏览器或应用程序中输入域名,例如“ibm.com”。如果该网站对应的 IP 地址不在浏览器缓存中,请求将被发送至递归 DNS 解析器。通常,用户设备会预先配置由互联网服务提供商(ISP)提供的 DNS 设置,用于指定接收该请求的递归解析器。

    *这一过程正在演进:许多现代浏览器已支持 DNS over HTTPS(DoH),可通过 HTTPS 协议进行 DNS 查询,同时许多服务提供商也部署了相应的解析服务器。例如,在美国使用 Firefox 时,系统默认会将 DNS 查询发送至 Cloudflare 的 DoH 服务器,而非本地 ISP 提供的解析器。DoH 正逐渐普及,因为它在隐私保护、性能优化等方面具有优势。
  • 递归解析器。递归解析器首先会检查自身缓存中是否存在该域名对应的 IP 地址记录。若递归解析器的缓存中未包含所需记录,则会启动查询流程,并从根域名服务器开始逐级解析。
  • 根域名服务器。递归解析器查询根域名服务器,该服务器通过引用相关域的相应 TLD 服务器(在本例中,负责“.com”的 TLD 域名服务器)进行响应。
  • TLD 域名服务器。解析器查询“.com”TLD 域名服务器,该服务器使用“ibm.com”的权威域名服务器的地址进行响应。
  • 域名服务器。解析器查询域的域名服务器,该服务器查找 DNS 区域文件,并使用所提供域名响应正确的记录。
  • 查询解析。 递归解析器将 IP 地址返回到用户设备。然后,浏览器或应用程序可以使用该 IP 地址发起向主机服务器的连接,以访问所请求的网站或服务。浏览器与递归解析器会依据各自的配置及 TTL(生存时间)规则对查询结果进行缓存。

公共 DNS 与私有 DNS

DNS 基本上是一个公共协议。公共和私有 DNS 不一定是精确、普遍使用和理解的术语和概念,其使用通常并不精确。

公共 DNS(或公共 DNS 解析器)

公共 DNS 通常用于指代“标准”DNS 解析流程或公共 DNS 解析器。在这一过程中,递归解析器会逐级查询存有公开 DNS 记录的权威服务器,以定位对应的 IP 地址,并最终将用户连接至其所访问的网站。这类解析器通常由用户的互联网服务提供商(ISP)或 DNS 服务提供商提供,例如 Google 的“8.8.8.8”(Quad 8)公共 DNS。私有解析器也可配置为查询公共 DNS,但更常用于受限网络或企业级网络环境。

这种标准 DNS 查询之所以被称为“公共 DNS”,是因为解析器本身可公开使用,并且这些权威服务器上的 DNS 记录对任何互联网用户均可访问。

私有 DNS

“私有 DNS”这一概念则更为模糊不清。它有时被用来指代采用加密协议的 DNS 传输方式,例如 DNS over TLS (DoT) 或 DNS over HTTPS (DoH)。然而,更准确的表述应是将其称为“隐私功能”或“隐私协议”,而非“私有 DNS”。其解析流程本身并未改变,仍然是解析器利用公开可用的 DNS 来完成查询。不同之处仅在于数据传输采用了加密方式。

私有 DNS 也可用于指在封闭的内部网络中进行域名解析,例如企业网络或虚拟私有云 (VPC),其访问权限仅限授权用户。在此类系统中,本地配置的私有解析器会向内部私有服务器发起查询,以定位内网中的资源与站点。这些服务器通常仅服务于私有区域和内部 IP 地址,同时网络会将内部 URL 与 IP 地址对外部互联网隐藏。这种私有 DNS 架构为组织提供了更高的控制能力与安全性。

这类网络可以通过多种方式进行配置。一种方式是使用特殊用途域名,例如 .local。该域名用于本地网络环境中的解析。另一种方式是在公网域名下配置私有子域。此类私有子域仅对使用内部解析器的用户或系统开放访问。

水平分割 DNS

一种常见的企业级架构是将“公共 DNS”和“私有 DNS”结合使用,这种模式被称为“分裂视界 DNS”(Split-Horizon DNS)或“分裂大脑 DNS”。在该配置中,本地递归解析器会针对内部请求查询本地私有权威服务器,而对外部请求则依赖标准公共 DNS 进行解析。通常系统会维护一份域名列表(类似“允许列表”),用于指示哪些请求应路由至内部服务器,哪些应转发至公共互联网。

什么是托管 DNS?

托管 DNS 是一种由第三方提供的服务,使组织能够将其 DNS 基础设施的托管、运维与管理工作外包出去。在托管 DNS 模式下,组织域名的权威 DNS 记录会托管在服务提供商全球分布的服务器网络中。在许多情况下,托管 DNS 服务商会提供统一的控制平面、管理控制台或 API,使客户能够对 DNS 记录及其他配置进行管理与自动化操作。

托管 DNS 服务通常提供多种功能,例如 Anycast 路由、负载均衡、运行时间服务可用性等级协议 (SLA)、故障切换保护、DNSSEC 以及监控与故障排查工具等。这些能力相比传统自建 DNS 架构,能够实现更快速、更稳定且更安全的域名解析。

DNS 安全风险

但是,最好的 DNS 系统仍然容易受到网络安全问题的影响。与 DNS 相关的攻击包括:

DNS 欺骗

DNS 欺骗,也称为缓存投毒,在攻击者将虚假地址记录插入 DNS 解析器的缓存时发生,会导致解析器返回错误的 IP 地址,并将用户重定向到恶意站点。欺骗可能会危及敏感数据,并导致网络钓鱼攻击和恶意软件分发。

DNS 放大攻击

DNS 放大是一种分布式拒绝服务 (DDoS) 攻击,攻击者向 DNS 服务器发送小型查询,将其返回地址伪装为受害者的 IP 地址。这些攻击利用 DNS 协议的无状态特性,并利用小型查询生成超大响应的事实。

放大攻击的结果是,DNS 服务器会发出更大的响应,导致用户面临更大的流量,从而使其资源不堪负重。这可能会阻止 DNS 正常工作,并导致应用程序崩溃。

DNS 隧道

DNS 隧道是一种通过在 DNS 查询和响应中封装非 DNS 流量(如 HTTP)来绕过安全措施的技术。攻击者可以使用 DNS 隧道中继恶意软件命令或从受损网络中窃取 DNS 信息,通常在 DNS 查询和响应中编码有效载荷以避免检测。

子域接管

指向已停用服务的子域中被忽视的 DNS 条目是攻击者的主要目标。如果某项服务(比如云主机)已经停用,但 DNS 条目仍然存在,那么攻击者就有可能获取该子域并在其位置建立恶意网站或服务。

DNS 安全实践

无论组织选择哪种 DNS 服务,实施安全协议最小化 DNS 攻击面、缓解潜在安全问题并优化网络进程中的 DNS 都是明智之举。加强 DNS 安全性的一些有用做法包括:

  • 部署 DNS 安全扩展 (DNSSEC) :DNSSEC 要求对 DNS 响应进行数字签名,从而为 DNS 查询增加了一层安全性。DNSSEC 可以通过验证请求的来源并验证 DNS 数据的完整性来防止 DNS 欺骗攻击。
  • 采用速率限制实践。DNS 服务器上的速率限制可以通过在指定时间段内对单个请求者发送响应的数量或速率来缓解 DDoS 攻击。
  • 要求域名注册商进行双因子身份验证 (2FA)。为域名注册商帐户建立 2FA 可以使攻击者更难以未经授权地访问服务器,并降低域名劫持的风险。
  • 使用冗余。在多个地理位置分散的服务器上部署 DNS 的冗余配置,有助于在发生攻击或中断时确保网络可用性。如果主服务器出现故障,辅助服务器可以接管 DNS 解析服务。
  • 实施 DNS 刷新。清除 DNS 缓存会从本地网络中删除所有条目,这对于删除可能将用户重定向到恶意站点的无效或受损 DNS 记录非常有用。通常,这是一种由解析器运营方提供的按需服务。否则,当 TTL 过期后,缓存内容将被清除。

  • 随时了解 DNS 威胁。攻击者和安全威胁的演变方式与它们入侵的系统类似。及时了解最新的 DNS 漏洞和威胁可以帮助团队保持领先地位,应对恶意行为者。
相关解决方案
IBM NS1 Connect

IBM NS1 Connect 是一项完全托管的云服务,用于企业 DNS、DHCP、IP 地址管理和应用程序流量导向。

深入了解 NS1 Connect
网络解决方案

IBM 的云网络解决方案可实现高性能连接,为应用程序和业务提供支持。

深入了解云网络解决方案
网络支持服务

使用 IBM Technology Lifecycle Services 整合数据中心支持,以实现云网络等。

云网络服务
采取后续步骤

借助 IBM NS1 Connect 增强网络弹性。从免费开发人员帐户起步,深入了解托管 DNS 解决方案;或者预约实时演示,了解我们的平台如何帮助您优化网络性能和可靠性。

  1. 深入了解托管 DNS Services
  2. 预约实时演示