跳到正文
ipaddress.si
DNS阅读约 2 分钟

DNS 是如何工作的?

从输入域名到获得地址:用通俗的语言讲解解析器、根服务器、顶级域、缓存和 TTL。

作者:ipaddress.si

计算机连接的是 IP 地址,人记住的是名称。域名系统(DNS)负责在两者之间翻译——每秒数十亿次,大多直接来自缓存,只需几毫秒。

参与者

  • 存根解析器:操作系统或浏览器里的小型 DNS 客户端。
  • 递归解析器:负责查找答案的服务器,由你的运营商运营,或使用 1.1.1.1、8.8.8.8 这样的公共服务。
  • 根服务器:知道到哪里去找每个顶级域。
  • 顶级域服务器:负责 .com、.cn、.si 等,知道每个域名由哪些域名服务器负责。
  • 权威域名服务器:保存域名的真实记录。

一次查询,逐步拆解

当你打开 www.example.com 而缓存中没有任何记录时:

  1. 你的设备向递归解析器查询 www.example.com 的 A(IPv4)和 AAAA(IPv6)记录。
  2. 解析器询问一台根服务器,得到 .com 的服务器。
  3. 它再询问一台 .com 服务器,得到 example.com 的域名服务器(即它的 NS 记录)。
  4. 它询问 example.com 的某台域名服务器,得到地址。
  5. 解析器把答案返回给你,并将其缓存。

缓存与 TTL

每条记录都带有以秒为单位的 TTL(生存时间)。解析器在这段时间内保留答案,之后才重新查询。这就是 DNS 速度快的原因,也是修改需要时间生效的原因:TTL 为一小时的记录,在你修改后最长可能仍从缓存中提供一小时。计划迁移前请先调低 TTL。

不只是地址

DNS 还会告诉世界:

  • 邮件该投递到哪里(MX),
  • 哪些名称是别名(CNAME),
  • 哪些服务器可以发信、哪些证书颁发机构可以签发证书(用于 SPF/DMARC 的 TXT,以及 CAA),
  • 哪些服务器是权威的(NS、SOA),
  • 以及反过来,某个 IP 地址对应哪个名称(PTR)。

每种记录都有一篇简短指南:A、AAAA、CNAME、MX、TXT、NS。

安全:DNSSEC 与加密 DNS

DNSSEC 利用发布在 DNS 中的签名,让解析器验证答案确实来自域名所有者。DNS over HTTPS 和 DNS over TLS 则加密你与解析器之间的连接,让网络上的其他人无法读取或篡改你的查询。它们解决的是不同的问题,配合使用效果更好。

实时查看

DNS 查询会实时查询所有常见记录类型,并显示 TTL 和 DNSSEC 状态——用 cloudflare.com 试试吧。

  • 隐私阅读约 2 分钟

    什么是 CGNAT(运营商级 NAT)?

    为什么你的运营商可能让数百个用户共用一个公网 IPv4 地址,如何判断,以及它会带来哪些问题。

  • IP 地址阅读约 2 分钟

    为什么我的 IP 地址会变?

    动态租约、路由器重启、移动网络和 IPv6 隐私地址:你的 IP 不固定的日常原因。

  • IP 地址阅读约 2 分钟

    公网 IP 与私有 IP

    为什么你电脑的地址以 192.168 开头,而网站看到的却是另一个——这对连接和隐私意味着什么。