本文将探讨 DNS 查询:它是什么、如何工作,以及它如何影响在线隐私和审查。

DNS 查询是指将在浏览器地址栏中输入的网址(即易读的域名)与其对应的IP 地址进行匹配的过程。

所有直接连接到互联网的设备都由一个称为 IP 地址的数字标签来标识。为了方便人类使用,这些地址也可以用更易读、易记的域名来标识。域名系统(DNS)将这些域名映射到其对应的 IP 地址。

详细了解 IP 地址

例如,Proton VPN 网站使用的域名是 protonvpn.com,对应的 IP 地址为 185.159.159.140。在浏览器的网址栏中输入 www.protonvpn.com 时,域名必须转换为对应的 IP 地址,计算机才能理解。

这一转换通过 DNS 完成。因此,当输入 protonvpn.com 时,DNS 会将域名转换为 IP 地址:185.159.159.140。这使浏览器能够找到并连接到正确的网站。

域名的存在纯粹是为了方便人类,互联网的运行并不需要它。如果能记住 IP 地址,可以直接输入这些地址。要实际验证这一点,只需在浏览器的网址栏中输入 185.159.159.140,就会进入 Proton VPN 网站。

DNS 查询的工作原理

DNS 常被比作一本将域名与其对应 IP 地址相互对照的电话簿。这个类比有助于理解 DNS 的作用,但其实际工作方式更为复杂。

DNS 解析器

在浏览器的网址栏中输入域名后,一个 DNS 查询会被发送到一个称为 DNS 解析器(也称 DNS 递归解析器,或简称 DNS 服务器)的特殊服务器。

顾名思义,DNS 解析器通过检索域名对应的 IP 地址并将其发回浏览器来“解析”该 DNS 查询。知道要访问的网站的 IP 地址后,浏览器就可以连接到该网站。

到目前为止,一切都很简单。但 DNS 解析器究竟如何为域名检索正确的 DNS 地址呢?(新域名在不断创建,IP 地址也常常被动态分配给域名并因此经常变更,这使这一过程变得复杂。)

如何使用 DNS 解析域名

对顶级域名(新窗口)(TLD)的 DNS 查询通常包括以下步骤:

1. 在浏览器的网址栏中输入 protonvpn.com。浏览器通过互联网将此查询发送到 DNS 解析器。

2. DNS 解析器向 DNS 根域名服务器发送查询。根域名服务器存储有关 TLD 的信息(例如 .com 或 .net,以及 .ch 或 .uk 等国家代码 TLD)。对于我们的查询(protonvpn.com),DNS 根域名服务器会指向负责“.com”TLD 的 DNS 解析器。

3. 有了这一信息,DNS 解析器接下来会查询 .com TLD 名称服务器,该服务器维护着所有 .com 域名的列表。TLD 名称服务器会以该域名的权威名称服务器的 IP 地址作出响应。

4. 现在 DNS 解析器可以查询该域名的权威名称服务器。权威名称服务器通常由域名注册商(新窗口)运营——注册商是出租和管理域名的企业(如 GoDaddy 或 Namecheap)。权威名称服务器是关于该域名的最终事实来源,可以将该域名的 IP 地址返回给 DNS 解析器 (在本例中为 185.159.159.140)。

5. DNS 解析器将正确的 IP 地址发送到浏览器,浏览器随即可以连接到 185.159.159.140。

DNS 的工作原理

实际上,情况要更复杂一些。例如,许多域名关联多个 IP 地址(包括 IPv4 和 IPv6 地址),如果访问的是子域名(例如 blog.protonvpn.com),还会有额外的步骤。

在此过程的各个阶段都会例行进行缓存(本地存储)——包括浏览器、DNS 解析器以及各个名称服务器。如果在缓存中找到了所需信息,就不会发送请求,从而跳过某些步骤。

不过,就本质而言,这就是 DNS 在一次相当标准的网站访问中的工作方式。

DNS、审查与政府监控

默认情况下,浏览器会将 DNS 查询发送到由互联网服务提供商(ISP)运行的 DNS 解析器。ISP 可以使用多种方法查看用户在互联网上做了什么,但迄今为止最简单(也最廉价)的方法就是监控 DNS 查询。

大多数政府大规模监视计划依赖于要求 ISP 保存客户浏览历史的日志。而且,由于这既简单又廉价,大多数 ISP 仅通过保存 DNS 日志来履行这些法律义务。

