Назад | Перейти на главную страницу

Как в BIND 9 сопоставить клиентов в нескольких представлениях?

BIND, похоже, просматривает файл конфигурации сверху вниз и назначает запросы первому совпадающему представлению на основе сопоставленных клиентов. В соответствии с http://www.zytrax.com/books/dns/ch7/view.html именно так это и должно работать.

В моей конфигурации могут быть другие представления, которые применимы к пользователю в конфигурации match-client, и я хотел бы как-то пропустить их. Если нет положительного результата (сверху вниз нормально), в идеале следует продолжить и проверить следующие представления.

Возможно ли такое с BIND? Вот пример. В приведенной ниже конфигурации пользователь из 192.168.1.100 или 192.168.200 перейдет только к первому представлению. Вместо этого я хочу, чтобы пользователь 192.168.1.200 также имел доступ ко второму представлению.

acl "kids" {
        192.168.1.100;
        192.168.1.200;
};

view "kids"{
        response-policy { zone "kids"; };
        match-clients { kids; };
        recursion yes;
        zone "kids" {
                type master;
                file "kids.db";
                allow-query { none; };
        };
};

acl "teens" {
        192.168.1.200;
};

view "teens"{
        response-policy { zone "teens"; };
        match-clients { teens; };
        recursion yes;
        zone "teens" {
                type master;
                file "teens.db";
                allow-query { none; };
        };
};

Это невозможно сделать так, как вы хотите. Сопоставление просмотра останавливается при первом совпадении, а вне представлений может существовать только один набор записей по умолчанию. Клиент может соответствовать только одному набору зон.

У вас может быть, чтобы все ваши представления содержали все определения зон, которые вы хотите обслуживать клиентам (в вашем примере, 192.168.1.200 должен быть только в acl "teens", а представление "teens" будет иметь определение для обоих "kids" и «подростковые» зоны). Вы можете использовать команду "include", чтобы избежать ненужного дублирования, но это все.

Совершенно возможно ...

acl "kids" {
        192.168.1.100;
};

view "kids"{
        response-policy { zone "kids"; };
        match-clients { kids; };
        recursion yes;
        zone "kids" {
                type master;
                file "kids.db";
                allow-query { none; };
        };
};

acl "teens" {
        192.168.1.200;
};

view "teens"{
        response-policy { zone "teens"; };
        match-clients { teens; };
        recursion yes;
        zone "teens" {
                type master;
                file "teens.db";
                allow-query { none; };
        };
        zone "kids" {
                type master;
                file "kids.db";
                allow-query { none; };
        };
};

для ваших рабов вам нужно использовать tsig и исключить ваших рабов из просмотров, см. Как привязка обрабатывает allow-notify и match-clients у которого есть пример.