AdGuard 成为世界第一个 DNS-over-QUIC 解析器

AdGuard DNS 是首个支持新 DNS-over-QUIC 协议的公共 DNS 解析器。首先我们为大家讲一下什么是 DNS-over-QUIC(简称为 DoQ)。然后我们再来说其与其他协议相比有什么优劣之分,以及如何设置它

以防万一您需要温习一些知识,包括什么是 DNS,如何用它增强线上隐私保护,请您查看大约两年前撰写的这篇文章

什么是 QUIC?

以了解 DNS-over-QUIC 的复杂特点,首先要知道什么是 QUIC。QUIC 是较新传输层的网络协议。现在大家可能在想:“Ok,是在和我开玩笑吗?”。简单地说,QUIC 担任(一个或几个)服务器与客户端之间传输数据包的协议。也有其他能做到这一点的方式(其他协议)。您应该听说过近几年在网上风靡的老旧 TCP。

与 TCP 相比,QUIC 有更好的速度、稳定性,提供更优加密。此协议是近年开发的,而不是诞生于电子技术的“史前时代”,这意味着它可以解决一些可能之前从未被注意的重要问题。我为大家举几个例子为何 QUIC 优于其前辈。

队首阻塞

上述已提到过,在很长一段时间内,我们使用 TCP 传输层协议和其他运行在 TCP 之上的协议包括 TLS、SSL、HTTP 等协议。您应该至少看过某几个缩写,因为我们其实已使用很久,而且它们运行得不错。但关键在于,它们只在稳定宽带连接的较完美情况下才有效率。一出门在荒野使用 4G、LTE 和移动数据,您就会遇到问题比如弱信号、连接速度很慢或其他问题。连现代标准,比如 5G,都帮不了您,而城市里总会有信号弱的地方,比方说,电梯。

由于不断有这种问题,我们开始对它们习以为常,我们用“网络不良”解释页面加载很慢或文件无法下载。但为什么呢?让我们介绍一下队首阻塞(Head-of-line blocking)问题。使用 TCP 时,数据包是一批一批地发送给对方。倘若由于弱信号有一个数据包被丢失,那么数据会像纸牌屋一样完全崩溃。剩下的数据包都将无法被处理。您能做的,只能是希望传输过程不会出现问题,或等待被丢失的数据包重新发送。

在 TCP 之上,如果有一个数据包丢失,其他必须等待。

QUIC 的出现允许数据包不需要“排队”而是被收到后立即就被处理。如果由于弱信号,第一个数据包丢失,其他数据包还是会立即被处理。

在 QUIC 之上,第一个数据包丢失,其他数据包还是会立即被处理

连接迁移

我们已经习惯网上每一台设备使用其独一无二的 IP 地址来相互识别。事实上,也确实是这样。但设想一下普通人的一天,比如我的一天。每天早上我都会离开舒适温暖的家(和其稳定的 Wi-Fi)去上班。我的手机一无法连接家里的路由器,它就会从 Wi-Fi 自动切换成 4G。我的手机 IP 地址也会改,全部活动连接也会断开。在地铁上我重新打开浏览器以继续阅读一篇文章。浏览器需要重新建立到网站和到在 AdGuard Home 运行我的 DoH 服务器的连接。该过程是需要时间的,但是我可能很快就会失去耐性。等我到了办公室,连接 Wi-Fi,上述的故事又会反复出现。

QUIC 考虑到了这几点。 当您使用 QUIC 时,您的手机能够从一个 IP 地址切换为另一个 IP 地址,这就是所谓连接迁移(Connection Migration),而这不会对用户造成任何影响。当然整个流程更复杂。QUIC 允许您的连接保留对端点地址的所有更改,不仅对 IP 地址(比如说对端口的更改也是如此)。您就可以更容易搜索您所喜欢的主题。

DNS-over-QUIC

现在我们就进入到了关键。DNS-over-QUIC 是利用 QUIC 传输层协议的优点并依靠它以发送 DNS 请求的 DNS 协议。目前 DoQ 尚处于开发阶段,但这不会妨碍我们进行实验。

