在线工具集

DNS 是什么:从域名到 IP 的全过程拆解

理解互联网的地址簿。从根服务器到本地缓存,掌握域名解析的完整流程、关键优化和安全考量。

📅 2026-04-28 · ⏱ 约 7 分钟阅读

1. DNS 的起源和核心问题

DNS(Domain Name System)是互联网的地址簿。它的核心问题非常简单:人类容易记住 google.com,但计算机只能通过 IP 地址(如 142.250.185.46)进行通信。DNS 的使命就是在域名和 IP 地址之间建立映射。

DNS 由 Paul Mockapetris 在 1983 年设计,首次发表在 RFC 882 中(随后的 RFC 883 和现在的 RFC 1035 是标准规范)。在 DNS 出现前,互联网使用 hosts 文件(一个集中管理的文本文件),但这种方式很快变得不可扩展。DNS 采用分布式架构,使得互联网可以从几百台主机扩展到今日的数十亿台设备。

2. 域名的层级结构

域名按照层级组织,从右到左递进。以 www.google.com.example.co.uk 为例:

域名层级示例:

.(根) ← 隐含,完整域名末尾实际有个点
uk ← 一级域名(TLD,Top Level Domain)
co.uk ← 二级域名(SLD,Second Level Domain)
example.co.uk ← 三级域名(二级注册域名)
google.com.example.co.uk ← 四级域名
www.google.com.example.co.uk ← 五级域名(主机名)

实际使用中:

  • 根域(.):由 13 组根服务器维护,全球分布。
  • 顶级域(TLD):.com、.org、.net、.cn、.uk 等,由 ICANN 管理,约 1500+ 个。
  • 二级注册域:用户向域名注册商购买的实际域名。google.com 中,google 是二级域,com 是 TLD。
  • 子域:由域名所有者自由设置。www 和 api 是 google.com 的子域。

这种分层设计使得 DNS 可以分布式管理:根服务器只需知道 TLD 服务器,TLD 服务器只需知道注册域的权威服务器,权威服务器管理所有子域记录。

3. 根服务器和权威 DNS 服务器

DNS 系统的顶端是 13 个根服务器(Root Nameservers),标记为 a.root-servers.net 到 m.root-servers.net。虽然标记为 13 个,但通过 IP anycast 技术(多个物理服务器共享同一 IP),实际上全球有数百个根服务器实例。

根服务器的职责简单:告诉查询者"你要查 .com,请问根服务器,答复是该联系 VeriSign 的 .com TLD 服务器"。根服务器每天处理数百亿次查询。

在第二层,每个 TLD(.com、.cn 等)都有自己的权威服务器。例如,.com TLD 由 VeriSign 运营,权威服务器维护所有 .com 域的注册信息,告诉查询者"google.com 的权威服务器是 ns1.google.com"。

在第三层,每个注册域所有者配置自己的权威 DNS 服务器(通常由域名注册商或 DNS 服务商提供,如 Route53、Cloudflare DNS)。权威服务器存储该域所有子域的完整记录(A 记录、MX 记录等)。

4. DNS 查询过程:递归 vs 迭代

当你在浏览器输入 www.google.com 时,DNS 查询会经历以下步骤(递归查询模式):

完整 DNS 查询流程(8 个步骤):

  1. 用户 → 本地 DNS 递归解析器:浏览器发送递归查询"请帮我找 www.google.com 的 IP"到 ISP DNS 递归解析器(如 8.8.8.8)。
  2. 递归解析器 → 根服务器:解析器向根服务器发送迭代查询"www.google.com 是什么?"
  3. 根服务器 → 递归解析器:根服务器回复"我不知道,但 .com TLD 服务器会知道。地址是 a.gtld-servers.net"
  4. 递归解析器 → TLD 服务器:解析器向 .com TLD 服务器查询"www.google.com 是什么?"
  5. TLD 服务器 → 递归解析器:TLD 服务器回复"我不知道,但 google.com 的权威服务器会知道。地址是 ns1.google.com"
  6. 递归解析器 → 权威服务器:解析器向 google.com 的权威服务器查询"www.google.com 是什么?"
  7. 权威服务器 → 递归解析器:权威服务器回复"www.google.com 的 A 记录是 142.250.185.46"
  8. 递归解析器 → 用户:解析器将结果返回给浏览器

这个过程中,递归查询(Recursive Query)是用户到递归解析器的交互——用户信任解析器会帮助查找答案。迭代查询(Iterative Query)是递归解析器到其他 DNS 服务器的交互——每个服务器只说"我不知道,但你可以问这个服务器"。

完整查询可能需要 4 跳(用户→递归→根→TLD→权威)和多个往返。首次查询可能需要 200-500ms,但结果会被缓存以加速后续查询。

5. DNS 记录类型详解

DNS 权威服务器存储不同类型的记录,用来指导不同用途的查询:

