62、How Ready is DNS for an IPv6-Only World?

How Ready is DNS for an IPv6-Only World?

1. 被动数据解析区域算法

为了确保区域的完整解析,需要不断迭代处理,因为区域常常依赖域外的名称服务器(NS)。以下是从被动数据解析区域的伪代码:

Algorithm 1. Resolve Zones from Passive Data
1: zone res ←{}
2: ns res ←{}
3: prev res zones ←−1
4: cur res zones ←0
5:
6: while !prev res zones == cur res zones do
7:
    prev res zones ←cur res zones
8:
    cur res zones ←0
9:
    for zone in input do
10:
        if zone res[zone.parent][res] then
11:
            glue resolve ←false
12:
            zone resolve ←false
13:
            for NS in glue do
14:
                if NS in ns res || (NS in zone && zone.parent has NS.ip) ||
                   (zone res[ns zone][res] && ns zone has NS.ip) then
15:
                    if zone res[ns zone][res] && ns zone has NS.ip then
16:
                        ns res[NS] ←true
17:
                        glue resolve ←true
18:
            for NS in zone do
19:
                if
                    NS
                    in
                    ns res
                    ||
                    (NS
                    in
                    zone
                    &&
                    zone
                    has
                    NS.ip)
                    ||
                    (zone res[ns zone][res] && ns zone has NS.ip) then
20:
                    if zone res[ns zone][res] && ns zone has NS.ip then
21:
                        ns res[NS] ←true
22:
                        zone resolve ←true
23:
            zone res[zone][glue res] ←glue resolve
24:
            zone res[zone][zone res] ←zone resolve
25:
            if glue resolve && zone resolve then
26:
                zone res[zone][res] ←true
27:
                cur res zones ←cur res zones + 1

该算法的流程如下:
1. 初始化区域解析结果、NS解析结果以及上一次和当前的解析区域数量。
2. 进入循环,只要上一次和当前的解析区域数量不同,就继续迭代。
3. 遍历输入的每个区域,检查其父区域的解析结果。
4. 对于每个区域,检查GLUE和区域内的NS是否满足解析条件。
5. 根据检查结果更新解析状态和解析区域数量。

2. 主动测量方法

为了验证被动测量结果,使用Python实现了一个解析器。测量方法基本遵循被动解析算法,具体步骤如下:
1. 从根开始,遍历DNS树。
2. 在DNS层次结构的每一层,使用IPv4和IPv6查询父区域中记录的所有权威名称服务器。
3. 尝试获取域内NS的GLUE(A和AAAA)记录。
4. 对于域外NS,从根开始解析。
5. 如果发现父区域和子区域之间存在不一致,对这些额外的NS进行查询。

为了限制发送到每个服务器的查询数量,采取了以下措施:
- 遵循QNAME最小化原则,使用NS资源记录类型查询父区域。
- 缓存所有响应,包括错误响应和超时。
- 限制重试次数(4次)和发送速率(20秒等待时间)。

在2022年10月10日至14日以及22日至24日期间,对2022年8月15日的Alexa Top1M(包含476,242个区域)进行了测量,共发送了32M个IPv4查询和24M个IPv6查询。主动测量数据集(101GB的JSON数据)和实现测量工具链的工具可在 此处 获取。

3. 伦理考虑

使用的Farsight Security Information Exchange(SIE)数据集由Farsight Inc.在全球分布式的有利位置收集,与递归DNS解析器共址。只收集DNS缓存未命中信息,以保护个人身份信息(PII),并且数据集不包含具体的传感器信息。

在进行主动测量之前,参考了相关报告和最佳实践,采取了以下措施:
- 限制探测速率。
- 只发送格式良好的DNS请求。
- 使用具有信息性rDNS名称的专用服务器。
- 运行一个提供额外信息和联系方式的Web服务器。

测量主要集中在Alexa Top 1M网站上,通过缓存限制重复请求。在测量期间未收到任何投诉,因此认为该工作不存在伦理问题。

4. 结果 - 数据集概述

被动数据集涵盖了从2015年1月1日到2022年8月31日的7年时间。在此期间,唯一区域的数量从1.26亿增加到3.68亿,公共后缀列表(PSL)二级域名的数量从1.16亿增加到3.26亿。

5. 结果 - IPv6在DNS中的解析情况随时间的变化

