DNS сайта LinuxBIND9DNS

BIND9: secondary zone не обновляется после изменения primary

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Перед исправлением сравните авторитетные SOA у обоих серверов и отдельно посмотрите TCP/53, разрешение transfer, NOTIFY и IP источника. Нельзя открывать копирование зоны для всех адресов, чтобы временно убрать ошибку.

В этой статье
  1. Что произошло и как распознать неисправность
  2. Причины и отличительные признаки
  3. Пошаговая диагностика и исправление
  4. Как проверить результат и что делать при неуспехе

#Что произошло и как распознать неисправность

На основном DNS-сервере появились новые A, MX или TXT-записи, но вторичный BIND9 отдаёт прежний результат. Служба secondary работает, однако SOA serial отстаёт либо совпадает при несовпадающих данных. Это проблема передачи зоны или порядка обновления, а не обязательно кеш браузера. Перед исправлением сравните авторитетные SOA у обоих серверов и отдельно посмотрите TCP/53, разрешение transfer, NOTIFY и IP источника. Нельзя открывать копирование зоны для всех адресов, чтобы временно убрать ошибку.

#Причины и отличительные признаки

Возможная причинаКак узнатьЧто делать
У primary не увеличен SOA serialНовая запись сохранена в редакторе, но зона не получила нового серийного номера.Primary и secondary имеют одинаковый serial, однако данные различаются.Выполнить корректное обновление и увеличить serial.
Запрещён AXFR/IXFRВ allow-transfer нет IP вторичного сервера или не совпадает ключ TSIG.В журнале transfer failed, REFUSED или TSIG error.Разрешить передачу только известному secondary.
Нет связи TCP/53UDP запросы работают, передача по TCP фильтруется на маршруте.dig +tcp к primary с secondary не получает ответа.Проверить межсетевой экран и маршруты для конкретной пары серверов.
NOTIFY не приходитОжидание обновления зависит от SOA REFRESH, а адрес secondary не настроен в оповещениях.После изменения primary зона обновляется лишь спустя время или вручную.Проверить notify, also-notify и разрешённых отправителей.

#Пошаговая диагностика и исправление

  1. Сравните SOA на обоих серверахС компьютера с dig выполните dig @ns1.example.com example.com SOA +short и dig @ns2.example.com example.com SOA +short. Замените имена на реальные, прочитайте число serial в каждом ответе. Если serial одинаковый, но запись различается, проверьте что запросы действительно доходят до нужных серверов и не попадают в разные view.
  2. Уточните, где находится основной источник зоныНа основном Linux-сервере откройте через SSH конфигурацию нужной зоны и найдите type primary, file, notify. На вторичном сервере — type secondary и primaries (или старое masters). Проверьте фактические IP, учёт IPv4/IPv6 и сетевую доступность. Не меняйте роль сервера в конфигурации без согласованной схемы делегирования.
  3. Проверьте доступность primary по TCP/53В терминале secondary выполните dig +tcp @192.0.2.10 example.com SOA, заменяя IP реальным primary. Успешный SOA через TCP подтверждает возможность обычного DNS-соединения TCP, но не разрешение копирования всей зоны. Если тайм-аут — проверьте firewall, NAT, маршрут и то, что named слушает нужный адрес; не открывайте TCP/53 всем источникам без необходимости.
  4. Прочитайте сообщения о transfer и NOTIFYНа secondary по SSH запустите sudo journalctl -u bind9 -n 100 --no-pager, а если служба именуется named, измените имя. Ищите строки transfer, not authoritative, refused, notifies и TSIG. Запишите время и IP. Отказ может исходить из allow-transfer на primary, отсутствующей зоны или неверного ключа, а не из настроек локального кеша.
  5. Проверьте передачу только к доверенному адресуНа primary просмотрите allow-transfer внутри нужной zone/view; с BIND9 новых выпусков по умолчанию передача может быть закрыта. При подтверждённом отказе внесите IP secondary или соответствующий ключ TSIG в список разрешений, сохраните копию файла и выполните sudo named-checkconf. Не используйте allow-transfer { any; }; на публичном сервере.
  6. Проверьте serial и оповещенияЗапросите SOA у primary после внесения новой записи. Если номер не вырос, первичный сервер не уведомит secondary о новой версии; исправьте serial исходной зоны. При сложной схеме проверьте notify и also-notify, а на secondary allow-notify. Отсутствие NOTIFY не всегда блокирует обновление навсегда: BIND также опрашивает по SOA refresh.
  7. Примените настройки и запросите обновлениеПосле резервной копии и успешной проверки синтаксиса перечитайте настройки нужного сервера командой sudo rndc reconfig или обновлённую основную зону sudo rndc reload example.com. На secondary при исправленной доступности допустим sudo rndc refresh example.com, который запрашивает состояние зоны у primary. Если rndc показывает ошибку, не редактируйте секреты TSIG по совету случайного сайта.
  8. Подтвердите совпадение данных и безопасный откатПовторно сравните SOA serial и значения изменённых записей при прямых запросах к каждому NS. Если переправка не работает, верните исходную конфигурацию по резервной копии, проверьте синтаксис и перечитайте её; запишите журнал и адреса серверов для диагностики. Не стирайте локальную копию secondary-зоны для принуждения к передаче: она может быть единственной доступной копией.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1На secondary без sudo.
    Linux · Терминал (Bash)Команда
    На secondary без sudo. Замените IP и домен на реальные; проверяет TCP DNS-ответ, не выполняет передачу AXFR.
    dig +tcp @192.0.2.10 example.com SOA
    Вариант 2На secondary после исправления конфигурации; обновляет статус заданной secondary-зоны, нужен sudo.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    На secondary после исправления конфигурации; обновляет статус заданной secondary-зоны, нужен sudo.
    sudo rndc refresh example.com

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

    Вариант 3На сервере после правки allow-transfer/notify; только проверка, sudo.
    Linux · Терминал (Bash)КомандаНужен sudo
    На сервере после правки allow-transfer/notify; только проверка, sudo.
    sudo named-checkconf

#Как проверить результат и что делать при неуспехе

Ожидаемый результат — одинаковый свежий SOA serial и идентичные контрольные записи на primary и secondary. Если журнал сообщает REFUSED/TSIG, остановите повторные попытки и согласуйте точные ограничения перед передачей.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.