南方數據技术观察
首页 行业新闻 教程 技术文章 AI 对话 官网 咨询与报价
首页 / 行业新闻

部署前在 DNS 区域文件中查找错误 | APNIC 博客

The Domain Name System (DNS) 实现了将用户友好的域名转换为 IP 地址的基本服务,从而使用户能够轻松连接到在线服务。DNS 的规模和复杂性使得其管理变得困难,因此,实践中由于区域文件错误导致的性能或连接问题很常见。鉴于 DNS 的关键作用,区域文件中的任何错误都可能对相关服务产生高度破坏性的影响。例如,微软最近因 DNS 配置错误导致全球服务中断两小时,影响了所有 Azure 客户。其他一些主要的 DNS 相关中断包括 GitHub、LinkedIn、iFastNet 和 HBO。今天的 DNS 工程师使用一系列技术,如监控、测试、linting 和人工审查,来维护他们的区域文件。然而,使用这些方法,错误很容易被忽略;正如 Azure 中断中发生的那样,在服务器迁移期间的一个简单的一行错误导致区域文件副本之间不一致,从而关闭了关键的 Azure 服务。在测试中,由于有数十亿个查询,因此无法测试所有可能的输入查询,结果可能会错过一些关键的查询。监控和测试只能在区域文件部署到实际系统中之后捕获错误。如果区域文件使用 CNAMES、DNAMES 和通配符,人工检查区域文件也可能不可行,因为人类更难理解它们的微妙交互。

GRooot 工具介绍

为了帮助 DNS 工程师防止 DNS 相关的中断,我们开发了 GRooot,它可以验证所有可能的 DNS 查询的相关属性或提供反例。DNS 工程师可以在部署区域文件之前使用 GRooot 来捕获其中的任何错误。GRooot 是一个开源的 DNS 区域文件静态验证工具,我们在 SIGCOMM 2020 的论文中介绍了它,该论文今年获得了最佳学生论文奖。GRooot 的端到端设计如图 1 所示。

GRooot 的功能

使用 GRooot,DNS 工程师可以主动识别许多 DNS 区域文件错误,例如:

- 重写循环:是否存在在我们的域名下的查询被循环重写 q1 → q2 → q3 → … → q4?

- 不存在的域名用于服务:是否存在某种执行序列最终会返回一个 NXDOMAIN 答案,针对已知的服务(例如,server.campus.edu)?

- 重写黑洞:是否存在在我们的域名下的查询最终被重写到某个不存在的域名,DNS 返回 NXDOMAIN?

- 外部名称服务器:是否存在在我们的域名下的查询被发送到非我们域名的名称服务器(如,campus.edu)进行解析?

- 外部重写:是否存在在我们的域名下的查询最终被重写到某个不存在的域名?

实际意义

GRooot 的引入对于运维和网络工程师来说具有重要的实际意义。它提供了一种在部署前验证 DNS 区域文件完整性和一致性的方法,从而减少了因配置错误导致的中断风险。通过自动化的静态验证,GRooot 可以帮助工程师在部署前发现潜在的问题,从而提高 DNS 服务的高可用性和可靠性。这对于维护大型网络和关键基础设施的稳定运行至关重要。

原文: APNIC Blog(2020-10-29)|编译自 APNIC Blog,事实以原文为准。

来源:APNIC Blog

返回列表