如果您还没有听说过,那么我来为你介绍:Cloudflare 在4月1日推出了隐私优先的DNS解析器服务。这不是开玩笑!该服务是我们的第一个以消费者为中心的服务,支持新兴的DNS标准,例如DNS over HTTPS:443和TLS:853以及UDP:53和TCP:53上的传统协议,所有的这些都在一个容易记住的地址中:1.1.1.1

正如在最初的博客文章中提到的那样,我们的政策是永远不要将客户端IP地址写入磁盘并在24小时内擦除所有日志。然而,特别注重隐私的人可能根本不想向解析器透露他们的IP地址,我们对此表示尊重。这就是为什么我们在dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion上为我们的解析器启动Tor洋葱服务,并可通过tor.cloudflare-dns.com访问。

注意:隐藏的解析器仍然是一种实验性服务,在进行大量的测试之前,我们不会将它用于生产或其他关键用途。

Tor的速成课程

什么是Tor

想象一下另一种互联网,为了连接到www.cloudflare.com,您必须通过以下步骤才能连接到Cloudflare,而不是将寻找到我们服务器路径的任务委托给您的Internet提供商:

  1. 计算到目的地的路径,如下所示:

     You -> Your ISP -> X -> Y -> Z -> www.cloudflare.com.
    
  2. 您使用Z的公钥加密数据包,然后使用Y加密,最后使用X加密。

  3. 您将结果提交给X,X用他们的私钥解密;

  4. X将结果提交给Y,Y用他们的私钥解密;

  5. Y将结果提交给Z,Z用其私钥解密以获取原始数据包;

  6. Z将数据包提交给www.cloudflare.com

如果每个人都能够正确地扮演他们的角色,就可以确保只有入境中继X知道你的IP地址,只有出口中继Z知道你正在连接你的网站,从而为你提供隐私和匿名形式。这是Tor的一个简化版本:一个由世界各地的志愿者运行的计算机和服务器组成的集合,充当一个建立在Internet之上的巨大网络的中继器,在这个网络中,从一个中继器到下一个中继器的每一次跳转都会剥去一层加密,因此得名:洋葱路由器。

什么是Tor洋葱服务?

保持互联网用户匿名并不是Tor网络的唯一功能。主要是,上述过程的一个警告是,出口中继以及位于该中继和目的地之间的任何人,包括网络提供者,仍然可以访问该连接。为解决此问题,同时也为内容发布者提供匿名性,Tor允许使用洋葱服务。洋葱服务是Tor节点,它们公开自己的公钥,用.onion TLD编码作为地址,并完全在Tor网络中建立连接:

如何在使用Tor时解析域名?

返回给定域名的IP地址的过程称为DNS解析。由于Tor仍然使用IP地址,您仍然需要进行DNS解析才能通过Tor浏览Web。使用Tor时,有两种常用的方法可以解析域名:

  1. 直接解析名称,然后通过Tor与IP地址通信;
  2. 请求Tor出口中继公开解析名称并连接到IP。

显然,第一个选项会将您的IP泄露给您的DNS解析器,除非您的客户端使用DNS-over-HTTPS或DNS-over-TLS,否则它会将您的目标名称泄露给您的ISP。风险小一点的是,第二个选项可能会使您面临操纵攻击,如DNS中毒或中继损坏的sslstrip 。这为我们的新服务提供了用武之地:

  1. 询问一个基于.onion的解析器服务!

Cloudflare的隐藏解析器是如何工作的?

简而言之,我们基于.onion的解析器服务是Tor洋葱服务,它将DNS端口上的所有通信转发到1.1.1.1上的相应端口,因此表面上的客户端IP是一个内部IP而不是您的IP。然而,事情并没有表面看上去的那么简单。

隐藏解析器是安全的吗?

使用1.1.1.1和此服务之间的一个明显区别是.onion地址是“dns4tor”加上49个看似随机的字母数字字符。事实上,这个56个字符的长字符串包含一个完整的Ed25519公钥,用于与洋葱服务器进行安全通信。这对可用的安全性提出了许多挑战:

  1. 用户如何确保地址正确?

我们只是以tor.cloudflare-dns.com为主题名称购买证书,并以.onion地址作为主题替代名称。这样,如果你的连接地址无误,你应该看到:

  1. 用户如何记住这个地址?

我们认为你不需要记住这个地址。理想的情况下,您需要做的就是访问https://tor.cloudflare-dns.com,并让浏览器将您的请求路由到.onion地址。这可以使用“ Alt-Svc ”HTTP请求头,它是一个可选的请求头,通知浏览器可以从其他备用网络位置访问资源,可能使用不同的协议。多亏了Mozilla,现在可以在Firefox Nightly中使用.onion地址作为替代服务。

想一下像机会性加密这样的功能:一旦你的浏览器收到一个Alt-Svc请求头,表明.onion地址可以为tor.cloudflare-dns.com,如果它知道可以访问.onion地址(例如通过SOCKS)代理),它会试图检查替代服务是否具有相同或更高级别的安全性。这包括确保可以使用相同的证书和服务器名称来连接到洋葱服务器。如果是这种情况,则浏览器将使用替代服务器,从而确保您未来的请求不会离开Tor网络。

隐藏解析器快吗?

这是一个思想实验:假设地球上每两个点之间有一根光纤电缆,能够以光速无损传输数据包。

