![DNS 托管设计 - 辅助服务器不应分布在各个国家、网络等?](https://linux22.com/image/711297/DNS%20%E6%89%98%E7%AE%A1%E8%AE%BE%E8%AE%A1%20-%20%E8%BE%85%E5%8A%A9%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8D%E5%BA%94%E5%88%86%E5%B8%83%E5%9C%A8%E5%90%84%E4%B8%AA%E5%9B%BD%E5%AE%B6%E3%80%81%E7%BD%91%E7%BB%9C%E7%AD%89%EF%BC%9F.png)
我的 DNS 注册商和 DNS 提供商最近发生了长时间中断,导致我的所有域名都无法使用(电子邮件、自己的+客户网站等)。
他们有 3 个 DNS 服务器,都位于同一个共同托管设施中!
我对网络的了解足以让我产生蜘蛛感应,但还不足以谴责这种做法。这难道不是一个糟糕的设计吗?
它们难道不应该跨线路、跨网络,甚至跨大陆传播吗?
答案1
不要过于看重地理 IP 注册,仅仅因为像 hover(可能是一个坏例子)或 cloudflare(完美例子)这样的服务有一小段 IP 地址列表,并不代表其规模。
例如,8.8.8.8 在 bgp 中通过任播向多个接入点 (PoP) 进行广播,但对您来说,这是一个单一 IP,因此也是一个单点故障,并不能说明全部情况。
使用 lg.he.net hover 专门查看这些 IP 并不能做到这一点。
答案是,他们应该这样做,但他们没有这样做,但列出 3 个名称服务器并不一定是问题所在。
此外,Google 有 4 个名称服务器,每个服务器都有自己的 /24 任播,并被包裹在 /23 单播中,以实现网络故障回复。
以下是一个例子谷歌的第一个名称服务器,ns1.google.com
哎哟,不太好,胡佛可能有 (2) 条到同一个网络的路由,而谷歌可能有多条到多个具有相同公告 IP 的 PoP 的路由。
我建议研究一下 cloudflare、NS1 或其他众多供应商...如果该区域对您确实很重要,则使用多供应商和/或运行您自己的从属设备。
答案2
无需了解这个特定操作员的设置细节(我不熟悉),这个一般问题的答案就很清楚了。
DNS 在设计时就考虑到了冗余度(该协议具有内置功能,用于在服务器之间同步区域数据,只需添加多个 NS 记录即可原生支持多个权威名称服务器,大多数注册中心在委托您注册的域名时都要求至少两个名称服务器,等等)。
权威名称服务器之间保持多样性也是长期确立的最佳实践,无论是地理位置还是网络拓扑。
例如:RFC2181 - 辅助 DNS 服务器的选择和操作(又名 BCP16,因为收到最佳实践1997 年的一份文件专门讨论了这一主题(英文:status)。
关于选择辅助服务器(即,完整的权威名称服务器应该是什么样的)在本文档中内容如下:
3.1. 选择辅助服务器
选择辅助服务器时,应注意各种可能的故障模式。服务器的放置位置应确保至少有一台服务器可供互联网所有重要部分使用,以应对任何可能的故障。
因此,将所有服务器都放在本地站点虽然便于安排和管理,但并不是一个好策略。如果一条链路发生故障,或者某个站点、甚至可能是建筑物或房间发生断电,这样的配置可能会导致所有服务器与互联网断开连接。
辅助服务器必须放置在互联网上拓扑和地理上分散的位置,以最大限度地降低单一故障导致所有服务器瘫痪的可能性。
也就是说,辅助服务器应位于地理上相距较远的位置,因此不太可能发生断电等事件同时中断所有服务器。它们还应通过相当不同的路径连接到网络。这意味着任何一个链接的故障,或网络某个部分(例如服务提供商)内的路由的故障都不会导致所有服务器都无法访问。
以上是一般 DNS 部署的最佳实践。显然,人们必须根据情况调整期望,但对于将这些服务作为其核心业务一部分的公司运营的大规模部署,上述做法确实很有意义。