Bind9 根据请求的域名查看匹配项

Bind9 根据请求的域名查看匹配项

不确定标题是否适合这个问题,请随意编辑,谢谢

我正在使用 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

相关内容