|
|
Как настроить ntp-клиент в debiab 12
Проверьте, какой ntp-сервис работает: systemctl list-units --type=service | grep -E 'chrony|timesyncd|ntp'
Чтобы отключить ненужный: sudo systemctl stop systemd-timesyncd sudo systemctl disable systemd-timesyncd # или наоборот, если используете timesyncd sudo systemctl stop chrony sudo systemctl disable chrony
Убедитесь, что порт 123/udp открыт (если есть фаервол): sudo ufw allow out 123/udp # если используется ufw # или для nftables/iptables — разрешите исходящий UDP на порт 123
Из вывода: systemctl list-units --type=service | grep -E 'chrony|timesyncd|ntp' ntpsec.service loaded active running Network Time Service следует, что в вашей системе уже запущен NTP-клиент ntpsec — это современная, безопасная замена классическому ntp.
Что такое ntpsec? Это форк оригинального ntp с упором на безопасность, минимализм и аудит кода. В Debian 12 пакет ntp устарел, и вместо него рекомендуется использовать либо chrony, либо ntpsec. ntpsec полностью совместим с NTP-протоколом и может работать как клиент, так и сервер.
Проверьте, с какими серверами синхронизируется ntpsec: ntpq -p
Если ntpstat не установлен: sudo apt install ntpsec-ntpstat
Пример вывода ntpq -p: remote refid st t when poll reach delay offset jitter ============================================================================== *192.168.21.37 .GPS. 1 u 42 64 377 0.321 -0.123 0.045
Звёздочка * — активный источник синхронизации. st — stratum (1 = очень точный, например, GPS или атомные часы).
Настройка ntpsec (если нужно использовать локальный NTP-сервер) Конфигурационный файл: sudo nano /etc/ntpsec/ntp.conf
Пример минимальной конфигурации для клиента, синхронизирующегося с локальным сервером: # Разрешить только клиентский режим (без раздачи времени) driftfile /var/lib/ntpsec/ntp.drift
# Источник времени — ваш локальный NTP-сервер server 192.168.21.37 iburst
# Ограничения безопасности (рекомендуется) restrict default nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1
После изменения: sudo systemctl restart ntpsec
Проверьте статус синхронизации: # Показать источники ntpq -p
# Показать статус sudo ntpstat
Если всё хорошо, ntpstat выведет: synchronised to NTP server (192.168.21.37) at stratum 2 time correct to within 12 ms polling server every 1024 s
ntpq -p remote refid st t when poll reach delay offset jitter ======================================================================================================= +192.168.21.37 213.183.53.170 3 u 2 64 1 0.1373 16.4170 0.1248
Символ + перед именем:
+ означает, что этот сервер рассматривается как кандидат для синхронизации, но не является текущим источником. Активный источник помечается символом *.
❗ Важно: у вас нет строки с * — это означает, что ваш клиент ntpsec пока не синхронизирован с сервером!
Убедитесь, что в конфиге только один сервер (если нужно) Проверьте /etc/ntpsec/ntp.conf: grep "^server\|^pool" /etc/ntpsec/ntp.conf
Если там несколько серверов — NTP может "колебаться", выбирая лучший. Для локальной сети лучше оставить только ваш сервер: server 192.168.21.37 iburst
И перезапустите: sudo systemctl restart ntpsec
Проверить источник часов: cat /sys/devices/system/clocksource/clocksource0/current_clocksource
Хорошие значения: tsc, hpet Подозрительные: acpi_pm, jiffies
Если после этих шагов * так и не появится — проверим логи: journalctl -u ntpsec --since "1 hour ago"
journalctl -u ntpsec --since "1 hour ago" дек 29 15:19:49 101060001159a ntpd[1690]: DNS: dns_probe: 0.debian.pool.ntp.org, cast_flags:8, flags:101 дек 29 15:19:49 101060001159a ntpd[1690]: DNS: dns_check: processing 0.debian.pool.ntp.org, 8, 101 дек 29 15:19:49 101060001159a ntpd[1690]: DNS: dns_check: DNS error: -3, Temporary failure in name resolution дек 29 15:19:49 101060001159a ntpd[1690]: DNS: dns_take_status: 0.debian.pool.ntp.org=>temp, 3 дек 29 15:19:50 101060001159a ntpd[1690]: DNS: dns_probe: 1.debian.pool.ntp.org, cast_flags:8, flags:101 дек 29 15:19:50 101060001159a ntpd[1690]: DNS: dns_check: processing 1.debian.pool.ntp.org, 8, 101 дек 29 15:19:50 101060001159a ntpd[1690]: DNS: dns_check: DNS error: -3, Temporary failure in name resolution дек 29 15:19:50 101060001159a ntpd[1690]: DNS: dns_take_status: 1.debian.pool.ntp.org=>temp, 3 дек 29 15:19:51 101060001159a ntpd[1690]: DNS: dns_probe: 2.debian.pool.ntp.org, cast_flags:8, flags:101 дек 29 15:19:51 101060001159a ntpd[1690]: DNS: dns_check: processing 2.debian.pool.ntp.org, 8, 101 дек 29 15:19:51 101060001159a ntpd[1690]: DNS: dns_check: DNS error: -3, Temporary failure in name resolution дек 29 15:19:51 101060001159a ntpd[1690]: DNS: dns_take_status: 2.debian.pool.ntp.org=>temp, 3 дек 29 15:19:52 101060001159a ntpd[1690]: DNS: dns_probe: 3.debian.pool.ntp.org, cast_flags:8, flags:101 дек 29 15:19:52 101060001159a ntpd[1690]: DNS: dns_check: processing 3.debian.pool.ntp.org, 8, 101 дек 29 15:19:52 101060001159a ntpd[1690]: DNS: dns_check: DNS error: -3, Temporary failure in name resolution дек 29 15:19:52 101060001159a ntpd[1690]: DNS: dns_take_status: 3.debian.pool.ntp.org=>temp, 3 дек 29 15:19:57 101060001159a ntpd[1690]: DNS: dns_probe: 0.debian.pool.ntp.org, cast_flags:8, flags:101 дек 29 15:19:57 101060001159a ntpd[1690]: DNS: dns_check: processing 0.debian.pool.ntp.org, 8, 101 дек 29 15:19:57 101060001159a ntpd[1690]: DNS: dns_check: DNS error: -3, Temporary failure in name resolution дек 29 15:19:57 101060001159a ntpd[1690]: DNS: dns_take_status: 0.debian.pool.ntp.org=>temp, 3 дек 29 15:19:58 101060001159a ntpd[1690]: DNS: dns_probe: 1.debian.pool.ntp.org, cast_flags:8, flags:101 дек 29 15:19:58 101060001159a ntpd[1690]: DNS: dns_check: processing 1.debian.pool.ntp.org, 8, 101 дек 29 15:19:58 101060001159a ntpd[1690]: DNS: dns_check: DNS error: -3, Temporary failure in name resolution
Если вывод команды такой, это значит, что ваш ntpsec пытается разрешить DNS-имена публичных NTP-серверов, например: 0.debian.pool.ntp.org 1.debian.pool.ntp.org ...
Но в вашей сети нет доступа в интернет или DNS не работает: DNS error: -3, Temporary failure in name resolution
Это мешает ntpsec перейти в состояние синхронизации, даже если ваш локальный сервер 192.168.21.37 полностью доступен.
Почему? Потому что в конфигурации /etc/ntpsec/ntp.conf всё ещё остались строки с pool или server, указывающие на публичные серверы.
NTP-алгоритм ожидает ответа от всех указанных источников, и если часть из них недоступна, он может откладывать выбор активного источника (*) — особенно в консервативных реализациях вроде ntpsec.
Решение: оставить ТОЛЬКО локальный сервер Отредактируйте конфигурацию: sudo nano /etc/ntpsec/ntp.conf
Удалите или закомментируйте ВСЕ строки, содержащие: pool server с доменными именами (особенно *.debian.pool.ntp.org, ntp.org, ru.pool.ntp.org и т.п.)
Оставьте ТОЛЬКО эту строку: server 192.168.21.37 iburst
Убедитесь, что нет других server или pool — даже закомментированные иногда парсятся (в зависимости от версии).
Также удалите или закомментируйте, если есть: # server 127.127.1.0 # fudge 127.127.1.0 stratum 10
Сохраните файл и перезапустите службу: sudo systemctl restart ntpsec
Дополнительно: проверьте, что в конфиге нет include-файлов Иногда в /etc/ntpsec/ntp.conf есть строка: include /etc/ntpsec/ntp.conf.d/*
Проверьте: ls /etc/ntpsec/ntp.conf.d/
Если каталог существует — удалите все файлы в нём или убедитесь, что там нет ссылок на публичные серверы.
После исправления Через 1–2 минуты выполните: ntpq -p
Вы должны увидеть: remote refid st t when poll reach delay offset jitter ============================================================================== *192.168.21.37 82.146.53.58 3 u 32 64 377 0.16 1.2 0.4
И: ntpstat # → synchronised to NTP server (192.168.21.37) ...
А в логах не будет ошибок DNS: journalctl -u ntpsec -f
Если после этого * не появится — выполните: grep -v "^#" /etc/ntpsec/ntp.conf ntpq -p
Вывод grep -v "^#" /etc/ntpsec/ntp.conf: grep -v "^#" /etc/ntpsec/ntp.conf
driftfile /var/lib/ntpsec/ntp.drift leapfile /usr/share/zoneinfo/leap-seconds.list
tos maxclock 11
tos minclock 4 minsane 3
server 192.168.21.37 iburst
restrict default kod nomodify nopeer noquery limited
restrict 127.0.0.1 restrict ::1
Проблема: директивы tos minclock 4 minsane 3 В вашем конфиге есть строки: tos minclock 4 tos minsane 3
Что они означают?
minclock 4 — NTP требует минимум 4 источника времени, чтобы считать конфигурацию "полной". minsane 3 — из них минимум 3 должны быть "вменяемыми" (sane).
Эти настройки по умолчанию используются в публичных пулах, где много серверов, но они губительны при использовании одного локального сервера.
Что происходит?
У вас только 1 сервер (192.168.21.37). NTP видит его, но не считает конфигурацию достаточной для синхронизации, потому что: minclock = 4, а у вас 1 < 4 → условие не выполнено. Поэтому алгоритм отказывается переходить в режим синхронизации (* не появляется), даже если сервер идеален.
Это скрытая ловушка при переходе с публичных NTP-пулов на один локальный сервер.
Решение: удалите или закомментируйте эти строки Отредактируйте конфиг: sudo nano /etc/ntpsec/ntp.conf
И закомментируйте или удалите: # tos minclock 4 minsane 3
Перезапустите службу: sudo systemctl restart ntpsec
ntpq -p remote refid st t when poll reach delay offset jitter ======================================================================================================= *192.168.21.37 94.100.180.133 3 u 7 64 1 0.1969 -19.7378 1.3530
Поздравляю! У вас появилась звёздочка *! Это означает, что: Система успешно синхронизирована с NTP-сервером 192.168.21.37!
journalctl -u ntpsec -f дек 29 16:29:11 101060001159a ntpd[4987]: IO: Listen normally on 2 lo 127.0.0.1:123 дек 29 16:29:11 101060001159a ntpd[4987]: IO: Listen normally on 3 enp3s0 192.168.21.34:123 дек 29 16:29:11 101060001159a ntpd[4987]: IO: Listen normally on 4 lo [::1]:123 дек 29 16:29:11 101060001159a ntpd[4987]: IO: Listen normally on 5 enp3s0 [fe80::90ba:f281:e60d:1c68%2]:123 дек 29 16:29:11 101060001159a ntpd[4987]: IO: Listening on routing socket on fd #22 for interface updates дек 29 16:29:11 101060001159a ntpd[4987]: INIT: MRU 10922 entries, 13 hash bits, 65536 bytes дек 29 16:29:11 101060001159a ntpd[4987]: INIT: Built with OpenSSL 3.0.9 30 May 2023, 30000090 дек 29 16:29:11 101060001159a ntpd[4987]: INIT: Running with OpenSSL 3.0.17 1 Jul 2025, 30000110 дек 29 16:29:11 101060001159a ntpd[4987]: NTSc: Using system default root certificates. дек 29 16:29:11 101060001159a ntpd[4987]: statistics directory /var/log/ntpsec/ does not exist or is unwriteable, error No such file or directory
Лог показывает нормальный запуск ntpsec, но с одной несущественной проблемой, которую легко исправить. Что происходит Все строки вида: IO: Listen normally on ... INIT: ... — это штатные сообщения при старте — всё в порядке.
Единственное, что требует внимания: statistics directory /var/log/ntpsec/ does not exist or is unwriteable, error No such file or directory
Это не критично и не влияет на синхронизацию времени. Это просто означает, что ntpsec не может писать статистику (логи запросов, метрики и т.п.), потому что каталог /var/log/ntpsec/ не существует.
Если вам не нужна детальная статистика NTP-трафика — можно игнорировать это сообщение.
Как исправить (опционально) Если вы хотите избавиться от предупреждения или вести логи NTP, создайте каталог: sudo mkdir -p /var/log/ntpsec sudo chown ntpsec:ntpsec /var/log/ntpsec sudo chmod 750 /var/log/ntpsec
Имя пользователя может отличаться — проверьте: id ntpsec
В Debian 12 обычно используется пользователь ntpsec.
После этого перезапустите службу: sudo systemctl restart ntpsec
Предупреждение исчезнет.
ntpq -p remote refid st t when poll reach delay offset jitter ======================================================================================================= *192.168.21.37 94.100.180.133 3 u 12 64 1 0.1840 -0.0438 0.0447
Прекрасные новости! 🎉
Ваша система достигла идеального состояния синхронизации с локальным NTP-сервером.
Итог
Время синхронизировано с точностью до ~44 микросекунд — это отличный результат даже для требовательных систем. Сетевая задержка минимальна. Джиттер почти нулевой — часы стабильны. Сервер stratum 3 — корректно для локального NTP-клиента.
🟢 Ваша настройка NTP в Debian 12 завершена успешно и работает идеально.
Рекомендация
Не вносите больше изменений — всё работает наилучшим образом. Через 10 минут проверьте ещё раз — reach будет расти, а остальные параметры останутся стабильными.
Если в будущем развёртываете новые клиенты — используйте тот же подход:
Только server 192.168.21.37 iburst Без pool, minclock, leapfile (если не требуется) Без других NTP-клиентов (chrony, timesyncd)
|
| Категория: линукс | Добавил: snns (24.01.2026)
|
| Просмотров: 3
| Рейтинг: 0.0/0 |
|
|
|