Как настроить сервер имен BIND 9 в качестве слейва для зоны, которая существует в нескольких представлениях?

Вопрос или проблема

У меня настроен скрытый основной сервер Bind9 с представлениями, и мне нужен вторичный сервер для передачи всех представлений одной зоны. Пример:

На основном:

view "dmz-view" {
        match-clients { server-dmz; };
        allow-transfer { transfer-dmz; };
        recursion yes;
        allow-query-cache { server-dmz; };
        zone "example.com" IN {
                type master;
                file "/var/cache/bind/db.dmz.example.com";
                notify yes;
        };
};
view "untrust-view" {
        allow-query { any; };
        allow-transfer { transfer-untrust; };
        recursion no;
        zone "example.com" IN {
                type master;
                file "/var/cache/bind/db.untrust.example.com";
                notify yes;
        };
};

Теперь моя проблема в том, что если я добавлю IP вторичного сервера в оба списка acls (transfer-dmz и transfer-untrust), он попадет в первое представление и передаст только его. Я прочитал примеры 3,4 в https://kb.isc.org/docs/aa-00851, но это кажется не подходит под мои нужды (или я что-то не так понимаю?)

Я также прочитал https://flylib.com/books/en/2.684.1/setting_up_a_slave_name_server_for_a_zone_in_multiple_views.html, но так как это старая информация, я предполагаю, что она устарела.

Есть ли какие-либо рекомендации или советы?

Хорошо, как было сказано в комментариях: после некоторых усилий я смог использовать ключи в acl для корректного назначения передачи зон с их представлениями.

Ответ или решение

Конфигурация BIND 9 в качестве резервного сервера для зон, которые существуют в нескольких представлениях, может быть непростой задачей, но с правильным подходом это вполне выполнимо. В вашем случае необходимо учесть, как организовать передачу зон между Master и Slave серверами так, чтобы оба представления передавались корректно. Давайте рассмотрим последовательность необходимых шагов.

Шаг 1: Определите ACL (Access Control Lists)

Первым делом, в вашем основном сервере BIND необходимо определить ACL для каждого из представлений, которые контролируют доступ к зонным передача. Поскольку вы хотите, чтобы резервный (Slave) сервер мог получать данные обо всех представлениях, создайте две отдельные ACL для передачи зон:

acl "transfer-dmz" {
    <IP-адрес_вашего_slave_сервера>;
};

acl "transfer-untrust" {
    <IP-адрес_вашего_slave_сервера>;
};

Шаг 2: Настройте представления и зоны на основном сервере

Ваши представления и зоны на основном сервере BIND могут выглядеть следующим образом. Убедитесь, что вы добавили разрешения на передачу для вашего резервного сервера:

view "dmz-view" {
    match-clients { server-dmz; };
    allow-transfer { transfer-dmz; };
    recursion yes;
    allow-query-cache { server-dmz; };

    zone "example.com" IN {
        type master;
        file "/var/cache/bind/db.dmz.example.com";
        notify yes;
    };
};

view "untrust-view" {
    allow-query { any; };
    allow-transfer { transfer-untrust; };
    recursion no;

    zone "example.com" IN {
        type master;
        file "/var/cache/bind/db.untrust.example.com";
        notify yes;
    };
};

Шаг 3: Настройка резервного сервера

На вашем резервном сервере BIND вам нужно настроить зоны как «slave». Это делается следующим образом:

zone "example.com" IN {
    type slave;
    file "slaves/db.example.com";
    masters { <IP-адрес_вашего_primary_сервера>; };
};

Шаг 4: Настройка ключей и дополнительных ACL

Если вы столкнулись с ситуацией, когда один и тот же IP-адрес соответствует нескольким ACL, и вам нужно иметь возможность передавать данные из всех представлений, лучшим решением будет настройка криптографических ключей (TSIG):

key "zone_transfer_key" {
    algorithm hmac-sha256;  # выберите нужный алгоритм
    secret "<секретный_ключ>";
};

acl "transfer-dmz" {
    key "zone_transfer_key";
};

acl "transfer-untrust" {
    key "zone_transfer_key";
};

Теперь вы можете использовать ключи в ваших ACL, что позволит вашему резервному серверу обращаться к обоим представлениям без конфликтов.

Шаг 5: Настройка конфигурации на резервном сервере

На резервном сервере установите TSIG ключ для обращения к основному серверу:

key "zone_transfer_key" {
    algorithm hmac-sha256;
    secret "<секретный_ключ>";
};

zone "example.com" IN {
    type slave;
    file "slaves/db.example.com";
    masters { <IP-адрес_вашего_primary_сервера>; };
    notify yes;
    allow-transfer { key "zone_transfer_key"; };
};

Заключение

Следуя этим шагам и рекомендациям, вы сможете настроить BIND 9 в качестве резервного сервера для зон, которые существуют в нескольких представлениях. Важно тестировать вашу конфигурацию, чтобы убедиться, что зоны передаются корректно, и ваши представления функционируют, как ожидалось. Не забывайте о важности безопасности, обеспечьте правильную работу ACL и ключей для защиты передачи данных.

Если вы столкнетесь с дополнительными проблемами, уточните конфигурацию журналов BIND, чтобы убедиться, что ошибки не остаются незамеченными. Удачи в настройке!

Оцените материал
Добавить комментарий

Капча загружается...