Как включить синхронизацию времени в современных Linux-системах
/ 3 min read
Всем привет. Проблема, из-за которой я написал эту инструкцию, заключается в том, что мне надоело видеть в интернете по данному запросу только статьи 10-летней давности. В них нет информации о том, зачем устанавливать и настраивать старый Chrony, если новый (относительно) systemd-timesyncd отлично справляется со своей задачей. Нет никакого смысла делать лишние телодвижения, тем более что он идёт из коробки во всех современных дистрибутивах (Ubuntu, Fedora, Arch, Manjaro, Debian) уже лет пять.
Собственно, перейдём к его настройке.
Для начала проверим, что сервис включён (enabled) и запущен. Для этого введём команду:
$ systemctl status systemd-timesyncd● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2024-03-02 10:51:42 UTC; 3min 53s ago Docs: man:systemd-timesyncd.service(8) Main PID: 580 (systemd-timesyn) Status: "Initial synchronization to time server 192.168.71.1:123 (192.168.71.1)." Tasks: 2 (limit: 4558) Memory: 1.5M CPU: 42ms CGroup: /system.slice/systemd-timesyncd.service └─580 /lib/systemd/systemd-timesyncdВ выводе важны два момента: если вместо enabled указано disabled, значит, служба не добавлена в автозагрузку; а если вместо active (running) стоит что-то другое — сервис не запущен или упал с ошибкой.
Исправить это можно соответствующими командами:
# Включение автозапуска сервисаsudo systemctl enable systemd-timesyncd# Запуск сервисаsudo systemctl start systemd-timesyncdДалее введём команду timedatectl и посмотрим на состояние службы:
$ timedatectl Local time: Sat 2024-03-02 11:10:56 UTC Universal time: Sat 2024-03-02 11:10:56 UTC RTC time: Sat 2024-03-02 11:10:56 Time zone: Etc/UTC (UTC, +0000)System clock synchronized: yes NTP service: active RTC in local TZ: noВ идеале ваш вывод должен быть таким же, как в примере выше. Нас интересуют строки System clock synchronized и NTP service.
Если NTP service находится в состоянии inactive, значит, автоматическая синхронизация выключена. Включите её командой и проверьте состояние снова:
sudo timedatectl set-ntp trueЕсли сервис NTP включён, но System clock synchronized показывает no, то дело, скорее всего, в том, что сервис не может достучаться до сервера точного времени. Проверить, что идёт не так, можно в логах командой:
journalctl -xeu systemd-timesyncdВ логах может быть указан сервер, до которого пытается достучаться timesyncd. Для проверки доступности порта сервера синхронизации используйте команду nc (netcat), подставив ваш сервер вместо ru.pool.ntp.org (123 — это порт NTP, работает через UDP):
$ nc -uvzw 3 ru.pool.ntp.org 123Connection to ru.pool.ntp.org (162.159.200.123) 123 port [udp/ntp] succeeded!Если сервер недоступен и это ваш промышленный контур, то проблема, скорее всего, в настройках сетевого экрана или файрвола машины, на которой вы работаете.
Для замены сервера обновлений нужно внести правки в файл /etc/systemd/timesyncd.conf.
Выглядит он следующим образом:
$ cat /etc/systemd/timesyncd.conf[Time]#NTP=#FallbackNTP=ntp.ubuntu.com#RootDistanceMaxSec=5#PollIntervalMinSec=32#PollIntervalMaxSec=2048Строки, начинающиеся с #, считаются комментариями. В блок [Time] нужно вписать строку (например, с помощью vim или nano с правами sudo):
NTP=ru.pool.ntp.orgЛибо укажите любой другой сервер, к которому у вас есть доступ. В закрытых контурах администраторы обычно предоставляют свои серверы для синхронизации времени.
Вот список популярных серверов, которые чаще всего работают на внешних виртуальных машинах:
- time.google.com
- ru.pool.ntp.org
- ntp0.NL.net
- clock.isc.org
- ntps1-1.cs.tu-berlin.de
- ntp2.vniiftri.ru
- ntp.ix.ru
После сохранения файла нужно перезапустить службу:
sudo systemctl restart systemd-timesyncdЗатем ещё раз проверьте командой timedatectl, что System clock synchronized: yes.
Если проблема всё ещё сохраняется, снова открывайте логи и разбирайтесь, почему нет доступа к серверу. Чаще всего это именно настройки сетевой безопасности, что может стать темой для отдельной статьи.
Спасибо за внимание!