Я пытаюсь создать настройку master / slave с помощью NSD. У меня НСД установлен на двух серверах. Серверы работают отлично; когда я выполняю обычные запросы DNS, они возвращают информацию из файлов зоны. Однако когда я пытаюсь nsdc notify
на главном устройстве подчиненное устройство не воспринимает новую конфигурацию зоны.
Файл nsd.conf на мастере выглядит так:
## NSD authoritative only DNS
#
server:
logfile: "/var/log/nsd.log"
port: 53
server-count: 1
ip4-only: yes
hide-version: yes
identity: ""
zonesdir: "/etc/nsd3"
verbosity: 3
zone:
name: domain.com
zonefile: www.domain.com.forward
notify: <ip slave> NOKEY
provide-xfr: <ip slave> NOKEY
nsd.conf на подчиненном сервере выглядит так:
## NSD authoritative only DNS
#
server:
logfile: "/var/log/nsd.log"
port: 53
server-count: 1
ip4-only: yes
hide-version: yes
identity: ""
zonesdir: "/etc/nsd3"
verbosity: 3
zone:
name: domain.com
zonefile: www.domain.com.forward
allow-notify: <ip master> NOKEY
request-xfr: AXFR <ip master> NOKEY
Файл зоны на главном сервере выглядит так:
$ORIGIN domain.com.
$TTL 86400 ; default time to live
@ IN SOA ns1.domain.com. admin.domain.com. (
2011010203 ; serial number
28800 ; Refresh
7200 ; Retry
864000 ; Expire
86400 ; Min TTL
)
NS ns1.domain.com.
MX 10 mailfilter.hostingprovider.com.
mail IN A <ip mailserver hostingprovider>
www IN A <ip master>
ns1 IN A <ip master>
ns2 IN A <ip slave>
newvalue IN A 8.8.8.8
* IN A <ip master>
Файл пересылки такой же на подчиненном сервере, за исключением строки с «новым значением» (значение, которое я хочу передать).
Если я выполню nsdc notify
на главном сервере в журналы подчиненного сервера попадает следующее:
[1487507948] nsd[26038]: info: Notify received and accepted, forward to xfrd
[1487507948] nsd[26037]: info: Handle incoming notify for zone domain.com
Однако похоже, что файлы зоны не получают обновлений. После уведомления я выполняю nsdc patch; nsdc rebuild; nsdc reload; service nsd3 restart
на подчиненном сервере, на всякий случай. Но это не меняет и файлы зоны.
Кроме того, если я выполню dig axfr @<master ip> domain.com
на подчиненном сервере я получаю хорошую передачу зоны.
Почему подчиненный сервер не обновляет файлы зоны?
Серийный номер зоны необходимо увеличивать после любых изменений.
Подчиненное устройство сначала проверяет, есть ли у него самая последняя зона перед попыткой передачи, в противном случае уведомление игнорируется. Обычной практикой является использование формы ГГГГММДДxx, где xx - младший номер версии. (если случайно установлено слишком большое значение, необходимо выполнить процедуру, чтобы снова уменьшить число)
В более поздних версиях nsd, где nsd-control
заменяет nsdc, команда transfer
можно использовать для попытки, или force_transfer
обновлять вне зависимости от смены серийника.