同一 BIND 区域中的公共和私有主机

Col*_*len 3 domain-name-system ip bind

对于我的特定设置,我可以控制 BIND 9 区域文件,例如example.com. 此区域中有多个主机,例如www.example.commail.example.com。我希望公共互联网能够像您期望的那样查询这些主机并检索它们的 IP。

是否可以将某些主机标记为“私有”,因为除了特定 IP 范围的用户之外,大多数公共互联网用户无法查询有关这些主机的信息?例如,我可以制作第三台主机,secret.example.com只能由该192.168.0.x范围内的用户查询吗?

我知道我可以在 BIND 中使用单独的区域来做到这一点,但这似乎并没有提供我所需要的。example.com在这种情况下,这里的关键是公共主机和私有主机都需要属于同一个父级。这也可以通过/etc/hosts少数私有机器上的文件来实现,但这样记录将无法集中管理。

这是可能的,还是我忽略了不同的解决方案?

Mat*_*att 8

是的, Bind 使用views做到这一点。一些详细的例子在这里这里

在named.conf中看起来像这样:

view "trusted" {
 match-clients { 192.168.23.0/24; }; // our network
  recursion yes;
  zone "example.com" {
   type master;
   // private zone file including local hosts
   file "internal/master.example.com";
  };
  // add required zones
 };
view "badguys" {
 match-clients {"any"; }; // all others hosts
 // recursion not supported
 recursion no;
 };
 zone "example.com" {
   type master;
   // public only hosts
   file "external/master.example.com";
  };
  // add required zones
 };
Run Code Online (Sandbox Code Playgroud)

为了使管理更容易,我通常采用的一个技巧是简单地将内部文件$INCLUDE 包含在外部文件中 —— 只是不要忘记 SOA。

作为最后的警告,不要假装这只是橡皮鸡安全(并不是说这有什么问题)。