隔离 DNS 环境:最佳实践

隔离 DNS 环境:最佳实践

您能否分享您在隔离环境中使用 DNS 服务器的经验,以便为客户提供最佳性能?我正在考虑几个选项,每个选项都有其优缺点...

因此,假设我们有一个由我们安装和管理的本地 DNS 服务器环境(假设为 BIND)。它们对我们项目特定的所有区域都具有权威性。没有互联网访问。没有任何类型的私有根 DNS 服务器。没有连接到任何类型的根服务器的外部转发器。

我们的目标只是解析项目内部名称,绝不会解析任何外部名称。但在后一种情况下,要避免给客户造成延误。

到目前为止我看到了哪些选择?

  1. 默认情况下,如果我不配置任何转发器,BIND 将递归查询 Internet 根提示。因此,如果客户端查询外部内容,它们将获得很大的延迟,然后 SERVFAIL

  2. 我可以禁用递归 ( allow-recursion { none; };)。但这会产生一个奇怪的副作用。如果在客户端上定义了两个名称服务器,客户端将始终查询它们。因为如果一个服务器拒绝进行递归,客户端将尝试另一个服务器,希望那个服务器可能会这样做。如果另一个服务器暂时关闭,情况会变得更糟 - 它将导致延迟直至超时。因此,实际上,我们必须始终保持两个名称服务器正常运行以避免延迟。不太好的 HA。

  3. 我可以在我的 DNS 服务器上配置根区域,使其成为所有事实的来源。听起来像是黑客行为,但也许这是隔离环境的正确方法?

  4. 还有其他正确的方法吗……?

PS 只是想在这里澄清一点...我为什么还要费心进行外部查询?毕竟,如果某个客户端尝试解析google.com,那么客户端上肯定出了问题,因为无论如何都没有互联网访问。然而,在实践中,最大的问题不是正向查询,而是反向查询。许多客户端尝试对一些内部 IP 进行一些反向查找。如果这些 IP 没有在我的 DNS 上定义,它们将被视为外部查询,因此默认情况下将尝试转发或递归...似乎唯一的解决办法是保证绝对所有内部 IP 范围都在我的 DNS 上定义为in-addr.arpa.区域 - 这使我接近上面的解决方案 3。

我感谢您对此的专业知识!

答案1

选项 3 听起来不像是黑客攻击,而且您的 DNS 服务器作为所有真相的来源似乎与您的环境相匹配。再说一次,让自己成为整个 in-addr.arpa. 区域的权威也应该没问题——Hagen von Eitzen

这个答案(来自上面的评论)对我来说听起来最合乎逻辑。也就是说,我不必配置整个根区域,而是可以仅配置in-addr.arpa,从而使我的 BIND 仅对反向查询具有权威性。

相关内容