Вопрос или проблема
У меня настроен скрытый основной сервер 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, чтобы убедиться, что ошибки не остаются незамеченными. Удачи в настройке!