DNS 查询:工作原理、工具与故障排除

DNS 查询:工作原理、工具与故障排除

DNS 查询是将 example.com 等人类友好的域名转换为计算机用于相互连接的机器可读 IP 地址的过程。每次你打开网站、发送电子邮件或连接 VPN 时,后台都会进行 DNS 查询。当该查询出现问题时,网站将停止加载,电子邮件将停止流动,网络服务也会中断。

本指南介绍了 DNS 查询期间发生的情况、你将遇到的记录类型、如何从任何设备执行查询,以及如何在故障排除时解释结果。

什么是 DNS 查询?

DNS 查询会查询域名系统以查找与域名关联的信息。最常见的查询是:“该域名指向哪个 IP 地址?”但 DNS 存储的信息远不止 IP 地址。它还包含邮件服务器记录、名称服务器记录、用于域验证的文本记录以及 DNSSEC 密钥等安全记录。

将 DNS 视为互联网的电话簿。你知道名称;DNS 返回号码。该系统分布在全球数百万台服务器上,因此没有单台服务器保存所有记录。相反,查询遵循从根服务器到顶级域服务器再到特定域的权威名称服务器的分层路径。

DNS 查询的工作原理

DNS 查询:工作原理、工具与故障排除 - DNS 查询的工作原理

DNS 查询:工作原理、工具与故障排除 - DNS 查询的工作原理.

DNS 查询:工作原理、工具与故障排除 - DNS 查询的工作原理。

当你在浏览器中输入域名时,通常会发生以下顺序:

  1. 解析器缓存检查。 你的设备或本地路由器首先检查其缓存。如果答案已存储且未过期,则查询立即结束。
  2. 递归解析器查询。 如果答案未缓存,你的设备会询问递归 DNS 解析器,该解析器通常由你的 ISP 或 Cloudflare 或 Google 等公共服务运营。
  3. 根服务器引用。 递归解析器询问根服务器在哪里可以找到顶级域,例如 .com 或 .org。
  4. TLD 服务器引用。 TLD 服务器将解析器指向该域的权威名称服务器。
  5. 权威答案。 权威名称服务器返回所请求的记录,例如包含 IP 地址的 A 记录。
  6. 响应缓存。 解析器根据记录的生存时间 (TTL) 值缓存答案,以便将来的查询更快。

整个过程通常会在几毫秒内完成,但在故障排除时,每个步骤都可能成为故障点。

常见的 DNS 记录类型

DNS 查询:工作原理、工具与故障排除 - 常见的 DNS 记录类型

DNS 查询:工作原理、工具与故障排除 - 常见的 DNS 记录类型.

DNS 查询:工作原理、工具与故障排除 - 常见的 DNS 记录类型。

DNS 查询可以请求许多不同的记录类型。你将遇到的最常见的类型包括:

记录 用途 示例值
A 将域名映射到 IPv4 地址 93.184.216.34
AAAA 将域名映射到 IPv6 地址 2606:2800:220:1:248:1893:25c8:1946
CNAME 将一个域名指向另一个域名 www.example.com -> example.com
MX 指定域名的邮件服务器 10 mail.example.com
NS 列出权威名称服务器 ns1.example.com
TXT 存储任意文本,通常用于验证 v=spf1 include:_spf.example.com ~all
SOA 包含有关区域的行政元数据 主 NS、管理员电子邮件、序列号
CAA 限制哪些证书颁发机构可以颁发 SSL 证书 0 issue "letsencrypt.org"
SRV 定位 SIP 或 LDAP 等服务 10 60 5060 sip.example.com
PTR 反向查询:将 IP 地址映射到域名 example.com

当你执行查询时,你可以请求特定记录类型或请求所有记录。大多数在线工具默认显示 A、AAAA、CNAME、TXT、NS、MX 和 SOA,并可以选择查询其他类型。

如何执行 DNS 查询

DNS 查询:工作原理、工具与故障排除 - 如何执行 DNS 查询

DNS 查询:工作原理、工具与故障排除 - 如何执行 DNS 查询.

DNS 查询:工作原理、工具与故障排除 - 如何执行 DNS 查询。

你可以从命令行、基于 Web 的工具或移动应用执行 DNS 查询。

Windows 命令提示符

打开命令提示符并使用 nslookup:

nslookup example.com

要查询特定记录类型:

nslookup -type=MX example.com

要查询特定 DNS 服务器,请附加服务器地址:

nslookup example.com 8.8.8.8

macOS 和 Linux 终端

使用 dig 命令获取详细输出:

dig example.com

对于特定记录类型:

dig example.com MX

对于简短、干净的答案:

dig example.com A +short

基于 Web 的 DNS 查询工具

在线 DNS 查询工具提供与命令行实用程序相同的信息,无需安装任何软件。当你希望与同事共享结果、从不同网络检查记录或一次查看多种记录类型时,它们非常有用。

可靠的在线工具直接查询权威名称服务器,这意味着 DNS 记录的更改应立即出现,而不是等待缓存值过期。这在更新记录后尤其有用,因为你可以确认权威服务器正在提供新值,即使其他解析器仍显示旧的缓存数据。

为什么不同工具的 DNS 查询结果不同

如果你从两个不同的工具或网络运行相同的查询,你可能会看到不同的结果。这是正常的,通常由缓存引起。

DNS 服务器缓存记录以加快解析速度并减少负载。当你更改记录时,旧值仍保留在世界各地的缓存中,直到 TTL 过期。权威名称服务器从不提供缓存记录,因此针对权威服务器的查询会立即显示当前值。针对公共解析器或 ISP 解析器的查询可能会在几分钟或几小时内显示旧值。

