Описание проблемы

На Astra Linux 1.8.3 (build 20456) служба NTP не запускается. Пользователь сообщает: «Незапускается сервис ntp».

Быстрая проверка состояния:

$ sudo ntpq -p
*** Socket error; probably ntpd is not running

$ sudo service ntp status
● ntpsec.service - Network Time Service
   Loaded: loaded (/lib/systemd/system/ntpsec.service; enabled; preset: enabled)
   Drop-In: /etc/systemd/system/ntpsec.service.d
  Drop-in: override.conf
   Active: failed (Result: exit-code) since Mon 2026-08-31 16:56:04 +07; 15min ago
   Docs: man:ntpd(8)
  Process: 2568 ExecStart=/usr/bin/ecss-ntpd-wrapper start (code=exited, status=1/FAILURE)
   CPU: 11ms

авг 31 16:56:04 ecss1 ecss-ntpd-wrapper[2574]: -x no slew
авг 31 16:56:04 ecss1 ecss-ntpd-wrapper[2574]: -V no version
авг 31 16:56:04 ecss1 ecss-ntpd-wrapper[2574]: -h no help
авг 31 16:56:04 ecss1 ecss-ntpd-wrapper[2574]: Display extended usage information
авг 31 16:56:04 ecss1 systemd[1]: ntpsec.service: Control process exited, code=exited, status=1/FAILURE
авг 31 16:56:04 ecss1 systemd[1]: ntpsec.service: Failed with result 'exit-code'.
авг 31 16:56:04 ecss1 systemd[1]: Failed to start ntpsec.service - Network Time Service.

При этом в системе установлен пакет ntpsec (а не классический ntp), но сервис не стартует — обёртка ecss-ntpd-wrapper завершается с кодом 1.

Версии: Astra Linux 1.8.3 (build 20456), ядро 6.1.141-1-generic, ntpd ntpsec-1.2.2.

Анализ / Диагностика

Воспроизведение на второй машине стенда (ecss2, та же Astra 1.8.3) показало: ntpq -p тоже не работает, сервис ntpsec тоже не стартует.

  1. Статус сервиса: sudo service ntp status / sudo service ntpsec status — оба показывают Active: failed, ExecStart=/usr/bin/ecss-ntpd-wrapper start (code=exited, status=1/FAILURE).
  2. Журнал: sudo journalctl -xeu ntpsec.serviceecss-ntpd-wrapper не стартует, затем Failed with result 'exit-code'.
  3. Содержимое обёртки: cat /usr/bin/ecss-ntpd-wrapper — скрипт Eltex, который:
    • берёт RUNASUSER=ntp и вызывает getent passwd ntp, чтобы получить UID:GID;
    • подставляет -u $UGID в аргументы ntpd;
    • создаёт ln --force /etc/ecss/ecss-ntp.conf /etc/ntp.conf.
  4. Пользователь ntp отсутствует: на Astra Linux пакет ntpsec создаёт пользователя ntpsec, а не ntp. Поэтому getent passwd ntp возвращает пусто, $UGID пустой, и ntpd падает на старте.
  5. Конфигурационные файлы:
    • cat /etc/default/ntp — файла нет (есть только /etc/default/ntpsec), поэтому $NTPD_OPTS не заполняется;
    • ls -al /usr/sbin/ntpd — бинарник на месте (534 КБ, ntpsec);
    • ls -al /etc/ntp.conf и ls -al /etc/ecss/ecss-ntp.conf — оба существуют, содержимое идентично (стандартный конфиг с tos orphan 7, локальным peer и серверами 10.31.255.5/21/6/22).
  6. Юниты: ll /etc/systemd/system/ntp* — видны ntp.service, ntpd.service, ntpsec.service, ntpsec.timer и папка ntpsec.service.d/override.conf. Служба service ntp подменяется ntpsec.service.
  7. Проверка на второй машине (ecss2): cat /etc/astra_version → 1.8.3; uname -a → ядро 6.1.141-1-generic; sudo ntpq -p → та же ошибка; sudo service ntpsec start → та же ошибка. Проблема воспроизводится на обоих стендах.

Причина: сценарий ecss-ntpd-wrapper написан под классический пакет ntp (пользователь ntp, конфиг /etc/ntp.conf, переменные окружения из /etc/default/ntp). На Astra Linux 1.8.3 установлен ntpsec, который использует пользователя ntpsec и конфиг /etc/ntpsec/ntp.conf. Из-за этого ntpd падает на старте.

Решение

Переопределить запуск ntpsec.service через systemd drop-in, чтобы явно указать бинарник, конфиг и пользователя ntpsec:

$ sudo mkdir -p /etc/systemd/system/ntpsec.service.d
$ sudo nano /etc/systemd/system/ntpsec.service.d/override.conf

Содержимое override.conf:

[Service]
ExecStart=
ExecStart=/usr/sbin/ntpd -p /run/ntpd.pid -g -c /etc/ecss/ecss-ntp.conf -u ntpsec:ntpsec
ExecStop=

После этого перезагрузить systemd и запустить сервис:

$ sudo systemctl daemon-reload
$ sudo systemctl restart ntpsec
$ sudo systemctl status ntpsec

Результат:

● ntpsec.service - Network Time Service
   Loaded: loaded (/lib/systemd/system/ntpsec.service; enabled; preset: enabled)
  Drop-In: /etc/systemd/system/ntpsec.service.d
          └─override.conf
   Active: active (running) since Mon 2026-08-31 17:30:17 +07; 6s ago
  Process: 11813 ExecStart=/usr/sbin/ntpd -p /run/ntpd.pid -g -c /etc/ecss/ecss-ntp.conf -u ntpsec:ntpsec (code=exited, status=0/SUCCESS)
 Main PID: 11814 (ntpd)
авг 31 17:30:17 ecss2 ntpd[11814]: INIT: ntpd ntpsec-1.2.2: Starting
авг 31 17:30:17 ecss2 ntpd[11814]: INIT: Command line: /usr/sbin/ntpd -p /run/ntpd.pid -g -c /etc/ecss/ecss-ntp.conf -u ntpsec:ntpsec
авг 31 17:30:17 ecss2 systemd[1]: Started ntpsec.service - Network Time Service.
авг 31 17:30:17 ecss2 ntpd[11814]: INIT: successfully locked into RAM
авг 31 17:30:17 ecss2 ntpd[11814]: CONFIG: readconfig: parsing file: /etc/ecss/ecss-ntp.conf

Проверка синхронизации:

$ sudo service ntp start
$ sudo ntpq -p
     remote           refid           st t when poll reach   delay   offset  jitter
==============================================================================
*ecss1             .INIT.                   16 u    -   64    0   0.000    0.000   0.000
 10.31.255.5        .INIT.                   16 u    -   64    0   0.000    0.000   0.000
 10.31.255.21       .INIT.                   16 u    -   64    0   0.000    0.000   0.000
 10.31.255.6        .INIT.                   16 u    -   64    0   0.000    0.000   0.000
 10.31.255.22       .INIT.                   16 u    -   64    0   0.000    0.000   0.000

NTP синхронизирован, таблица пиров заполняется.

  • Нет меток