Вопрос или проблема
Когда я выполняю service bind9 status
, мне выводится следующее
named[983]: managed-keys-zone: unable to synchronize managed keys: unexpected error
named[983]: zone 0.in-addr.arpa/IN: loaded serial 1
named[983]: zone 255.in-addr.arpa/IN: loaded serial 1
named[983]: zone localhost/IN: loaded serial 2
named[983]: zone 127.in-addr.arpa/IN: loaded serial 1
named[983]: zone midomain.com/IN: loaded serial 2017061000
named[983]: all zones loaded
named[983]: running zone midomain.com/IN: sending notifies (serial 2017061000)
named[983]: client 201.235.234.30#55016: received notify for zone 'midomain.com'
Журнал /var/log/syslog
содержит:
the working directory is not writable
named[983]: managed-keys.bind.jnl: create: permission denied
named[983]: managed-keys-zone: sync_keyzone:dns_journal_open -> unexpected error
named[983]: managed-keys-zone: unable to synchronize managed keys: unexpected error
Как мне запустить bind9 и настроить его работу правильно?
От имени какого пользователя работает bind? Находится ли он в chroot jail? Какая ОС?
Проблема заключается в том, что он не может создать файл журнала (managed-keys.bind.jnl
), а также не может открыть файл managed-keys-zone
. Включен ли selinux?
Чтобы проверить, где находятся эти файлы, выполните от имени root следующую команду:
find / -name "managed-keys-zone"
Затем проверьте разрешения на этот файл:
ls -lh <путь из вышеуказанного результата>
Вы должны увидеть права, указанные до 10 символов (иногда 11). Игнорируйте первую букву; это будет -
, l
или d
. Следующие три – это разрешения для указанного ПОЛЬЗОВАТЕЛЯ (чтение – R, запись – W, выполнение – Execute). Следующие три символа – это права на ГРУППУ, а последние три – для всех остальных.
Проверьте, кто владеет этим файлом с помощью команды ls
выше – владелец root или другое имя (например, bind).
Добавьте следующие опции в named.conf
:
options {
...
dnssec-enable yes;
dnssec-validation auto;
managed-keys-directory "/etc/namedb/dynamic/";
...
};
В моем случае владелец файла и директории указан неправильно. Выполните следующую команду, чтобы исправить это:
sudo chown -R root:bind /var/cache/bind
sudo chown -R root:bind /var/cache/bind/managed-keys.bind
sudo chown -R root:bind /var/cache/bind/managed-keys.bind.jnl
Для получения дополнительной информации нажмите здесь.
Теперь вы можете перезапустить named.service без возникновения ошибок:
sudo systemctl restart named.service
и проверьте статус журналов:
sudo systemctl status named.service
.
Ответ или решение
Проблема, с которой вы столкнулись в работе с системой DNS на сервере, связана с ошибками синхронизации ключей и разрешениями на файловую систему, что препятствует нормальной работе службы Bind9. Для детального анализа и решения этой проблемы стоит обратить внимание на несколько важных аспектов, включая права доступа к файлам, настройки безопасности, такие как SELinux, и конфигурацию самого сервиса Bind9.
Теория
Bind9 (Berkeley Internet Name Domain) — это одно из наиболее распространенных программных обеспечений для настройки DNS-серверов. Оно необходимо для трансляции доменных имен в IP-адреса и наоборот. При этом Bind9 управляет зонами, которые содержат данные о DNS-записях. Ошибки, возникающие в работе Bind9, обычно связаны с конфигурацией или правами на доступ к файлам, используемым для хранения зоны или ключей.
Файл managed-keys.bind.jnl
служит для управления ключами DNSSEC, что обеспечивает безопасность системы DNS через электронную верификацию ответов. Если служба не имеет прав на запись в рабочий каталог или не может создать этот файл, возникают ошибки, которые мы видим в ваших логах.
Пример
В вашем случае основными ошибками являются:
- Отказ в доступе при создании файлов журнала (например,
managed-keys.bind.jnl
). - Неожиданная ошибка при синхронизации управляемых ключей.
Ошибка отказа в доступе указывает на проблемы с разрешениями на уровне файловой системы. Это происходит, если служба, под которой работает Bind9, не имеет соответствующих привилегий для записи в указанные директории.
Часто такие проблемы возникают из-за непродуманных конфигураций SELinux или недостаточных прав пользователя, под которым выполнен процесс Bind9. Кроме того, если Bind9 настроен для работы в chroot jail (ограниченной среде), это может осложнять доступ к файлам.
Применение
-
Проверка Метаданных Файлов:
- Для начала, проверьте существование и расположение файла
managed-keys-zone
с помощью команды:find / -name "managed-keys-zone"
- Затем убедитесь, что владельцы и группы файлов правильно настроены:
ls -lh <путь_к_файлу>
Убедитесь, что права доступа позволяют пользователю, под которым запускается Bind9, читать и записывать в эти файлы.
- Для начала, проверьте существование и расположение файла
-
Коррекция Прав Владения и Доступа:
- Убедитесь, что файловый каталог Bind9, например,
/var/cache/bind
, имеет соответствующие права:sudo chown -R root:bind /var/cache/bind sudo chown -R bind:bind /var/cache/bind/managed-keys.bind.jnl
- Эти команды устанавливают пользователя
bind
и группуbind
в качестве владельцев файлов, что позволяет Bind9 записывать в них без ошибок.
- Убедитесь, что файловый каталог Bind9, например,
-
Настройки SELinux:
- Если SELinux включен, временно переключите его в режим permissive:
sudo setenforce 0
- Это позволит определить, не является ли SELinux препятствием для записи файлов. Если проблема решена при отключении, следует настроить SELinux соответствующим образом, чтобы он не мешал работе Bind9.
- Если SELinux включен, временно переключите его в режим permissive:
-
Изменение Конфигурации Bind9:
- В файле
named.conf
добавьте или измените параметры, чтобы гарантировать, что ключи управления обрабатываются правильно:options { ... dnssec-enable yes; dnssec-validation auto; managed-keys-directory "/etc/namedb/dynamic/"; ... };
- В файле
-
Перезапуск Сервиса и Просмотр Логов:
- После изменений, перезапустите службу Bind9 и проверьте статус:
sudo systemctl restart named.service sudo systemctl status named.service
- Таким образом, вы сможете убедиться, что ошибки исчезли и сервис работает корректно.
- После изменений, перезапустите службу Bind9 и проверьте статус:
Вышеизложенные шаги помогут вам разобраться с основными проблемами и настроить Bind9 для стабильной работы. Помните, что конфигурация сети и DNS — это критически важные аспекты работы сервера, и их настройка требует тщательного внимания и понимания инфраструктуры.