标准的域名系统 (DNS) 解析通常通过向各种服务器发送明文查询(最常见的是通过 UDP)来将人类可读的域名映射到 IP 地址。由于这些数据在传输过程中未加密,因此容易受到拦截。用户可能会在网络提供商劫持请求时发现这一漏洞:ISP 不返回实际的目标服务器,而是提供其自身的 IP 地址,从而有效地重定向用户的连接。

一个明文 DNS 查询返回属于 ISP 的 IP 地址的截图。
一个被拦截并重定向到 ISP 所有 IP 地址的明文 DNS 查询。www.karthihegde.dev

这张图片展示了 DNS 劫持的机制,即明文查询被拦截并重定向。

一个 IP 所有权查询显示篡改后的地址属于 ISP。
一个 IP 所有权查询确认重定向的地址由服务提供商所有。www.karthihegde.dev

此视觉效果通过显示返回 IP 地址的所有权提供了劫持的证据。

确保数据完整性的一种方法是 DNS 安全扩展 (DNSSEC)。然而,许多用户误以为 DNSSEC 就是加密;实际上,它使用加密签名来验证 DNS 记录的真实性。如果域名所有者正确实施了有效的信任链,任何被劫持的响应都将无法通过验证,导致解析器返回错误而非欺骗性的 IP。这里的局限性在于采用率:截至 2026 年底,仅约 7% 的评级域名拥有完整的验证 DNSSEC 链。如果没有域名所有者的正确配置,DNSSEC 无法阻止 ISP 篡改传输中的未加密流量。

为了绕过 ISP 的干扰,用户可以使用 Unbound 等本地解析器或使用 dnscrypt-proxy 等工具来支持 DNS over TLS (DoT)、DNS over HTTPS (DoH) 或 DNSCrypt。这些协议将 DNS 查询封装在加密隧道中,防止 ISP 窥探或修改特定的请求内容。虽然这保护了用户与所选解析器之间的路径,但它将信任点从 ISP 转移到了运行这些服务器的第三方提供商。此外,即使使用加密 DNS,除非所有互联网流量都通过 VPN 路由,否则 ISP 仍可能在随后的 TLS 握手过程中通过服务器名称指示 (SNI) 识别访问的网站。

通过 Cloudflare 的 DoH 端点进行的 DNS 查询返回正确 IP 地址的截图。
使用 DNS over HTTPS (DoH) 的 DNS 查询成功返回真实的 IP 地址。www.karthihegde.dev

这张图片演示了 DoH 等加密传输协议如何防止篡改并返回正确的数据。