我想从 acl 中排除一些 IP,例如:
acl "exclude" {
192.168.1.1;
192.168.1.2;
192.168.1.3;
};
acl "internal" {
192.168.1.0/24;
!exclude;
};
这不起作用,我认为这是因为排除 acl 中包含的 IP 包含在整个范围内。
答案1
您必须在要排除的 IP 前添加“!”。如果您要从“排除”acl 中排除所有 IP,请将其更改为:
acl "exclude" {
!192.168.1.1/24;
!192.168.1.2/24;
!192.168.1.3/24;
};
答案2
BIND ACL 使用“首次匹配”逻辑,而不是“最佳匹配”。您的“内部”ACL 无法按预期工作,因为第一的地址元素与您想要排除的所有地址匹配,然后是接下来的所有内容(即 !exclude;
元素)被忽略。
您只需切换顺序即可,如下所示:
acl "internal" {
!exclude;
192.168.1.0/24;
};
这一问题在官方 BIND 9.11 管理员参考手册,第 7.1 节有关正确实施 ACL 的安全注意事项。