使用一个粗略的计算,可以很容易看出,平均来讲,每个数据包在大约33 毫秒内经过相当于地球周长四分之一的距离,而每个Tor数据包在到达洋葱服务器之前需要大约200毫秒来完成坏绕地球一个半圈; 这包括了三个回合的往返,以确保双方的匿名性。

然而,Cloudflare不要求其服务器进行匿名,这就是为什么我们可以通过为洋葱服务启用可选 设置,优先考虑延迟而不是服务器位置的匿名性,从而将中继数量减少到三个。有一点要强调的是,这不会影响客户的隐私或匿名性。事实上,正如您可能已经注意到的那样,在第一个洋葱服务图像中,原点距离会合点有三个跳跃,而我们的洋葱服务只有一个跳跃。

我们正在积极研究如何使这项服务更快,并确保达到尽可能小的停机时间。

我为什么要使用Cloudflare隐藏解析器?

首先最重要的事情是,通过Tor网络解析DNS,例如通过连接到Google的8.8.8.8解析器,可以保证拥有一个更高级别的匿名性,这个是比直接发出请求更高级别的。这样做不仅可以防止解析器看到您的IP地址,甚至您的ISP也不会知道您正在尝试解析域名。

尽管如此,除非目标是洋葱服务,否则被动攻击者还是可以捕获离开Tor网络的数据包,恶意出口节点可以通过sslstripping 致使DNS查询中毒或降级加密。即使您将浏览限制为仅限HTTPS站点,被动攻击者也可以找出您已连接到的地址。更糟糕的是,能够在流量进入Tor网络之前和流量离开网络之后进行比较的参与者,可能会使用元数据(大小、时间等)对客户端进行去匿名。因此,唯一的解决方案是通过使用洋葱服务器来消除对退出节点的需求。这就是我们基于.onion的解析器提供的功能。

此外,如果您的客户端不支持加密的DNS查询,那么你可以使用基于.onion的解析器,它可以保护连接免受路径攻击,包括BGP劫持攻击。这意味着对DNS-over-UDP和DNS-over-TCP提供的安全性与DNS-over-HTTPS和DNS-over-TLS提供的级别是相同的。

然而,您的个人匿名需求并不应该是您使用此服务的唯一原因。Tor确保每个人匿名的能力取决于使用它的人数。例如,如果只有告密者使用Tor网络,那么任何连接到Tor网络的人都会自动被怀疑是告密者。因此,在互联网上浏览表情包或观看猫咪视频的人越多,那些真正需要匿名的人就越容易融入流量。

对许多用户来说,使用Tor的一个障碍是它速度很慢,所以我会去关心那些不愿意牺牲快速网站加载时间来帮助活跃分子和持异议者保持匿名的人。也就是说,DNS请求的规模很小,并且由于大多数浏览器和操作系统都会缓存DNS结果,因此总流量并不大。所以,使用基于.onion的解析器只会稍微降低您的初始DNS请求速度,而不会降低其他任何速度,同时仍然有助于Tor网络及其用户的总体匿名性。

我为什么要相信Cloudflare隐藏解析器?

使用基于.onion的解析器可确保您的ISP永远不会发现您正在解析一个域,出口节点没有机会操纵DNS回复,并且解析器永远不会找到您的IP地址。但是,使用基于Cloudflare .onion的解析器的独特优势,它是将Tor的强大功能与1.1.1.1解析器的所有隐私保护功能(例如查询名称最小化)相结合。同时有一个工程师团队致力于在每个层面上对它进行改进,包括DNS-over-HTTPS和DNS-over-TLS等标准。

正如首席执行官马修·普林斯(Matthew Prince)两年前所说,在Cloudflare,匿名是我们重视的一项事业。此外,当我们推出1.1.1.1解析器时,我们承诺采取一切技术措施,以确保我们无法知道您在互联网上做了什么。提供一种通过Tor网络使用解析器,并使它尽快朝这个方向迈出的一大步。

如何设置?

基于.onion的解析器支持1.1.1.1支持的每个DNS协议,仅在Tor网络上支持。然而,由于并非每个DNS客户端都能够连接到Tor网络,因此我们需要进行一些黑客攻击才能使其正常工作。在这里,我们将解释如何设置基于.onion的解析器提供的DNS-over-HTTPS,但是对于所有其他情况,请访问我们的开发人员页面以获取有关如何使用基于.onion的解析器的详细信息。

还记得cloudflared吗?

以下讲述了如何设置cloudflared启用DNS over HTTPS的DNS客户端,并路由通过Tor网络:

  1. 首先, 按照通过HTTPS客户端运行DNS的常规指南开始下载cloudflared
  1. 启动Tor SOCKS代理并使用socat将端口TCP:443转发到localhost:

     socat TCP4-LISTEN:443,reuseaddr,fork SOCKS4A:127.0.0.1:dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion:443,socksport=9150
    
  1. 指示您的计算机将.onion地址视为本地地址:

     cat << EOF >> /etc/hosts
     127.0.0.1 dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion
     EOF
    
  1. 最后,通过UDP守护程序启动本地DNS:

     cloudflared proxy-dns --upstream "https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/dns-query"
     INFO[0000] Adding DNS upstream                           url="https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/dns-query"
     INFO[0000] Starting DNS over HTTPS proxy server          addr="dns://localhost:53"
     INFO[0000] Starting metrics server                       addr="127.0.0.1:35659"
    
  1. 从中获益吧!