这种延迟称为 DNS 传播。它不是单一事件,而是一个渐进的过程,因为缓存会在不同时间过期。要检查更改是否已传播,请查询不同位置的多个解析器并比较结果。

排查常见的 DNS 问题

网站无法加载

如果网站无法访问,请从 DNS 查询开始。查询域名的 A 记录,检查是否返回 IP 地址。如果查询完全失败,则域名可能已过期、名称服务器配置错误或权威服务器无法访问。

如果查询成功但网站仍无法加载,请测试到返回 IP 地址的连通性。问题可能出在 Web 服务器而不是 DNS。

电子邮件投递问题

电子邮件问题通常指向 MX 记录。执行 MX 查询并确认:

  • 至少存在一条 MX 记录。
  • 优先级值正确。数字越低表示优先级越高。
  • 邮件服务器主机名解析为有效的 A 或 AAAA 记录。

另外,检查域名的 TXT 记录中是否有 SPF、DKIM 和 DMARC 条目。缺失或不正确的记录可能导致合法电子邮件被拒绝为垃圾邮件。

DNS 更改未生效

如果你更新了记录但仍看到旧值,请检查 TTL。如果之前的 TTL 设置为 86400 秒(24 小时),解析器可能会将旧答案缓存一整天。你可以在进行未来更改之前降低 TTL 以加快传播速度。

直接查询权威名称服务器以验证更改是否已实际保存。如果权威服务器显示新值,则更改正确,你只需等待缓存过期。

VPN 或代理泄漏

DNS 查询还可以揭示隐私问题。如果你连接到 VPN,但你的 DNS 查询仍发送到 ISP 的解析器,则即使你的 IP 地址被隐藏,你的浏览活动也可能暴露。这称为 DNS 泄漏。

要检查这一点,请在连接到 VPN 时运行 DNS 泄漏测试。测试应显示由 VPN 提供商运营的 DNS 服务器,而不是你的 ISP。BrowserScan 提供免费的 DNS 和 WebRTC 泄漏测试,显示你的浏览器实际使用的 DNS 服务器,帮助你验证 VPN 是否正确路由所有流量。有关解释泄漏测试结果的更深入指南,请参阅 如何正确运行隐私泄漏测试 的指南。

选择合适的 DNS 查询工具

不同情况需要不同的工具:

  • 命令行 dig 或 nslookup 最适合脚本编写、自动化和详细调试。它让你完全控制查询标志和输出格式。
  • 基于 Web 的查询工具 最适合快速检查、共享结果以及从多个位置检查传播情况,无需安装任何软件。
  • 仅权威查询 最适合在 DNS 更改后立即使用,因为它们完全绕过缓存。
  • 注重隐私的工具 最适合在需要验证 VPN 或代理未泄漏 DNS 查询时使用。BrowserScan 的 DNS 泄漏测试 通过显示浏览器实际使用的解析器(而不仅仅是你配置的解析器)来补充传统的查询工具。

对于大多数日常检查,查询权威名称服务器的基于 Web 的工具是查看当前记录的最快方式。保留命令行工具以进行高级调试。

相关阅读

来源和进一步阅读

常见问题解答

正向和反向 DNS 查询有什么区别?

正向查询使用 A 或 AAAA 记录将域名转换为 IP 地址。反向查询则相反:它使用 PTR 记录将 IP 地址转换为域名。反向查询通常用于电子邮件垃圾邮件过滤和网络诊断。

DNS 传播需要多长时间?

传播取决于更改记录的 TTL 值。如果 TTL 为 300 秒,大多数解析器会在五分钟内更新。如果 TTL 为 86400 秒,则可能需要长达 24 小时。某些解析器忽略 TTL 值并缓存更长时间,因此全球完全传播有时可能需要 48 小时或更长时间。

为什么我的 DNS 查询返回的 IP 与预期不同?

你可能看到的是尚未获取更改的解析器提供的缓存答案。直接查询权威名称服务器以查看当前值。如果权威服务器也返回意外 IP,请检查是否存在冲突记录、域名前面的 CDN 或负载均衡器,或错误的 CNAME 链。

我可以在手机上运行 DNS 查询吗?

可以。大多数基于 Web 的 DNS 查询工具适用于移动浏览器,并且 iOS 和 Android 上有多个网络实用程序应用。过程相同:输入域名,选择记录类型,然后查看结果。

DNS 查询中的“NXDOMAIN”是什么意思?

NXDOMAIN 表示该域名不存在。父区域的权威名称服务器已确认该名称不存在任何记录。如果域名过期、从未注册或存在拼写错误,则可能发生这种情况。

如何检查我的 VPN 是否泄漏 DNS 查询?

连接到 VPN,然后运行 DNS 泄漏测试。测试应显示属于你的 VPN 提供商的 DNS 服务器。如果显示你的 ISP 的服务器或你的真实位置,则你的 VPN 正在泄漏 DNS 查询。你可以通过 BrowserScan 的隐私测试工具 运行免费泄漏测试,在一个地方检查 DNS 和 WebRTC 泄漏。

结论

DNS 查询是互联网上最基本的操作之一,但很容易被忽视,直到出现问题。了解查询的工作原理、哪些记录类型重要以及如何解释结果,为你提供了排查网站、电子邮件和网络服务问题的实用技能。

使用 dig 和 nslookup 等命令行工具进行深度调试,使用基于 Web 的工具进行快速检查和传播监控。当隐私很重要时,请使用专用的泄漏测试验证你的 VPN 是否泄漏 DNS 查询。使用正确的工具,大多数 DNS 问题都可以直接诊断和修复。