Я хотел бы исключить некоторые IP-адреса из ACL, например:
acl "exclude" {
192.168.1.1;
192.168.1.2;
192.168.1.3;
};
acl "internal" {
192.168.1.0/24;
!exclude;
};
Я думаю, это не работает, потому что IP-адреса, содержащиеся в exclude acl, содержатся во всем диапазоне.
BIND ACL использует логику «первого совпадения», а не «наилучшего совпадения». Ваш "внутренний" ACL не работает должным образом, потому что первый элемент адреса соответствует всем адресам, которые вы хотите исключить, а затем все последующее (т.е. !exclude;
элемент) игнорируется.
Вам просто нужно поменять порядок следующим образом:
acl "internal" {
!exclude;
192.168.1.0/24;
};
Именно этот вопрос обсуждается в официальное справочное руководство для администраторов BIND 9.11в разделе 7.1, посвященном соображениям безопасности для правильно реализованных списков контроля доступа.
Вы должны поставить "!" перед IP-адресами, которые вы хотите исключить. Если вы хотите исключить все IP-адреса из "exclude" acl, измените его на следующее:
acl "exclude" {
!192.168.1.1/24;
!192.168.1.2/24;
!192.168.1.3/24;
};