对于我的特定设置,我控制了一个 BIND 9 区域文件,例如example.com
。此区域中有多个主机,例如www.example.com
和mail.example.com
。我希望公共互联网能够查询这些主机并检索它们的 IP,正如您期望的那样。
是否可以将某些主机标记为“私有”,即大多数公共互联网用户无法查询有关这些主机的信息(特定 IP 范围的用户除外)?例如,我是否可以设置第三个主机,仅供secret.example.com
该范围内的用户查询192.168.0.x
?
我知道我可以在 BIND 中使用单独的区域来实现这一点,但这似乎不能满足我的需求。这里的关键是,example.com
在这种情况下,公共主机和私有主机都需要属于同一父级。这也可以通过少数私有机器上的文件来实现/etc/hosts
,但这样记录就无法集中管理了。
这可能吗,还是我忽略了不同的解决方案?
答案1
是的,Bind 会这样做视图. 一些详细的例子是这里和这里。
在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
};
为了简化管理,我通常会使用的一个技巧是简单地将内部文件$INCLUDE外部文件——不要忘记 SOA。
最后要提醒的是,不要假装这只不过是“橡皮鸡安全”而已(并不是说这有什么不对)。