Назад | Перейти на главную страницу

Передача зоны DNS (NSD) не работает

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