记录类型 用途 示例
A 域名到 IPv4 地址映射 google.com A 142.250.185.46
AAAA 域名到 IPv6 地址映射 google.com AAAA 2607:f8b0:4004:80e::200e
CNAME 规范名称,域名别名 www.google.com CNAME google.com
MX 邮件交换,指向邮件服务器 google.com MX 10 aspmx.l.google.com
NS 权威名称服务器 google.com NS ns1.google.com
SOA 起始授权,区域配置 包含主服务器、刷新间隔等
TXT 文本记录,SPF、DKIM、验证 v=spf1 include:_spf.google.com ~all
SRV 服务记录,指向特定服务 _sip._tcp.example.com SRV 10 60 5060 sipserver.example.com
CAA 证书认证授权,SSL 证书签发限制 example.com CAA 0 issue "letsencrypt.org"

6. TTL 缓存机制

DNS 查询每次都走完整的递归流程效率太低。为了加速,每条 DNS 记录都有一个 TTL(Time To Live)值,单位通常是秒。

缓存分为多层:

  • 浏览器缓存:最快,但容量小,通常 TTL 较短。
  • 操作系统缓存:所有应用共享,macOS/Windows 都有 DNS 缓存。
  • ISP DNS 递归解析器缓存:由网络运营商维护,缓存最全且最稳定。
  • 权威服务器:每条记录有自己的 TTL,权威服务器不负责缓存,只负责回复真实值。

TTL 的选择是一个权衡:

  • TTL 很长(如 86400 秒 = 1 天):很少需要重新查询,节省带宽和服务器资源,但修改 DNS 记录后需要等待缓存过期才能生效。
  • TTL 很短(如 60 秒):修改 DNS 快速生效,适合需要频繁切换 IP 的场景(如故障转移、负载均衡),但增加查询频率,服务器负担加重。
  • 典型做法:稳定的记录(如官方网站)设置 3600-86400 秒,变动频繁的记录(如 CDN 切换)设置 300-900 秒。

7. DNS over HTTPS(DoH)和 DNS over TLS(DoT)

传统 DNS 使用明文 UDP 传输,这带来两个问题:隐私泄露(ISP 可以看到你查询了哪些域名)和可能被拦截/篡改(中间人攻击或 DNS 污染)。

为了解决这些问题,业界推出了加密 DNS:

  • DNS over TLS(DoT):使用 TLS 加密 DNS 查询,标准端口 853。在传输层加密,性能较好。
  • DNS over HTTPS(DoH):将 DNS 查询包装在 HTTPS 请求中,标准端口 443。外观上与普通 HTTPS 流量无异,难以被检测和拦截。浏览器(Chrome、Firefox、Safari 等)原生支持。

DoH/DoT 还有额外好处:即使在限制 DNS 的网络(如公共 WiFi 限制访问)也能正常查询,因为 HTTPS 443 端口通常都开放。缺点是略微增加延迟(加密/解密开销),但通常不超过 10-20ms。

主流 DoH 服务商包括 Cloudflare(1.1.1.1)、Google(8.8.8.8)、Quad9(9.9.9.9)。

8. CDN 的 DNS 智能解析

大型网站使用 CDN(如 Cloudflare、Akamai、AWS CloudFront)来加速内容分发。CDN 的核心技巧是利用 DNS 实现智能地理位置解析

工作原理:

  1. 用户在深圳查询 www.example.com,DNS 请求到达深圳的 ISP 递归解析器。
  2. 递归解析器向 CDN 权威服务器查询,带上自己的 IP 地址(客户端子网地址,EDNS Client Subnet)。
  3. CDN 权威服务器根据客户端所在位置,返回离客户端最近的 CDN 节点 IP。如果用户在深圳,返回深圳节点 IP;如果在北京,返回北京节点 IP。
  4. 用户的流量直接连接到最近的节点,内容获取延迟最小。

这种动态 DNS 解析完全透明,用户无需任何配置。CDN 服务商还会监控节点健康状况,如果某个节点故障,DNS 会自动返回备用节点 IP。

9. 本地 hosts 文件的优先级

操作系统的 DNS 解析优先级如下:

DNS 查询优先级(从高到低):

  1. 本地 hosts 文件:macOS: /etc/hosts,Windows: C:\Windows\System32\drivers\etc\hosts
  2. 浏览器 DNS 缓存
  3. 操作系统 DNS 缓存
  4. 配置的 DNS 解析器(ISP DNS 或自定义如 8.8.8.8)
  5. 网络配置中的备用 DNS(如果主 DNS 无响应)

hosts 文件的优先级最高,因此可以用来本地覆盖 DNS 解析。例如,在 hosts 中添加 127.0.0.1 local.example.com 可以让本机访问 local.example.com 时直接连接到本机的本地服务。这对开发和测试非常有用。

缺点是 hosts 文件修改后需要手动刷新 DNS 缓存才能生效(macOS: sudo dscacheutil -flushcache,Windows: ipconfig /flushdns)。