通过图表展示了不同类型区域(所有区域、ICANN TLDs、PSL二级域名、树中较深的区域、Alexa Top-1K和Alexa Top-1M)在不同时间的IPv4和IPv6解析情况:
| 区域类型 | 2015年1月IPv6可解析比例 | 2022年8月IPv6可解析比例 | 备注 |
| ---- | ---- | ---- | ---- |
| 所有区域 | 11.4% | 55.1% | 2017年1月有显著增长,与两个主要DNS提供商添加AAAA GLUE有关 |
| ICANN TLDs | - | 大部分可解析 | 剩余不可解析的是一些虚荣TLD和较小的国家代码TLD |
| PSL二级域名 | - | - | 趋势与所有区域相似 |
| 树中较深的区域 | - | - | 一般IPv6可解析性较低,但呈上升趋势 |
| Alexa Top-1K | 38.9% | 80.6% | 2017年和2018年有明显增长,分别与主要网络托管商和PaaS提供商、主要搜索引擎提供商启用IPv6解析有关 |

将主动测量结果与被动测量结果进行比较,发现两者非常接近,这增强了对被动测量结果的信心。

6. 结果 - IPv6解析失败类型

关注那些显示出IPv6部署迹象但无法通过IPv6解析的区域。这些区域的NS具有AAAA记录或AAAA GLUE。常见的失败原因如下:
- 父区域中NS解析失败,尤其是当NS在域外且其所在区域无法通过IPv6解析时。
- 父区域中的NS缺少AAAA记录,而区域内的NS有AAAA记录,通常是由于缺少GLUE。
- 相反的情况,即GLUE存在但区域内的NS没有AAAA记录。

在2017年1月左右,许多之前无法通过IPv6解析但NS有AAAA记录的区域变得可以解析,原因是一个主要提供商添加了缺失的GLUE记录。

7. 结果 - 集中化与IPv6就绪情况

关注托管大多数无法通过IPv6解析区域的名称服务器。发现超过97.5%的无法通过IPv6解析的区域由前10%的NS集合托管。不同类型区域中,不同的主要提供商对IPv6就绪情况有显著影响:
- 对于所有区域,主要网络托管商在2017年的变化影响很大。
- 对于Alexa Top-1K,PaaS提供商和主要搜索引擎运营商的影响明显。
- 对于Alexa Top-10K - 100K,PaaS提供商是顶级NS集合。

8. 结果 - 主动测量中NS的可解析性和响应性

在对Alexa Top 1M的评估中,发现了176,207个NS记录,其中212个记录的A或AAAA记录无效。在剩余的175,995个记录中,116,504个需要GLUE。不同配置的NS的GLUE设置和响应情况如下:
| NS配置 | 需要GLUE的数量 | 正确设置GLUE的比例 | 响应查询的比例(IPv4) | 响应查询的比例(IPv6) |
| ---- | ---- | ---- | ---- | ---- |
| 仅A记录 | 94,192 | 90.47% | 96.88% | - |
| 双栈 | 19,310 | 72.87%(完整GLUE) | 96.88% | 93.52% |
| 仅AAAA记录 | 108 | 64.81% | - | 93.52% |

这表明从被动数据估计DNS可解析性的研究工作可能存在3 - 6%的准确性差距,且IPv6的差距更大。

9. 讨论 - 集中化的影响

互联网在过去十年中呈现出集中化的趋势,这也体现在DNS领域。越来越多的区域由越来越少的组织运营,这意味着一个大型DNS提供商的故障或缺乏对IPv6的支持可能会对互联网的很大一部分造成名称解析中断。

在研究中发现,域外NS无法通过IPv6解析是最常见的配置错误,通常是由单个区域中缺少GLUE触发的。鉴于十个运营商可以使24.8%尚未通过IPv6解析的区域实现IPv6 DNS解析,大型DNS提供商在使互联网为IPv6做好准备方面负有巨大责任。

10. 讨论 - IPv6 DNS解析与Web

随着在DNS委托链中向下移动,会发现更多的配置错误和更少的可通过IPv6解析的区域。由于常见的Web资产(如JavaScript、样式表或图像)通常从DNS层次结构中更深的完全限定域名(FQDN)提供,因此推测这可能对Web的IPv6就绪情况产生巨大但仍未被发现的影响。

鼓励运营商关注这个问题,并在未来的工作中研究其影响。

综上所述,虽然IPv6在DNS中的采用率在不断提高,但仍存在一些问题,如集中化带来的风险和DNS层次结构中较深区域的IPv6可解析性较低等。需要大型DNS提供商和运营商共同努力,以确保互联网为IPv6时代做好充分准备。

How Ready is DNS for an IPv6-Only World?

