Служба с именем restart завершилась неудачно.

Вопрос или проблема

Я хочу перезапустить службу 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.

Применение

  1. Проверка и коррекция файла /etc/named.conf:

    • Убедитесь, что каждый блок описания зоны имеет корректный формат и завершается точкой с запятой.
    • Также убедитесь, что синтаксис внутри блока "allow-update" является корректным, и каждый элемент переликсован через точки с запятыми.
  2. Исправление записи зоны:

    • Проверите файлы зон, такие как forward.kaash.local и reverse.kaash.local. Убедитесь, что в каждой зоне прописан корректный SOA-запись (серверы начального авторитета) и запись NS (серверы имен).
    • Проверьте, что у всех записей в зонах указаны владельцы записей и что они правильны.
  3. Использование утилит проверки конфигураций и логов:

    • Используйте named-checkconf для проверки основного файла конфигурации на наличие ошибок: named-checkconf /etc/named.conf.
    • Используйте named-checkzone с указанием типов зон для проверки файлов зон на наличие ошибок: named-checkzone kaash.local forward.kaash.local.
    • Просмотрите логи с использованием команды journalctl -xe для поиска детальной информации о возникшей проблеме.
  4. Перезапуск службы:

    • После внесения изменений и проверки корректности конфигураций, выполните команду systemctl restart named.service и затем убедитесь, что служба запустилась корректно, проверив её статус с помощью systemctl status named.service.

Это комплексный подход, который поможет не только устранить текущие ошибки, но и минимизировать вероятность их повторного появления в будущем. Важно удостовериться, что все конфигурационные файлы имеют правильный синтаксис и логическую структуру, и регулярно проверять их на актуальность и корректность.

Оцените материал
Добавить комментарий

Капча загружается...