不确定标题是否适合这个问题,请随意编辑,谢谢
我正在使用 bind9 作为我的小型办公网络的内部缓存 DNS 服务器,我有一个可以解析地址的设备(这是一个运行 squid 3.1 的代理服务器),所有其他设备对于任何查询都会返回 IP 192.168.1.99,这是通过此 named.conf.local 文件实现的:
view "Allowed" {
match-clients { 192.168.1.99; 127.0.0.1; };
recursion yes;
zone "webb.local" {
type master;
allow-query { any; };
file "/etc/bind/master/webb.local";
};
};
view "Blocked" {
match-clients { any; };
recursion no;
zone "." {
type master;
file "/etc/bind/master/db.catchall";
};
};
我现在想要做的是允许“阻止”视图正确解析一组选定的域名,即那些结尾“meraki.com”,但对于所有其他地址,他们仍会获取 192.168.1.99(如“/etc/bind/master/db.catchall”中所定义)。我猜这可以通过“match-destination”来实现,但我找不到有关如何使用此功能的任何文档。
非常感谢大家的帮助!
答案1
您当前针对 BIND 的 DNS 防火墙策略有点落后,因为您正在窃取根区域的权限。在这种情况下,让直通工作相当困难;没有“白名单”功能允许您重新启用特定 DNS 记录的递归。该解决方案无法扩展,因为您不得不在所有情况下手动更新信息:
- 您可以为您管理的每个内部域设置一个
forwarder
声明,因为有理由相信您的名称服务器 IP 不会在没有警告的情况下发生变化。forwarder
对您不管理的域使用 不是一个好主意,因为名称服务器可能随时发生变化。 - 另一种解决方案是静态定义您想要在区域中复制的所有 DNS 记录
.
。这种方法无法扩展,因为远程方可能会随时更改这些 DNS 记录,或者向其站点添加需要您尚未复制的 DNS 记录的内容。
我的建议是,您考虑放弃这种方法,转而使用 RPZ。以下问答可以帮助您入门:将 BIND9 设置为 DNS 防火墙
如果您使用 RPZ,您需要查找的白名单术语是;请记住使用通配符 ()rpz-passthru
将域顶部 () 及其下方的所有记录列入白名单。example.com
*.example.com