为何不是 DNS-over-HTTPS

事情到这里就更加复杂了:从一方面来说,由于后来要增加在 QUIC 之上建立的 HTTP/3 协议,所以 DNS-over-HTTPS 也需要支持 QUIC。于是关于这一点,又会衍生出一个新的问题:我们为什么需要使用 DoQ 呢?

事实上有几种原因,但它们都源自于 HTTP 不是传输层协议的问题。HTTP 是为其他原因创造的。如果使用它作为传输层协议,这会引起很多不必要的风险。特别是在私密区。使用 HTTP 以发送 DNS 请求会导致下列结果:

  • HTTP cookies
  • 其他 HTTP 消息头(HTTP headers)(包括 Authentication, User-Agent, Accept-Language)
  • 给预谋犯更多机会
  • Tracking using ETag

每一个问题可以在客户端的 DoH 级被解决,但是现在有各种不同的客户端:浏览器、操作系统,不少其他软件,但无法对每一个客户端都提供量身定做的解决方案。

AdGuard DNS-over-QUIC

我们很高兴在公共 DNS 解析器当中成为第一个将目前 DNS-over-QUIC 特点应用于我们的 DNS 服务器。我们将为您提供第一个体验它的机会!目前最简单体验它的方式就是使用我们的移动应用:适用于安卓的 AdGuard适用于 iOS 的 AdGuard

在适用于安卓的 AdGuard 上使用 DoQ

  • 打开应用。然后请您打开菜单
  • 请前往设置 > DNS 过滤并开启它
  • 从可用的列表中选择任何一个 AdGuard DNS 服务器
  • 服务器类型下列选择 DNS-over-QUIC(实验性的)

在适用于 iOS 的 AdGuard 上使用 DoQ

  • 打开应用,切换为保护标签
  • 开启 DNS 保护并打开其菜单
  • DNS 服务器选择任何可用的 AdGuard DNS 服务器
  • 在可用的协议中选择 DNS-over-QUIC(实验性的)

想了解更多吗?

那么您将收到更多信息!如您想深入了解 DoQ 并多采取一些行动,这里有很多实用的链接:

  • dnslookup —— 使用 DNS 请求的程序效用。其支持所有流行协议:DoH, DoT, DoQ, DNSCrypt。
  • AdGuard Home —— 想使用自己的 DoQ 服务器吗?没问题!AdGuard Home 的最近更新支持 DoQ。如您的 AdGuard Home 作为公共服务器,您可以设置加密
  • dnsproxy —— 如果对您来说,AdGuard Home 太复杂,您只想使用简单的 forwarder,那么可以选择 dnsproxy。这也是支持 DoH、DoT、DoQ 和 DNSCrypt 的 DNS 代理。
  • DnsLibs —— 想将 DoQ 应用在您的应用程序里吗?那么您可以使用我们用于 AdGuard 产品的 DnsLibs(C++ 类库)。
Darya Bugayova 发表于 AdGuard DNS AdGuard消息
2020年12月16日
下载评论即表示您接受 条款与条件
AdGuard Home 的深入审查
深入阅读 AdGuard Home 的运作原理细则:是万维网的极佳过滤器以及高级用户可用于保护其屋内设备的首选工具。
适用于 iOS 的 AdGuard v4.0.4:DNS-over-QUIC 和 Swift Safari Converter
这次更新主要针对错误修复,也包括其他一些小改进。但还是有无法忽略的功能!这就是 DNS-over-QUIC 的支持和 Safari Swift Converter。
已开始下载 AdGuard! 点击箭头所指示的按钮即可开始安装。感谢您选择 AdGuard! 选择“打开”并点击“确定”,然后稍作等待直至文件加载完毕。在已经打开的窗口中,将 AdGuard 图标拖拽至“Applications”文件夹内即可完成安装。感谢您选择 AdGuard! 选择“打开”并点击“确定”,然后稍作等待直至文件下载完毕。然后,在打开的窗口中点击“安装”即可。感谢您选择 AdGuard!