Вопрос или проблема
Я хочу перезапустить службу named, но получил ошибку:
[root@KAASH-HIS-1 named]# service named restart
Перенаправление на /bin/systemctl restart named.service
Задание для named.service завершилось неудачно, так как управляющий процесс завершился с ошибкой. Подробности см. в "systemctl status named.service" и "journalctl -xe".
затем я выполнил команду systemctl status named.service, чтобы проверить статус службы named, но она также завершилась с ошибкой:
[root@KAASH-HIS-1 named]# systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2023-02-17 02:11:18 +03; 13s ago
Process: 10560 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=1/FAILURE)
Фев 17 02:11:18 KAASH-HIS-1 systemd[1]: Starting Berkeley Internet Name Domain (DNS)...
Фев 17 02:11:18 KAASH-HIS-1 bash[10560]: /etc/named.conf:62: missing ';' before '}'
Фев 17 02:11:18 KAASH-HIS-1 systemd[1]: named.service: управляющий процесс завершился с ошибкой, код=1
Фев 17 02:11:18 KAASH-HIS-1 systemd[1]: Не удалось запустить Berkeley Internet Name Domain (DNS).
Фев 17 02:11:18 KAASH-HIS-1 systemd[1]: Юнит named.service вошел в состояние ошибки.
Фев 17 02:11:18 KAASH-HIS-1 systemd[1]: named.service завершилась с ошибкой.
[root@KAASH-HIS-1 named]#
это файл /etc/named.conf
[root@KAASH-HIS-1 named]# cat /etc/named.conf
//
// named.conf
//
// Представлен пакетом Red Hat bind для настройки сервера ISC BIND named(8) DNS
// как только кэширующего сервера имен (только как резольвера DNS для localhost).
//
// Примеры конфигурационных файлов named см. в /usr/share/doc/bind*/sample/.
//
// Детали конфигурации см. в Референтном руководстве администратора BIND (ARM), расположенном в /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { 127.0.0.1;10.93.200.34; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; };
/*
- Если вы создаете авторитативный DNS-сервер, НЕ включайте рекурсию.
- Если вы создаете рекурсивный (кэширующий) DNS-сервер, нужно включить
рекурсию.
- Если ваш рекурсивный DNS-сервер имеет публичный IP-адрес, ОБЯЗАТЕЛЬНО нужно включить контроль доступа
для ограничения запросов ваших легитимных пользователей. Несоблюдение этого приведет
к тому, что ваш сервер станет частью крупномасштабных DNS-усилительных
атак. Реализация BCP38 в вашей сети значительно
сократит поверхность таких атак.
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Путь к ключу ISC DLV */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "kaash.local" IN {
type master;
file "forward.kaash.local";
allow-update {none;};
};
zone "200.93.10.in-addr.arpa" IN {
type master;
file "reverse.kaash.local";
allow-update {none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
это файл зоны forward.kaash.local:
[root@KAASH-HIS-1 named]# cat forward.kaash.local
$TTL 1D
@ IN SOA kaash-his-1.kaash.local. root.kaash.local. (
2014051001 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ; minimum
)
@ IN NS kaash-his-2.kaash.local.
@ IN PTR kaash.local.
kaash-his-1 IN A 10.93.200.34
KAASH-HIS-2 IN A 10.93.200.37
kaash-scan IN A 10.93.200.81
kaash-scan IN A 10.93.200.82
kaash-scan IN A 10.93.200.83
34 IN PTR kaash-his-1.kaash.local
39 IN PTR kaash-his-2.kaash.local
81 IN PTR kaash-scan.kaash.local
82 IN PTR kaash-scan.kaash.local
83 IN PTR kaash-scan.kaash.local
это обратный файл зоны:
[root@KAASH-HIS-1 named]# cat reverse.kaash.local
$TTL 1D
@ IN SOA kaash-his-1.kaash.local. root.kaash.local. (
2014051001 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ; minimum
)
@ IN NS kaash-his-2.kaash.local.
@ IN PTR kaash.local.
kaash-his-1 IN A 10.93.200.34
KAASH-HIS-2 IN A 10.93.200.37
kaash-scan IN A 10.93.200.81
kaash-scan IN A 10.93.200.82
kaash-scan IN A 10.93.200.83
34 IN PTR kaash-his-1.kaash.local
39 IN PTR kaash-his-2.kaash.local
81 IN PTR kaash-scan.kaash.local
82 IN PTR kaash-скан.kaash.local
83 IN PTR kaash-skan.kaash.local
Как решить эту ошибку? Не удалось запустить Berkeley Internet Name Domain (DNS) и перезапустить named.service?
ОБНОВЛЕНИЕ:
Я добавил ‘;’ и теперь появилась другая ошибка:
[root@KAASH-HIS-1 named]# systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2023-02-17 09:14:20 +03; 16s ago
Process: 37422 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=1/FAILURE)
Фев 17 09:14:20 KAASH-HIS-1 bash[37422]: _default/kaash.local/IN: no owner
Фев 17 09:14:20 KAASH-HIS-1 bash[37422]: zone localhost.localdomain/IN: loaded serial 0
Фев 17 09:14:20 KAASH-HIS-1 bash[37422]: zone localhost/IN: loaded serial 0
Фев 17 09:14:20 KAASH-HIS-1 bash[37422]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: загружено с серийным номером 0
Фев 17 09:14:20 KAASH-HIS-1 bash[37422]: zone 1.0.0.127.in-addr.arpa/IN: загружено с серийным номером 0
Фев 17 09:14:20 KAASH-HIS-1 bash[37422]: zone 0.in-addr.arpa/IN: загружено с серийным номером 0
Фев 17 09:14:20 KAASH-HIS-1 systemd[1]: named.service: управляющий процесс завершился с кодом 1
Фев 17 09:14:20 KAASH-HIS-1 systemd[1]: Не удалось запустить Berkeley Internet Name Domain (DNS).
Фев 17 09:14:20 KAASH-HIS-1 systemd[1]: Юнит named.service вошел в состояние ошибки.
Фев 17 09:14:20 KAASH-HIS-1 systemd[1]: named.service завершилась с ошибкой.
Команда systemctl status named.service
показывает ошибку:
/etc/named.conf:62: отсутствует ‘;’ перед ‘}’
Таким образом, в вашем /etc/named.conf
будет (игнорируя мои комментарии //
):
....
zone "." IN {
type hint;
file "named.ca";
};
zone "kaash.local" IN {
type master;
file "forward.kaash.local";
allow-update {none;}; // здесь было пропущено `;`
}; // строка 62
....
Если вы столкнетесь с этой проблемой, попробуйте войти в систему снова с новой машиной, убедитесь, что все записи в прямой и обратной зонах поиска настроены правильно. После этого перезапустите systemctl status named.
.
Ответ или решение
При возникновении ошибки, связанной с некорректной перезагрузкой службы named, нужно сначала провести детальную диагностику и исправление конфигурационных файлов системы. Данная ошибка сигнализирует о том, что служба named, которая отвечает за работу сервера DNS (Berkeley Internet Name Domain), не может корректно запуститься из-за ошибок в конфигурационных файлах. Рассмотрим процесс поиска и устранения причин этой проблемы.
Теория
Когда служба named не может запуститься, инструмент systemctl выдает диагностическую информацию, которая может указать на причину ошибки. Часто это связано с ошибками в конфигурационных файлах, как это видно из вашей ошибки:
/etc/named.conf:62: missing ';' before '}'
Эта строка указывает на отсутствие точки с запятой в конфигурационном файле, что является синтаксической ошибкой. Даже малейшее нарушение синтаксиса может привести к отказу в запуске сервиса.
Когда такие ошибки происходят, важно сначала проверить интеграцию всех конфигурационных файлов, включая основной файл /etc/named.conf
, и все файлы зон, такие как forward.kaash.local
и reverse.kaash.local
. Служба named использует эти файлы для настройки DNS зон и если они содержат ошибки, это повлияет на весь процесс запуска.
Пример
Из вашего описания видно, что после исправления синтаксической ошибки в строке 62, появилась новая ошибка, указывающая на зону:
_default/kaash.local/IN: no owner
Эта ошибка говорит о том, что в конфигурации зоны отсутствует информационный блок, указывающий владельца записи. Одна из общих причин таких ошибок заключается в неправильной конфигурации записей SOA или NS.
Применение
-
Проверка и коррекция файла
/etc/named.conf
:- Убедитесь, что каждый блок описания зоны имеет корректный формат и завершается точкой с запятой.
- Также убедитесь, что синтаксис внутри блока
"allow-update"
является корректным, и каждый элемент переликсован через точки с запятыми.
-
Исправление записи зоны:
- Проверите файлы зон, такие как
forward.kaash.local
иreverse.kaash.local
. Убедитесь, что в каждой зоне прописан корректный SOA-запись (серверы начального авторитета) и запись NS (серверы имен). - Проверьте, что у всех записей в зонах указаны владельцы записей и что они правильны.
- Проверите файлы зон, такие как
-
Использование утилит проверки конфигураций и логов:
- Используйте
named-checkconf
для проверки основного файла конфигурации на наличие ошибок:named-checkconf /etc/named.conf
. - Используйте
named-checkzone
с указанием типов зон для проверки файлов зон на наличие ошибок:named-checkzone kaash.local forward.kaash.local
. - Просмотрите логи с использованием команды
journalctl -xe
для поиска детальной информации о возникшей проблеме.
- Используйте
-
Перезапуск службы:
- После внесения изменений и проверки корректности конфигураций, выполните команду
systemctl restart named.service
и затем убедитесь, что служба запустилась корректно, проверив её статус с помощьюsystemctl status named.service
.
- После внесения изменений и проверки корректности конфигураций, выполните команду
Это комплексный подход, который поможет не только устранить текущие ошибки, но и минимизировать вероятность их повторного появления в будущем. Важно удостовериться, что все конфигурационные файлы имеют правильный синтаксис и логическую структуру, и регулярно проверять их на актуальность и корректность.