Domain IP Lookup

三个层级都被称作“DNS 服务器”

存根解析器

您自己的设备

递归解析器

运营商、路由器或 1.1.1.1

权威服务器

域名自己的 DNS

DNS 基础

DNS 与 VPN:各自到底做了什么

8 分钟阅读作者: Domain IP Lookup Team

几年前,我改了家里路由器的 DNS 设置,挑了一个号称注重隐私的解析器,还悄悄挺得意。几个月后,出于同样的理由,我又买了一个 VPN 订阅。两次我都以为自己「变私密了」。两次我都错得挺有意思,花了些在数据包层面折腾的功夫,才弄明白自己每次到底买了什么。

这种混淆可以理解,因为两者是用同一套话术卖的。但 DNS 和 VPN 在你的连接里作用于完全不同的位置,一旦看清这一点,其余的——泄漏、地区小把戏、速度——就都顺理成章了。

先从一次查询到底是什么说起

浏览器要加载 example.com 之前,得先把这个名字翻译成 IP 地址。它向 DNS 解析器提问,解析器回给它类似 203.0.113.25 的东西。这一问一答就是一次查询:微小、迅速,和真正的访问是分开的。等回答回来之后,浏览器才打开到那个地址的连接,把页面取回来。

把这两个阶段在脑子里分清楚,因为整个 DNS 对 VPN 的问题就活在这里。改 DNS 只动第一阶段。VPN 则把第二阶段也一并接管。

改 DNS 真正做了什么

换解析器——手动换,或者用浏览器里的加密 DNS——改的是谁来回答这些问题。你运营商的解析器不再看到你查过的每个名字的日记,新解析器开始替它看到。带过滤的解析器可以拒绝以恶意软件或广告闻名的名字。位于另一个国家的解析器,对那些根据查询看似来自哪里来决定给你看什么的服务来说可能重要,这正是智能 DNS 服务背后的全部小把戏。

地区这个角度也值得老实交代。有些服务查的是你的解析器看似在哪里,而不是你本人在哪里,因为历史上,查询一直是位置的一个还算不错的替身。这就是智能 DNS 的全部根基:不是加密,不是隧道,只是一些被选来把你指向别处代理的回答。一旦某个服务改查你连接的地址——大多数都这样——这个把戏就不灵了,这也是为什么智能 DNS 能解锁一些目录,对另一些却毫无作用。

而清单差不多就这些。访问本身没有变。你的数据照样从你家里、走你自己的连接、用你自己的 IP 地址出去,你访问的网站看到的你和以前一模一样。如果解析器流量是加密的,你的运营商读不到查询了,但它仍然能看到你在连接哪些 IP 地址。我换的是电话簿,不是道路。

VPN 真正做了什么

VPN 把你的全部流量——查询和页面获取都算在内——包进一条加密隧道,送到 VPN 提供商运营的服务器。那台服务器然后替你和互联网交谈。网站看到的是 VPN 服务器的地址,而不是你的。你的运营商看到的是一条通往单一目的地的加密流,仅此而已。

但注意悄悄发生的事:信任没有消失,它搬家了。VPN 提供商现在能观察到你运营商以前能观察到的东西,因为你做的一切都经过它的机器。VPN 是一种观看者的更换,而不是被观看的终结,而营销里的「匿名」一词值得一篇讲 DNS 泄漏的朴素文章对待泄漏的那种怀疑。

有一个水管层面的细节值得了解,因为它解释了下一节的泄漏。在底层,一次查询是一个发往解析器地址的小数据包——普通 DNS 用 53 端口——而 VPN 把一切,每个程序的每个数据包,都搬进它的隧道。当隧道的规则忘了把那些小小的查询数据包包括进去,它们就会从正常网络溜出去。不同的阶段,不同的故障方式。

并排来看

问题改 DNSVPN
谁能看到你的查询?你选的那个解析器VPN 提供商
网站看到什么地址?你的真实 IP 地址VPN 服务器的地址
你的浏览内容对运营商隐藏吗?不是的,它在隧道里
对速度的影响只影响查询;感觉可能稍快一点或稍慢一点全部流量都要绕路,所以有些变慢是正常的
费用通常免费通常是订阅
能让你匿名吗?不能不能

