如何隔离 BIND9 名称服务器

如何隔离 BIND9 名称服务器

我想暂时隔离一个名称服务器。

我遇到了公共视图区域无法正确复制到辅助名称服务器 (ns2) 的问题,因此我将辅助名称服务器脱机。主名称服务器 (ns1) 会正确地为来自公共位置的查询提供公共 IP,但辅助名称服务器会错误地为来自公共位置的相同查询提供私有 IP。我有一个可能的解决方案,但在生产 DNS 服务器中实施它时,当我第一次打开辅助服务器时,我希望它不可查询或查询,除非我进行测试。

服务器是运行 BIND 9.11.4 的 Linux。

  • 注释掉所有名称服务器上的区域文件中的“IN NS ns2.example.com”行就足够了吗?
  • 或者我必须到处去注释掉 /etc/resolv.conf 中的 ns2 地址?
  • 还有其他方式将地址信息泄露到外界吗?

感谢您的精彩建议,我特别喜欢防火墙的想法。但是,由于我已经用以下代码注释掉了 ns2 条目:

sudo sed -i -e 's/IN NS ns2.example.com/;; &/' nam*

我继续这样做。此外,防火墙的想法会使测试更加费力,因为很多测试都是在防火墙之外进行的,我必须在防火墙规则中打洞,而且我必须弄清楚这是否会对从任何生产服务器进行测试造成问题。然后撤消更改将是:

sudo sed -i -e 's/;; IN NS ns2.example.com/IN NS ns2.example.com/' nam*

最初我以为我必须更新区域序列才能使 NS 列表中的更改传播,但只需重新加载就足以改变它。

对另一条评论发表评论,我确实使用 TSIG 密钥进行复制配置。我打算在另一篇帖子中询问我的复制问题。我能够修复复制问题,但这有点像黑客行为,我想修复根本问题。

答案1

如果您想要ns2.example.com从 DNS 角度将记录从轮换中移除,则必须NS从区域本身和授权中删除该记录(通过您的注册商)。然后等待缓存过期。

考虑到这一点,如果您需要立即执行此操作和/或这只是短暂的中断,那么最好在进行更改和验证结果时阻止防火墙中的流量。
(如果将发生长时间中断,您可能需要将两者结合起来,否则替代方案是继续提供不正确的数据,直到缓存NS数据过期。)


关于结合视图进行区域传输的原始问题,我建议使用 TSIG 密钥来匹配视图,而不是基于 IP 的匹配。

例如,在具有主区域的服务器上有如下内容:

view "internal" {
  match-clients { !key external; key internal; 10.0.1/24; };

  ...
};

view "external" {
  match-clients { !key internal; key external; any; };

  ...
};

internal然后,您可以使用键或键选择要访问的视图external,而无需考虑 IP 地址。
这是在多视图设置中促进区域传输的一种非常典型的方式。

相关内容