同样,当政府希望以社会、宗教、政治或“道德”为由审查互联网内容时,会要求国内 ISP 执行这些封锁。而最简单的方法就是阻止对指定网站和应用的 DNS 查询。

第三方 DNS 服务

避开部分此类审查和监控的一种方法是使用第三方 DNS 解析器,例如 Cloudflare 1.1.1.1 或 OpenNIC。

其中一些服务可能有良好的隐私政策,但除非与 DNS 解析器服务器的连接使用DNS over TLS(DoT)或 DNS over HTTPS(DoH)加密,否则 ISP 只要愿意查看,就能以纯文本形式看到这些请求。

加密 DNS 查询会使 ISP 更难(因而成本更高)监控浏览历史,但如果 ISP 愿意,仍可以相当容易地追踪用户连接到哪些网站和应用。

立即获取 Proton VPN!

DNS 与 VPN

使用 VPN(例如 Proton VPN)时,与 VPN 服务器的连接是加密的。经过一番努力,ISP 可以看到用户连接到了一个属于 VPN 服务器的 IP 地址,但也仅此而已。

DNS 查询会通过VPN 隧道发送,并由 VPN 提供商解析,后者可能运行自己的 DNS 解析器或使用第三方 VPN 解析器。这不涉及隐私问题,因为 DNS 查询看起来来自 VPN 服务器,而非 VPN 用户。

了解 VPN 的工作原理

值得注意的是,使用 VPN 时无需加密 DNS,因为所有 DNS 查询本来就会通过加密的 VPN 隧道发送。

也不建议将第三方 DNS 解析器与 VPN 一起使用。以这种方式配置系统可能会导致 DNS 查询被发送到 VPN 隧道之外的第三方 DNS 解析器。

进一步了解 DNS 泄露

NetShield Ad-blocker

Proton VPN 在所有应用中提供 NetShield Ad-blocker。这是一项 DNS 过滤功能,会阻止对已知属于广告公司、在线跟踪器和恶意软件的域名的 DNS 查询。它(以及其他类似的 DNS 过滤服务)在 DNS 解析器层面工作,只需不解析列入屏蔽名单的域名的 DNS 查询即可实现拦截。

详细了解 NetShield Ad-blocker

从技术上讲,这构成 DNS 泄露(见下文)。如果 DNS 查询已加密,且您信任该 DNS 解析器,这可能不是什么大问题,但它引入了一个不必要的第三方(因此也是潜在的薄弱环节)。

DNS 泄露

使用 VPN 时,所有 DNS 查询都应通过 VPN 隧道发送,由 VPN 提供商解析。如果出于任何原因,DNS 查询被发送到 VPN 隧道之外的第三方 DNS 解析器,就发生了 DNS 泄露。未能将 IPv6 DNS 请求正确地通过 VPN 隧道路由是 DNS 泄露的常见原因。

由于这一第三方很可能是您的 ISP,DNS 泄露是严重的隐私隐患。不用说,所有 Proton VPN 应用都内置了强大的 DNS 泄露防护。

常见 DNS 记录类型

以下是一些可以查询的关键 DNS 记录类型:

  • A(Address)记录:将域名映射到 IPv4 地址。示例:example.com → 192.0.2.1
  • AAAA(Quad A)记录:将域名映射到 IPv6 地址。示例:example.com → 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • CNAME(Canonical Name)记录:将一个域名映射到另一个域名,实际上是将一个名称别名为另一个名称。示例:www.example.com → example.com
  • MX(Mail Exchange)记录:指定代表域名接收电子邮件的邮件服务器。示例:example.com → mail.example.com(优先级 10——优先级数字表示优先顺序,数值越小越优先)。
  • PTR(Pointer)记录:将 IP 地址映射到域名,主要用于反向 DNS 查询。示例:192.0.2.1 → example.com
  • NS(Name Server)记录:指定域名的权威名称服务器。示例:example.com → ns1.example.com、ns2.example.com
  • SOA(Start of Authority)记录:提供有关域名的重要信息,包括主名称服务器、域名管理员的电子邮件、域名序列号(有助于在多个 DNS 服务器之间管理和同步 DNS 数据),以及刷新、重试和过期计时器(示例:example.com → ns1.example.com、admin.example.com、2024041501)
  • TXT(Text)记录:保存任意文本数据,常用于电子邮件验证(如 SPF 或 DKIM)及其他验证目的。示例:example.com → “v=spf1 include:example.com ~all”
  • SRV(Service)记录:指定特定服务所用服务器的位置,例如 SIP(新窗口) 网络电话协议、XMPP(新窗口) 消息传递协议等。示例:_sip._tcp.example.com → 0 5 5060 sipserver.example.com
  • CAA(Certification Authority Authorization)记录:指定允许为域名颁发证书的证书颁发机构(CA)。示例:example.com → 0 issue “letsencrypt.org”
  • NAPTR(Naming Authority Pointer)记录:用于网址解析,并为 VoIP 等各种服务定义重写规则。示例:example.com → 100 50 “s” “SIP+D2U” “” _sip._udp.example.com
  • DNSKEY:包含 DNSSEC(旨在为 DNS 增加额外安全层的一套规范)中使用的公钥签名密钥。
  • 。示例:example.com → 256 3 13 …
  • DS(Delegation Signer)记录:保存 DNSKEY 记录的哈希值,用于保护 DNSSEC 中的委托。示例:example.com → 12345 13 2 …
  • SPF(Sender Policy Framework)记录:用于定义哪些 IP 地址有权代表域名发送电子邮件。示例:example.com → “v=spf1 ip4:192.0.2.0/24 -all”