最后一行是商家最希望你跳过的。两种工具都不抹除你登录的账户、网站设置的 cookie,或你浏览器呈现的指纹。用 VPN 登录你的邮箱,那个服务完全清楚你是谁——它只是看到了另一个回信地址。

一次页面加载,两种走法

说点具体的。你在咖啡馆的 Wi-Fi 上,在浏览器里输入一家商店的名字。只改了 DNS 的情况下,你的查询会发往你选定的解析器——如果你那样设置了,就是加密的——然后带回商店的地址,比如 198.51.100.25。接着,你的笔记本直接连接到那个地址,穿过咖啡馆的网络,明着走。商店看到的是你笔记本的真实地址。咖啡馆的路由器看得见你去了哪里、流了多少数据。名字的日记本搬了家;旅程本身一点没变。

同一家咖啡馆,打开 VPN。查询现在发生在隧道内部,由 VPN 的解析器回答。页面的抓取也走隧道,送到 VPN 的服务器,由它把页面取来再转交给你。咖啡馆只看到一条通往一个目的地的加密流。商店看到的是 VPN 服务器的地址,位于 VPN 服务器所在的国家。不过请注意那位旁观者:他没有离开剧场。他只是换了座位,从咖啡馆的路由器换到了 VPN 提供商的机房。

有一种混合形态值得点名,因为它会产生令人困惑的泄漏报告:split tunnelling。许多 VPN 客户端允许你把选定的应用豁免在隧道之外,于是银行应用走你的真实连接,浏览器则走 VPN。那些被豁免应用的查询也走外面,由你平常的解析器回答。这不是 bug,也不是背叛——这是功能在正常工作——但这意味着“VPN 开着”不再是对你流量的完整描述。两条车道,两组目击者,而只采样一条车道的泄漏测试,永远只会告诉你一半的故事。

尴尬的中间情形:VPN 之下的 DNS 泄漏

这正是两者相撞的地方。VPN 本应把查询也通过隧道走,用它自己的解析器。但操作系统和浏览器有时会把查询送到隧道之外、送给旧解析器,往往是运营商的那个。页面流量藏住了,查询日记却从侧门漏了出去——那就是 DNS 泄漏,这也是为什么改过的 DNS 设置,比如这篇换服务器指南里的那些,会悄悄和 VPN 对着干,而不是帮它。

因为这两个工具共用一套词汇,人们会以悄悄互相抵消的方式把它们组合起来。反复出现的有:

  • 为了隐私设置了一个自定义解析器,然后跑一次泄漏测试去怪 VPN——而逃出去的那些查询,恰恰是你自己的设置在照你吩咐的做。
  • 为了隐私购买 smart DNS。它不提供任何隐私:查询就是它的全部产品,而你的流量纹丝不动地待在原地,在你自己的地址之下。
  • 出于地区原因用着 VPN,而浏览器自带的加密 DNS 却把查询发往你真实国家的一个解析器。有些服务会读取查询表象上的位置,于是你的一半看起来在国外,另一半在家。
  • 把两个工具叠在一起,然后把变慢怪到最后装的那个头上。隧道对你搬运的每一个字节征税;解析器只对那些问题征过税。

这些配置没有一个是稀奇古怪的。这其中有两个是我亲手搭出来的,每次都是往一个已经有了一个工具的设置里再加一个看起来合理的工具,从没检查过组合起来到底做了什么。检查只需要五分钟和一个诚实的问题:就一次查询而言,就一次页面加载而言,我到底在用谁的机器?

那么你到底需要哪个?

问问你到底想修好什么。查询被你的运营商看见,或者回答又慢又被过滤?换解析器——几分钟就好,一分钱不花。从不受信任的网络连接,或者需要网站看到另一个网络位置?那是 VPN 的活,隧道也在内。很多人合理地两者都用,设置成 VPN 连接时由它处理查询。

而两次购买都买不到隐形。把任何承诺这一点的工具都当成故事听——而如果你想检查自己的配置到底在暴露什么,查询是第一个该看的地方。

需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。

常见问题