TLD DNS 服务器如何处理如此多的区域文件更新?

TLD DNS 服务器如何处理如此多的区域文件更新?

我一直想知道(例如 .com)顶级域名的 DNS 基础设施是如何设计的。它不仅必须能够保持高水平的可靠性,还必须支持对记录进行大量实时更新。

我认为 ISC 的 BIND 就是用于该级别的。我对如何使用 BIND 构建可扩展的基础设施有一个相当清晰的认识。我不清楚的是,如何设计一个可以每隔几秒钟处理数百个 DNS 区域的添加、删除和更改的系统。世界上有无数的域名注册商,仅 .com 就可能看到大量的活动。基于 BIND 区域文件构建的系统如何扩展到如此大的变化?

我怀疑 TLD 运营商是否使用文本文件,并且每次注册新的 .com 时都不断让 BIND 重新加载更改,我这样做对吗?如果是这样,他们会怎么做?它是由 SQL 或 LDAP 数据库支持的吗?它甚至可以扩展吗?

答案1

首先,你真的认为每秒的更新次数比信用卡交易次数还要多吗?最终只有 2 到 3 家公司负责管理?这些公司都有效,所以这是一个可以解决的问题 :-)

其次,您可能对更新是如何发生的感到困惑,因为这是一个不常被理解的部分,两个层面相交:注册层面和发布层面。您可能还会对注册名称服务器上究竟发生了什么感到困惑(仅维护NS域名委托的记录,而不是这些区域的全部内容)。

但在深入讨论之前,您似乎还假设更新应该是实时的,但实际上它们并不需要实时更新,而且通常也不是。由于 TTL,DNS 中没有任何东西是实时的。

回到你的两架飞机:

  • 当名称服务器发生更改或执行其他对 DNS 有副作用的操作(例如:设置 EPPclientHold状态)时,注册商会向注册中心发送更新;这是注册层面,与 DNS 发布完全不相关,通常使用称为 EPP 的协议;当注册中心回复“更新已接受”时,绝对不意味着它已在其 DNS 基础设施上发布,它只是保证“它将在某个时间点发布”
  • 注册机构维护 DNS 发布平面,确保其名称服务器确实NS为所有委派(即在其管理的 TLD 下注册的所有域名)发布了正确的记录。

因此,更改的数量可能比您想象的要少得多:如果所有者.com使用新记录更改其区域的内容,在大多数情况下,注册商无需执行任何操作,并且注册中心权威名称服务器也不会发生任何变化。

而且这些更改不会通过 DNS 更新机制发生。更改由注册商使用特定协议 EPP 推送,更改以某种方式存储在某个注册数据库中,之后注册中心会在其权威名称服务器上发布新数据。

您似乎还认为“实时”是强制性的。但事实并非如此,至少从技术上讲并非如此,甚至可能设计得不合理(考虑一下您是否想测试新的更改是否有意义,因为有些注册机构正在通过检查名称服务器是否正确配置以解析它们即将被列为权威的名称,或者进行 DNSSEC 测试等...)。

许多注册中心使用一种典型的设置方式,提供诸如“10 分钟更新延迟”或“1 小时”之类的服务,即在某个内部缓冲区中存储给定时间段内请求的所有更改,然后一次性生成新区域并发布它,同时启动一个新缓冲区来收集下一时间段内将发生的所有更改。

我认为 ISC 的 BIND 在该级别使用。

完全不是。Verisign 运行着自己的专有域名服务器软件,名为 Atlas。例如https://www.enterpriseappstoday.com/news/verisign-accelerates-dns.html 请注意,2004 年的这篇文章中已经提到:

VeriSign 命名和目录服务 (VNDS) 承诺在不到五分钟的时间内更新核心的 13 个 .com 和 .net 权威名称服务器。当前更新速度约为每天两次。

当然,自那以后情况有所改善。但我相信,即使每 5 分钟一次,对于 DNS 的任何实际使用来说也已经足够好了。