11. 关键发现总结
  • IPv6 采用率增长 :从 2015 年到 2022 年,IPv6 在 DNS 中的采用率显著提高,所有区域的 IPv6 可解析比例从 11.4% 增长到 55.1%,热门域名(如 Alexa Top-1K)的 IPv6 采用率更高,从 38.9% 增长到 80.6%。
  • 集中化影响大 :DNS 领域存在集中化趋势,超过 97.5% 的非 IPv6 可解析区域由前 10% 的 NS 集合托管,大型 DNS 提供商的决策和配置对 IPv6 就绪情况有重大影响。
  • 解析失败原因多样 :常见的 IPv6 解析失败原因包括父区域中 NS 解析失败、NS 缺少 AAAA 记录或 GLUE 记录等。
  • 主动与被动测量结果接近 :主动测量结果与被动测量结果高度一致,增强了对被动测量结果的信心,但从被动数据估计 DNS 可解析性存在一定的准确性差距,IPv6 方面的差距更大。
12. 影响分析
  • 对互联网稳定性的影响 :集中化使得 DNS 系统对大型提供商的依赖增加,一旦这些提供商出现故障或缺乏 IPv6 支持,可能导致大量区域的名称解析中断,影响互联网的稳定性。例如,一个大型 DNS 提供商的 IPv6 配置问题可能会影响到数百万个网站的访问。
  • 对 Web 应用的影响 :由于 Web 资产通常从 DNS 层次结构较深的区域提供,而这些区域的 IPv6 可解析性较低,可能会导致 Web 应用在 IPv6 环境下出现加载缓慢或无法访问的问题,影响用户体验。
13. 应对策略
  • 大型 DNS 提供商的责任 :大型 DNS 提供商应承担起推动 IPv6 部署的责任,确保其服务支持 IPv6,及时添加缺失的 GLUE 记录,提高 NS 的 IPv6 可解析性。例如,在新的区域部署时,确保同时提供 IPv4 和 IPv6 的解析支持。
  • 运营商的注意事项 :运营商在进行 DNS 配置和管理时,应更加关注 DNS 层次结构中较深区域的 IPv6 可解析性,遵循 RFC 标准,确保至少使用两个位于不同网络的 NS。同时,对新添加的区域进行严格的 IPv6 兼容性检查。
  • 技术改进 :可以进一步优化 DNS 解析算法,提高从被动数据估计 DNS 可解析性的准确性。例如,开发更智能的缓存机制,减少不必要的查询,提高解析效率。
14. 未来展望
  • IPv6 全面普及 :随着互联网的发展,IPv6 的全面普及是必然趋势。预计未来几年内,IPv6 在 DNS 中的采用率将继续提高,越来越多的区域将实现 IPv6 可解析。
  • 技术创新 :可能会出现新的 DNS 技术和标准,进一步提高 DNS 的性能和安全性,解决当前存在的 IPv6 解析问题。例如,开发新的 NS 配置管理工具,简化 IPv6 配置过程。
  • 研究深入 :未来的研究可以更加深入地探讨 DNS 层次结构中较深区域的 IPv6 可解析性问题,以及如何更好地协调大型 DNS 提供商和运营商的工作,推动互联网向 IPv6 时代平稳过渡。
15. 流程图总结

下面是一个 mermaid 格式的流程图,展示了从被动数据解析区域的主要流程:

graph TD;
    A[初始化区域和 NS 解析结果] --> B{上一次和当前解析区域数量是否相同};
    B -- 否 --> C[更新上一次解析区域数量];
    C --> D[重置当前解析区域数量];
    D --> E[遍历输入区域];
    E --> F{父区域是否已解析};
    F -- 是 --> G[初始化 glue resolve 和 zone resolve 为 false];
    G --> H[检查 GLUE 中的 NS];
    H --> I{NS 是否满足解析条件};
    I -- 是 --> J[更新 ns res 和 glue resolve];
    G --> K[检查区域内的 NS];
    K --> L{NS 是否满足解析条件};
    L -- 是 --> M[更新 ns res 和 zone resolve];
    J --> N[更新区域的 glue res 状态];
    M --> N;
    N --> O[更新区域的 zone res 状态];
    O --> P{glue resolve 和 zone resolve 是否都为 true};
    P -- 是 --> Q[更新区域的 res 状态并增加当前解析区域数量];
    Q --> B;
    B -- 是 --> R[结束];
16. 建议与行动呼吁
  • 大型 DNS 提供商应制定明确的 IPv6 部署计划,逐步提高其服务的 IPv6 支持率。
  • 运营商应加强对 DNS 配置的管理和监控,及时发现和解决 IPv6 解析问题。
  • 研究人员应继续深入研究 DNS 技术,为 IPv6 的全面普及提供技术支持。
  • 互联网用户应积极推动网站和服务提供商支持 IPv6,促进互联网的整体发展。

总之,虽然 IPv6 在 DNS 中的发展取得了一定的进展,但要实现互联网完全适应 IPv6 时代,还需要各方共同努力,解决当前存在的问题,推动 IPv6 的全面普及。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值