DNS 命令用于查询、测试和排查 DNS 服务器和记录。这些命令是网络管理员确保 DNS 服务正常运行的必备工具,因为 DNS 对将域名解析为 IP 地址至关重要。

DNS 命令用于查询、测试和排查 DNS 服务器与记录。DNS 对于将域名解析为 IP 地址至关重要,因此这些命令是网络管理员确保 DNS 服务正常运行的重要工具。

以下是一些常用的 DNS 命令。可以在终端窗口(Linux)、终端(macOS)、命令提示符(cmd)或 PowerShell(Windows)中,甚至在移动设备上的终端模拟器应用中运行这些命令。并非所有这些命令在平台上都是“开箱即用”的,但在几乎所有情况下都很容易安装。

nslookup

nslookup 命令是用于查询 DNS 以获取域名或 IP 地址映射的工具。还可以指定要使用的特定 DNS 服务器,并执行反向 DNS 查询。

nslookup

dig

dig(Domain Information Groper)命令是比 nslookup 更强大、更灵活的 DNS IP 查询工具。网络管理员因其详细的输出和高级选项而更青睐它。

dig

使用 dig 还可以查询特定的 DNS 记录类型、查询特定的 DNS 服务器,以及执行反向 DNS 查询。

host

host 命令是另一种执行 DNS 查询的工具。它比 dig 更简单,但足以满足基本任务的需要,包括查询特定的 DNS 服务器和执行反向 DNS 查询。

host

ping

ping 命令主要用于检查主机在 IP 网络上的可达性,但其操作过程也会执行 DNS 解析。

ping

traceroute / tracert

traceroute(Linux 和 macOS 上)和 tracert(Windows 上)命令用于跟踪数据包从源到目的地的路径。它将域名解析为 IP 地址,并显示通往目的地途中的每一跳。

traceroute

ipconfig / ifconfig

ifconfig(Linux 和 macOS 上)和 ipconfig(Windows 上)命令可用于显示网络配置,包括系统正在使用的 DNS 服务器。单独使用时,它只显示活动的接口。要查看 Windows 上的所有接口,请使用 ipconfig /all。

ipconfig

DNS 查询工具

除上述命令行工具外,还有许多在线 DNS 查询工具提供图形用户界面(GUI)方式来查询 DNS。我们的免费安全 IP 扫描器就是一个很好的例子,它允许执行常规 DNS 查询、MX 查询、NS 查询、CNAME 查询和 TXT 查询。

DNS 查询

它还可以执行反向 DNS 查询(IP 查询)。

反向 DNS 查询

总结

本质上,DNS 只是一本复杂的自动化电话簿。它使互联网对人类可用,但也可能(并且正在)被政府滥用,用来监视公民并审查他们能看到的内容。绕过这些 DNS 滥用的最佳方法是使用 Proton VPN 这样的 VPN 服务。

VPN 服务会代替 ISP 安全地解析 DNS 查询,而大多数信誉良好的 VPN 服务都以保护用户的隐私为己任。

当然,VPN 还提供许多其他好处,例如向访问的网站隐藏真实的 IP 地址、加强对 ISP 监控或审查互联网活动的防护、在旅行时能够观看喜欢的内容,等等。

进一步了解使用 VPN 的好处