还可能存在合同义务,特别是对于与 ICANN 签订合同的 gTLD 注册机构和注册商而言。当前的 Verisign-ICANN 合同如下:https://www.icann.org/en/registry-agreements/details/com 您可以在附录第 6.6 节中找到https://www.icann.org/en/registry-agreements/com/com-registry-agreement-appendix-7-1-12-2012-en更新约束的详细信息:

6.6 更新频率。注册运营商会及时更新 DNS 名称服务器和 Whois 上的数据。ICANN 认可的注册商通过 SRS 记录这些更新。然后,SRS 会更新 DNS 名称服务器和 Whois。注册运营商会近乎实时地处理这些更新。

对于 DNS 名称服务器和 Whois 的更新频率,承诺的性能规范是每月时间范围内 95% 的交易在 3 分钟内完成。也就是说,每月时间范围内 95% 的 DNS 名称服务器和 Whois 更新将在 3 分钟内完成。更新频率是从注册管理机构确认更新的时间到更新出现在 DNS 名称服务器和 Whois 中的时间。更新频率性能将根据附录 4 每月向 ICANN 报告。

请注意,很多 SLA 都使用“95%”作为标记。因此,在可行的情况下,它接近实时,但实际上通常为 3 分钟(因此上面描述了典型的缓冲区设置)。

我对如何使用 BIND 构建可扩展的基础设施有一个相当清晰的认识。我不清楚的是,如何设计一个可以每隔几秒钟处理数百个 DNS 区域的添加、删除和更改的系统。

Verisign 只有几个区域:.com、、.net一些 IDN 等。他们不管理“数百个区域”。当然也不是每秒都发生大量变化的数百个区域。

您可能/希望对托管数百万个区域且可能更新频率较高的 DNS 提供商更感兴趣。以下是 CloudFlare 的一篇文章,他们解释了他们在权威 DNS 服务方面所做的性能工作:https://blog.cloudflare.com/how-we-made-our-dns-stack-3x-faster/

世界上有无数的域名注册商

不,不是全部。远非数不胜数。实际上不到 2000 个,而且可能只有 500 个真正活跃且变更量很大的。所有 gTLD 注册商都必须获得 ICANN 的认可。您可以在以下网址找到完整的列表https://www.icann.org/en/accredited-registrars

我怀疑 TLD 运营商是否使用文本文件并且每次注册新的 .com 时都不断让 BIND 重新加载更改,这对吗?

任何理智的高级事务名称服务器软件都不会由文本文件支持。甚至 Bind 也不支持:启用动态更新后,您将拥有一个“日志”文件(二进制文件),并且您尤其不应该编辑区域的文本文件版本(除非先冻结更新,然后在编辑后再次允许它们)。

如果是的话,他们会做什么?它是 SQL 还是 LDAP 数据库?它是否可以扩展?

我怀疑 SQL 或 LDAP 是否是 DNS 的良好存储引擎。请记住,DNS 本质上是分层的,这会带来各种限制。

答案2

首先,在某些情况下您不必立即重新加载。

如果您的 SLA 规定“付款给我们,您将在 X 小时内注册您的域名”,您甚至可以使用一些 cron 作业或类似程序定期重新加载。因此,一些注册商可能使用平面文件并定期重新加载。

请记住,您可以将多个 DNS 服务器关联到同一个 IP 地址(例如,使用任播),因此您甚至可以设置“滚动部署”机制,该机制在所有地方更改平面文件并一次重新加载一个 DNS 服务器。

话虽如此,Bind >9 支持 DLZ(动态可加载区域),这实际上允许 Bind 使用数据库作为区域数据后端。只要您的数据库拥有有效的 DLZ 驱动程序,就可以根据经典的数据库扩展策略扩展数据库(和数据库连接)。

最后,正如一条评论所说,垂直扩展(即每台服务器拥有大量的 CPU、RAM 和 IOPS)会有所帮助。

2009 年南非国家石油公司你可能会觉得下面这张幻灯片很有趣,尽管它显然有点过时:https://www.sanog.org/resources/sanog14/sanog14-devdas-dns-scalability.pdf

相关内容