Я потратил много часов на решение своей проблемы, но так и не сделал того, что было нужно для ее устранения. Я предполагаю, что проблема связана с правами доступа к файлам. Я хотел проверить передачу зоны с главного сервера с помощью этой команды:
dig ns.insec -t axfr
Вот сообщение об ошибке от главного сервера
Mar 16 03:49:30 ip-172-31-22-11 named[5395]: client 127.0.0.1#37251
(ns.insec): zone transfer 'ns.insec/AXFR/IN' denied
Вот named.conf.options
файл:
acl "trusted" {
localhost;
172.31.0.0/20;
localnets;
};
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
8.8.8.8;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
forward only;
allow-query-cache { trusted; };
allow-query { trusted; };
allow-recursion { trusted; };
recursion yes;
allow-transfer { 172.31.31.48; 127.0.0.1; };
//also-notify { trusted; };
};
Вот мой named.conf.local
файл:
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "ns.insec" {
type master;
file "/etc/bind/zones/db.ns.insec";
allow-transfer { 172.31.31.48; };
also-notify { 172.31.31.48; };
};
// 172.31.31.48 is the IP for slave
// 172.31.22.11 is the IP for the master
zone "22.31.172.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.172.31.22";
allow-transfer { 172.31.31.48; };
also-notify { 172.31.31.48; };
};
Вот снимок разрешения файла с главного сервера, он такой же, как и для подчиненного сервера:
N:BI может dig ns.insec -t axfr
работать с подчиненного сервера, но не с главного сервера.
решение1
Глобальное объявление любой опции (в options
) может быть перезаписано локальным объявлением (например, в zone
, view
) той же опции.
То же самое происходит и в вашем случае.
У вас есть глобальная опция allow-transfer { 172.31.31.48; 127.0.0.1; };
, которая перезаписывается объявлением в определении зоны zone "ns.insec"
как allow-transfer { 172.31.31.48; };
. Поэтому вы не сможете перенести зону на localhost.
zone "ns.insec"
Чтобы решить эту проблему, сделайте следующее объявление:
allow-transfer { 172.31.31.48; 127.0.0.1; };
Или, если вы хотите использовать глобальную директиву (что не всегда является хорошей идеей), удалите allow-transfer
директиву из zone "ns.insec"
определения.