
Я заменяю сервер RHEL6, на котором, помимо прочего, работает bind/named, на сервер RHEL8. В рамках этого обновления версия bind обновилась с 9.8 до 9.11. Я ни в коем случае не мастер bind, но я по глупости подумал, что это должно быть простое обновление. К сожалению, я столкнулся с проблемой, которую едва понимаю, будучи лишь немного знакомым с bind. Видимо, больше нельзя иметь несколько представлений, указывающих на один и тот же доступный для записи файл? Это мешает запуску named.
Я немного погуглил и выяснил, что это действительно «правильная» реакция с момента выхода Bind 9.10, и что мне следует включить ссылки in-view, чтобы обойти это.
Вот фрагмент ошибок, которые я получаю...
Dec 03 16:45:51 server-1a bash[97204]: /etc/named/slave.zones:4: writeable file 'data/test.exampledomain.com.zone': already in use: /etc/named/slave.zones:4
Dec 03 16:45:51 server-1a bash[97204]: /etc/named/slave.zones:10: writeable file 'data/test2.exampledomain.com.zone': already in use: /etc/named/slave.zones:10
Dec 03 16:45:51 server-1a bash[97204]: /etc/named/slave.zones:16: writeable file 'data/test3.exampledomain.com.zone': already in use: /etc/named/slave.zones:16
Я надеюсь, что кто-то обладает талантом и желанием помочь мне обновить мою конфигурацию соответствующим образом, поскольку я запутался.
Вот (анонимная) часть моего файла named.conf, которую, как я считаю, нужно обновить. Какие мысли?
view "localhost_resolver" {
match-clients { localhost; };
allow-query { localhost; };
allow-recursion { localhost; };
recursion yes;
include "/etc/named/root.hints";
include "/etc/named.rfc1912.zones";
include "/etc/named/slave.zones";
include "/etc/named/forwarder.zones";
};
view "abc_clients" {
response-policy { zone "abc"; };
match-clients { 1.2.3.4/24; };
allow-query { 1.2.3.4/24; };
allow-recursion { 1.2.3.4/24; };
recursion yes;
include "/etc/named/abc.conf.local";
include "/etc/named/root.hints";
include "/etc/named/slave.zones";
};
view "trusted_resolver" {
match-clients { 1.9.0.0/21;1.8.0.0/21;1.7.0.0/24;1.6.0.0/21; };
allow-query { trusted; };
allow-transfer { "none"; };
allow-recursion { trusted; };
recursion yes;
include "/etc/named/root.hints";
include "/etc/named/slave.zones";
include "/etc/named/forwarder.zones";
};
view "default" {
match-clients { any; };
allow-transfer { "none"; };
recursion no;
};
решение1
У вас есть подчиненные зоны, использующие одни и те же файлы резервных зон в нескольких представлениях. Это недопустимо, поскольку соответствующие определения подчиненных зон будут по отдельности передавать зону и записывать содержимое в тот же файл (что небезопасно).
Вместо этого вы можете использоватьin-view
опция зоны для отображения существующей зоны из одного представления в другом представлении.
Это может выглядеть примерно так (пример взят из документации):
view internal {
match-clients { 10/8; };
zone example.com {
type master;
file "example-external.db";
};
};
view external {
match-clients { any; };
zone example.com {
in-view internal;
};
};