深入探究 DNS QNAME 最小化技术
1. 引言
域名系统(DNS)作为互联网的关键基础设施,承担着将人类可读的域名转换为 IP 地址的重要任务。它诞生于 35 年前,随着互联网的发展,人们对 DNS 的安全性和隐私保护提出了更高要求。查询名称最小化(qmin)于 2016 年被引入,旨在限制 DNS 查询信息的泄露,增强隐私保护。本文将深入研究 qmin 的采用情况,在之前研究的基础上进行扩展和改进。
1.1 研究目的与贡献
本研究的主要目的是测量 qmin 的采用情况,具体贡献如下:
1.
主动测量扩展
:从 2018 年到 2022 年 10 月的主动测量显示,RIPE Atlas 探针使用的支持 qmin 的解析器从 2018 年的 2500 个增加到 14000 个;开放解析器中支持 qmin 的数量从 2018 年的 18000 个增加到 2022 年的 80000 个。
2.
被动测量扩展
:在根服务器和顶级域名(TLD)服务器的被动测量表明,qmin 的采用率有所增加。例如,某根服务器的采用率从 2018 年的 0.6% 增加到 2.5%,.nl TLD 的采用率从 2019 年的 35.5% 增加到 57.3%。同时,过滤根服务器上的无效标签可显著减少噪声。
3.
性能和错误率测量
:对四个开源解析器(Bind、Knot、PowerDNS 和 Unbound)的最新性能和错误率测量显示,所有解析器的错误率都显著降低,但数据包数量有增有减(Bind 和 Unbound 增加,Knot 减少)。
4.
隐私与性能权衡讨论
:基于研究结果,讨论了最小化查询时隐私与性能的权衡,并提出使用公共后缀列表设置 qmin 的深度限制可能是一个有前景的解决方案。
2. 背景知识
2.1 域名系统(DNS)
为了让计算机在互联网上通信,需要使用 IP 地址来指定数据传输的目的地。早期,ARPANET 通过每台计算机上的文件来维护域名到 IP 地址的映射,但随着网络规模的扩大,这种方式变得不可行。1985 年,DNS 作为一种分层系统被引入,负责将域名映射到资源记录(RR)。常见的 RR 类型包括 A(IPv4 地址)、AAAA(IPv6 地址)、MX(邮件服务器)、TXT(任意文本)和 NS(权威名称服务器)。
当查询域名的 IPv4 地址时,DNS 客户端存根解析器向递归 DNS 解析器发送查询请求,解析器再向根名称服务器发送查询。根服务器返回匹配的 TLD 名称服务器的 NS 记录,解析器继续向 TLD 名称服务器发送查询,直到获得所需的 RR。解析器还可以缓存响应以提高性能和减少流量。
2.2 查询名称最小化(qmin)
RFC 7816 于 2016 年 3 月提出了查询名称最小化(qmin)的概念。其核心思想是,向根服务器发送包含所有标签的查询没有额外的功能价值。例如,一个支持 qmin 的 DNS 解析器在查询域名 www.example.domain 时,只会向根服务器发送对最右侧标签(.domain)的查询,以减少信息泄露。
RFC 7816 的默认实现存在两个主要挑战:
1.
NS RR 查询问题
:使用 qmin 时,标准的查询 RR 类型是 NS RR,这可能导致某些名称服务器不响应或返回错误。
2.
多标签域名流量问题
:具有多个标签的域名会产生额外的流量,可能被用于拒绝服务(DoS)攻击。
为了解决这些问题,2021 年 11 月,RFC 7816 被 RFC 9156 取代。RFC 9156 结合了之前的研究结果和实际经验,更新了实现细节,减少了错误率,提高了性能,同时保持了合理的隐私水平。具体来说,发送最小化查询时,使用 A 和 AAAA RRs 代替 NS RR,并指定了特定错误代码的回退机制和两个可调整的标签添加参数。
| DNS 类型 | 查询请求 | 查询响应 |
|---|---|---|
| 标准 DNS |
a.b.foo.bar. A →.
a.b.foo.bar A →bar. a.b.foo.bar A →foo.bar. a.b.foo.bar NS →foo.bar. a.b.foo.bar A →foo.bar. |
bar. NS ←.
foo.bar NS ←bar. a.b.foo.bar A ←foo.bar. a.b.foo.bar NS ←foo.bar. a.b.foo.bar A ←foo.bar. |
| qmin RFC 7816 |
bar. NS →.
foo.bar NS →bar. b.foo.bar NS →foo.bar. a.b.foo.bar NS →foo.bar. |
bar. NS ←.
foo.bar NS ←bar. b.foo.bar NS ←foo.bar. a.b.foo.bar NS ←foo.bar. |
| qmin RFC 9156 |
bar. A →.
foo.bar A →bar. b.foo.bar A →foo.bar. a.b.foo.bar A →foo.bar. |
bar. NS ←.
foo.bar NS ←bar. b.foo.bar NS ←foo.bar. a.b.foo.bar A ←foo.bar. |
启用 qmin 时,解析器有“宽松”和“严格”两种模式。在“宽松模式”下,解析器会向可能有问题的名称服务器回退查询完整的查询名称;而“严格模式”则不会,这可能导致更多的域名无法解析。
2.3 相关研究
之前的研究对 qmin 的采用情况进行了测量。De Vries 等人在 2017 年 4 月至 2018 年 10 月期间进行了主动和被动测量,发现 qmin 的采用率缓慢但稳定增长,并且在根服务器和 TLD 服务器上显著改善了查询隐私。他们还发现了一种改进的测量方法,引入了通配符标签以确保每个查询的唯一性。
ICANN 对根流量进行测量,以分析解析器的泄漏、模式和特征。他们将根服务器上仅包含一个标签的查询分类为最小化查询,并过滤掉无效查询。只有当解析器发出的所有请求都被最小化时,才将其分类为支持 qmin。
CZ.NIC 对.cz DNS 生态系统中的 qmin 支持进行了测量和分析,引入了一种使用机器学习对支持 qmin 的解析器进行分类的新方法。然而,该方法存在一些局限性,例如单个 IP 地址后可能有多个解析器,以及单个解析器的查询数量过少可能导致预测不准确。
3. 主动测量
主动测量的目标是通过查询互联网上的解析器,根据其响应来观察 qmin 的采用情况。主动测量分为两部分:解析器随时间的采用情况(3.1)和开放解析器的采用情况(3.2)。
3.1 解析器随时间的采用情况
方法
本研究采用了 De Vries 等人引入的互联网范围主动测量技术,用于识别递归 DNS 解析器对 qmin 功能的支持。该方法利用了不支持 qmin 的解析器会将完整请求发送到权威名称服务器,而支持 qmin 的解析器会逐步添加标签的特点。
为了检测 qmin 支持,配置了两个权威名称服务器(ns1 和 ns2)。当非最小化解析器查询 a.b.example.domain 的 TXT 记录时,它会向 ns1 发送包含完整查询名称和 TXT 类型的查询,ns1 会返回包含“NO”的 TXT RR;而当最小化解析器查询相同名称时,它会向 ns1 发送查询名称为 b.example.domain 且类型为 NS 或 A 的查询,ns1 会将查询转发到 ns2,ns2 会返回包含“HOORAY”的 TXT RR。
自 De Vries 等人的首次研究以来,NLnet Labs 继续使用 RIPE Atlas 探针进行主动测量,并将结果发布在 DNSThought 网站上。本研究分析和讨论了这些已有的数据。
结果
图 3 展示了从客户端(RIPE Atlas 探针)角度看 qmin 的采用趋势。绿色表示支持 qmin 的解析器数量,橙色表示不支持 qmin 的解析器数量,灰色表示对 qmin 测量无响应但对 DNSThought 中的其他查询有响应的解析器。由于 RIPE Atlas 探针每天分批更新,测量锁定系统的一个 bug 导致新添加的探针不进行 qmin 查询,从 2020 年初到 2022 年初,灰色解析器数量稳步增加。2022 年 4 月 6 日,该 bug 得到修复。
为了观察支持 qmin 的解析器的相对采用率,创建了图 4。假设退出的探针与其解析器的 qmin 采用情况无关,我们发现 2022 年 RIPE Atlas 探针使用的解析器中,64% 支持 qmin,而在 2018 年底 De Vries 等人报告时,这一比例仅为 10%。回顾图 3,我们仍然可以看到 2018 年 4 月支持 qmin 的解析器数量略有增加,这归因于 Cloudflare 默认在其 DNS 解析器上启用了 qmin。此后,支持 qmin 的解析器数量稳步增加,直到 2020 年 1 月出现一个高峰,之后采用率似乎有所放缓。但从图 4 可以看出,整体趋势仍然是上升的。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(客户端存根解析器):::process -->|查询 A RR| B(递归 DNS 解析器):::process
B -->|查询| C(根名称服务器):::process
C -->|NS 记录| B
B -->|查询| D(TLD 名称服务器):::process
D -->|NS 记录| B
B -->|查询| E(权威名称服务器):::process
E -->|A RR| B
B -->|响应| A
以上流程图展示了 DNS 查询的基本流程,从客户端存根解析器发起查询,经过递归 DNS 解析器、根名称服务器、TLD 名称服务器,最终到达权威名称服务器获取所需的 A RR 并返回给客户端。
3.2 开放解析器的采用情况
方法
开放解析器的采用情况测量是通过扫描 IPv4 地址空间中监听 UDP 端口 53 的服务器生成列表,然后对列表中的解析器进行分类。与解析器随时间的采用情况测量类似,使用特殊配置的权威名称服务器来检测解析器是否支持 qmin。
结果
与 2018 年 De Vries 等人的研究相比,开放解析器中支持 qmin 的数量有了显著增加。2018 年,被分类为支持 qmin 的开放解析器有 18000 个,而到了 2022 年,这一数字增加到了 80000 个。这表明 qmin 在开放解析器中的采用率在不断提高。
4. 被动测量
被动测量是从名称服务器的角度观察 qmin 的采用情况,分为根服务器和 TLD 服务器两部分。
4.1 TLD 服务器的被动测量
方法
对 TLD 服务器的被动测量用于验证已经分类的解析器的查询,并观察最小化查询的总比例随时间的变化。通过分析 TLD 服务器的查询日志,统计最小化查询的数量。
结果
以.nl TLD 为例,qmin 的采用率从 2019 年的 35.5% 增加到 2022 年的 57.3%。这表明在 TLD 服务器层面,qmin 的采用情况也在不断改善。同时,在测量过程中发现,过滤掉无效标签可以显著减少噪声,提高测量的准确性。
4.2 根服务器的被动测量
方法
根服务器的被动测量主要是观察最小化查询在总查询中的比例随时间的变化。与 ICANN 的测量不同,本研究的目的不是对解析器进行分类,而是关注整体的采用趋势。
结果
某根服务器的 qmin 采用率从 2018 年的 0.6% 增加到 2022 年的 2.5%。虽然目前的采用率仍然相对较低,但呈现出上升的趋势。同样,过滤根服务器上的无效标签有助于去除大量噪声,使测量结果更加准确。
| 服务器类型 | 2018 年采用率 | 2019 年采用率 | 2022 年采用率 |
|---|---|---|---|
| 根服务器 | 0.6% | - | 2.5% |
| .nl TLD 服务器 | - | 35.5% | 57.3% |
5. 控制实验
控制实验主要测量了四个开源解析器(Bind、Knot、PowerDNS 和 Unbound)在实现 qmin 时的性能和错误率。
5.1 实验方法
在不同的模式下(宽松和严格)对四个开源解析器进行测试,记录每个解析器在处理查询时的错误率和使用的数据包数量。
5.2 实验结果
实验结果显示,所有解析器的错误率都有了显著降低。然而,数据包数量的变化情况各不相同。Bind 和 Unbound 使用的数据包数量有所增加,而 Knot 使用的数据包数量有所减少。这表明不同的解析器在实现 qmin 时,对性能的影响存在差异。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(开始实验):::process --> B(选择解析器):::process
B --> C(设置模式):::process
C --> D(发送查询):::process
D --> E(记录错误率):::process
D --> F(记录数据包数量):::process
E --> G(分析结果):::process
F --> G
G --> H(结束实验):::process
以上流程图展示了控制实验的基本流程,从开始实验,选择解析器,设置模式,发送查询,记录错误率和数据包数量,到最后分析结果结束实验。
6. 研究发现讨论
6.1 解析器行为观察
从实验结果可以看出,不同的解析器在实现 qmin 时表现出不同的行为。一些解析器能够更好地适应 qmin 的要求,减少错误率,而另一些解析器则需要进一步优化。同时,宽松模式和严格模式的选择也会影响解析器的性能和查询结果。
6.2 查询最小化的深度限制
qmin 是在性能和隐私之间进行权衡的技术。为了找到一个合适的平衡点,我们讨论了查询最小化的深度限制。提出使用公共后缀列表来设置这个限制可能是一个有前景的解决方案。公共后缀列表可以帮助解析器确定哪些标签是必要的,从而在保证一定隐私的前提下,减少不必要的查询,提高性能。
7. 结论
通过主动测量、被动测量和控制实验,本研究全面分析了 qmin 的采用情况。结果表明,自 2018 年以来,qmin 的采用率有了显著增加,无论是在解析器随时间的采用情况、开放解析器的采用情况,还是在根服务器和 TLD 服务器的被动测量中都得到了体现。同时,控制实验显示不同解析器在性能和错误率方面存在差异。
未来,随着互联网对隐私和安全的要求不断提高,qmin 技术有望得到更广泛的应用。进一步的研究可以集中在优化解析器的实现,找到更合适的查询最小化深度限制,以及探索如何更好地平衡性能和隐私之间的关系。
超级会员免费看
611

被折叠的 条评论
为什么被折叠?