10. DNS 污染与 GFW

DNS 污染(DNS Hijacking/Spoofing)是一种网络攻击和审查手段。攻击者拦截 DNS 查询,返回虚假的 IP 地址,将用户重定向到恶意网站或屏蔽网站。

中国的"防火长城"(GFW)著名的就是 DNS 污染。当用户查询某些被屏蔽的域名时,GFW 会拦截 DNS 请求,返回虚假的 IP(通常是某个黑洞 IP 如 1.1.1.1 或其他无效地址),导致用户无法访问真实网站。

防护 DNS 污染的方法包括:

  • 使用境外公共 DNS:Cloudflare 1.1.1.1、Google 8.8.8.8 或 Quad9 9.9.9.9,这些大厂服务器通常在中国能部分工作,但也可能被部分拦截。
  • 使用 DNS over HTTPS(DoH):将 DNS 请求加密封装在 HTTPS 中,难以被识别和拦截。浏览器原生支持。
  • 使用 VPN 或代理:流量绕过 GFW,使用代理提供的 DNS 服务。
  • DNSSEC 验证:对 DNS 回复进行加密签名验证,检测篡改。

11. Cloudflare 1.1.1.1 的优势

Cloudflare 1.1.1.1 是目前最受欢迎的公共 DNS 服务,有以下优势:

  • 超快速:Cloudflare 全球有 200+ 个数据中心,用户总能找到最近的节点。平均查询延迟约 15ms(远低于传统 DNS 的 100-200ms)。
  • 隐私优先:Cloudflare 承诺不记录用户的 DNS 查询日志(与 Google 8.8.8.8 的政策不同,Google 保留 24-48 小时日志用于改进服务)。
  • 安全阻止:1.1.1.1 可以选择 1.1.1.2(恶意软件防护)或 1.1.1.3(成人内容过滤),在 DNS 层阻止危险网站。
  • 支持 DoH 和 DoT:加密 DNS 支持良好。
  • 透明度:Cloudflare 定期发布透明度报告,接受第三方安全审计。

配置方法极简:在网络设置中将 DNS 服务器改为 1.1.1.1 和 1.0.0.1(备用),立即生效。无需重启,所有应用自动使用新 DNS。

12. DNSSEC:DNS 的数字签名

DNSSEC(DNS Security Extensions)通过数字签名保护 DNS 记录的真实性。每条 DNS 记录都用私钥签名,DNS 客户端可以用公钥验证签名,确认记录来自权威服务器且未被篡改。

DNSSEC 链条:

  1. 权威服务器用自己的私钥签名 DNS 记录(RRSIG 记录)。
  2. 权威服务器发布自己的公钥和 DS 记录(Delegation Signer)。
  3. TLD 服务器用自己的私钥签名权威服务器的 DS 记录。
  4. 根服务器用自己的私钥签名 TLD 服务器的 DS 记录。
  5. 客户端从根开始逐级验证签名链。

好处是完全防止 DNS 污染和中间人攻击——伪造的 DNS 记录无法通过签名验证。缺点是增加查询的计算和网络开销(DNSSEC 回复包通常更大),部署复杂度高。目前约 10-15% 的域名启用了 DNSSEC。

13. DNS 故障排查和实际工具

DNS 问题会导致网站无法访问。以下是常见的排查命令:

# 查看本机配置的 DNS(macOS)
cat /etc/resolv.conf
scutil --dns

# 查询 DNS 记录
nslookup google.com
dig google.com
dig google.com +trace # 显示完整递归过程
dig @8.8.8.8 google.com # 指定 DNS 服务器

# 检查 DNS 传播(查看全球不同 DNS 的回复)
host -v google.com

# 刷新本地 DNS 缓存
sudo dscacheutil -flushcache (macOS)
ipconfig /flushdns (Windows)
sudo systemctl restart systemd-resolved (Linux)

如果 ping google.com 失败但 ping 其 IP 地址成功,问题在 DNS。如果两者都失败,问题在网络连接。

14. 总结:DNS 系统全景

DNS 是互联网最关键的基础设施,承载着将易记的域名转换为 IP 地址的使命。从 1983 年的分布式设计到今日的加密化发展,DNS 几乎没变过本质,但在安全、隐私、性能方面不断进化。

记住这些关键点:

  • DNS 查询分为递归(用户→ISP DNS)和迭代(ISP DNS→根→TLD→权威)两部分。
  • TTL 缓存是 DNS 性能的关键,合理设置 TTL 能加速查询或快速响应变更。
  • 使用 DoH/DoT 加密 DNS 能防止隐私泄露和 DNS 污染。
  • Cloudflare 1.1.1.1 是速度和隐私的最佳平衡,值得尝试。
  • DNSSEC 提供了 DNS 层的防篡改保护,但还未大规模部署。
  • CDN 通过地理位置感知的 DNS 解析实现全球加速。