У меня есть главный DNS-сервер (BIND9, IP 172.23.129.24), настроенный для указания зоны пересылки на другой главный сервер, настроенный для служб DDNS. Эта директива находится в файле /etc/ named.conf.
zone "forward.example.com" {
type forward;
forwarders {172.23.129.130;};
};
На сервере 172.23.129.130 моя конфигурация имеет следующую зону (и настройки omapi-key в других разделах):
zone "forward.example.com" {
type master;
file "/var/named/forward.example.com.hosts";
allow-update {
key omapi-key;
172.23.129.21;
172.23.129.22;
};
};
Файл зоны "forward.example.com" выглядит следующим образом:
$ORIGIN .
$TTL 38400 ; 10 hours 40 minutes
forward.example.com IN SOA ns.example.com. myemail.example.com. (
1486523615 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
38400 ; minimum (10 hours 40 minutes)
)
NS ns.example.com.
$ORIGIN ns.example.com.
$TTL 3600 ; 1 hour
first-host A 172.17.7.5
TXT "ID_STRING"
...etc.
Когда я добавляю запись вручную (после первого замораживания зоны, а затем размораживания с момента ее динамического изменения), она появляется, и я могу разрешить ее, настроив сервер с зоной пересылки с помощью dig:
dig @172.23.129.130 manual-entry.forward.example.com
Это сработает успешно, и я получаю ответ. Однако, если я сделаю то же самое для основного сервера, который перенаправляет, то он не работает:
dig @172.23.129.24 manual-entry.forward.example.com
; <<>> DiG 9.8.3-P1 <<>> manual-entry.forward.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 65339
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;manual-entry.forward.example.com. IN A
;; AUTHORITY SECTION:
manual-entry.forward.example.com. 3474 IN SOA ns.example.com. myemail.example.com. 1486523594 10800 3600 604800 38400
;; Query time: 47 msec
;; SERVER: 172.23.129.24#53(172.23.129.24)
;; WHEN: Fri Dec 15 22:37:49 2017
;; MSG SIZE rcvd: 107
В то же время использование "dig" для таргетинга на другие записи в зоне "forward.example.com" работает нормально. Я применил зону, перезапустил BIND и множество других попыток перезагрузить зону. В файле показаны записи, и сервер, на который нацелена команда dig, должен просто пересылать все запросы для домена "forward.example.com" второму серверу. В некоторых случаях это происходит, в других - нет, и это меня несколько озадачивает. Есть какие-нибудь предложения, где искать?
Вы можете настроить это как slave
зона, а не зона пересылки. Это потребует, чтобы основной сервер разрешил передачу зоны этой зоны от подчиненного. Вы также можете настроить основную зону для уведомления подчиненной зоны при изменении зоны.
Для домена есть два значения кеширования. Для положительных совпадений время кеширования может быть установлено для каждого домена, но обычно по умолчанию оно равно значению, указанному в строке $ TTL. Для отрицательных совпадений bind использует минимальное значение max-ncache-ttl (по умолчанию 3 часа) и минимальное значение из записи SOA.
Если вы не выполняете поиск домена до загрузки основного, домен пересылки должен перенаправить запрос, найти его и кэшировать.