С BIND 9, как я могу сопоставить клиентов в нескольких представлениях?

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

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

Это как-то возможно с 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; };
        };
};

2 ответа

Решение

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

Вы можете иметь все ваши представления, содержащие все определения зон, которые вы хотите обслуживать клиентам (в вашем примере, 192.168.1.200 должен быть только для "подросткового" acl, а представление "подростковый" будет иметь определение для обоих "детей". и "подростковые" зоны). Вы можете использовать команду "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-клиентов, что имеет пример.

Другие вопросы по тегам