- Commands to Sync Time with NTP Server in Linux
- What is NTP
- How to Enable NTP Synchronization on Linux
- How to Enable NTP for Linux Distributions without “systemd”
- Вики IT-KB
- Настройка службы синхронизации времени systemd-timesyncd в Debian GNU/Linux 9 (Stretch)
- Использование systemd-timesyncd для синхронизации времени в Debian/Ubuntu
Commands to Sync Time with NTP Server in Linux
For many people, computer clocks in your devices, network machines, and servers are generally accurate. But that’s not true! These clocks are manually maintained and backed by batteries which over time drift the clock, especially in the older machines.
So why is accurate time so important? Having exact time on your machine is quite significant because of several reasons. Many aspects of your computer activity are linked with time. Perfectly synched time is crucial for tracking security-related issues; troubleshooting can become quite difficult if the timestamps in log files are incorrect. Even for financial services, keeping accurate time is critical.
Many companies solve time-related issues by connecting their networks with NTP. So what is NTP? Let’s dig into it first:
What is NTP
The full form of NTP is “Network Time Protocol”, which has been one of the most authentic ways to synchronize the clock over a network. If your system uses NTP, you don’t need to check and set your time manually. It automatically updates the clock every time the device reboots. It is an extremely accurate way to update the clock of your device. Since the internet is everywhere, NTP is being used by every modern computer.
How to Enable NTP Synchronization on Linux
Most of the Linux distributions are using “systemd”, which comes with NTP for clock synchronization. To verify this, use the command given below:
It indicates that NTP is active. If, for some reasons, it is not active, then use the below-mentioned command to enable it:
How to Enable NTP for Linux Distributions without “systemd”
But what if your distribution does not come with “systemd”? Well, in that case, you can install NTP.
Вики IT-KB
Настройка службы синхронизации времени systemd-timesyncd в Debian GNU/Linux 9 (Stretch)
В составе обновлённой версии systemd, используемой в конфигурации по умолчанию в Debian GNU/Linux 9 имеется отдельная служба, отвечающая за синхронизацию времени локальной системы по протоколу NTP с врешними NTP-серверами — systemd-timesyncd. Поэтому, если нужно настроить синхронизацию времени, например с корпоративными NTP-серверами, нет необходимости устанавливать и настраивать специальные пакеты типа ntp (как это было в прошлых версиях Debian), а достаточно лишь выполнить настройку systemd-timesyncd.
Проверить текущее состояние службы можно командой
# systemctl status systemd-timesyncd
Служба будет запускаться в системе автоматически в том случае, если не были обнаружены исполняемые файлы других пакетов, реализующих функции синхронизации времени. Эти исполняемые файлы можно увидеть в конфигурационном файл /lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf
[Unit] # don't run timesyncd if we have another NTP daemon installed ConditionFileIsExecutable=!/usr/sbin/ntpd ConditionFileIsExecutable=!/usr/sbin/openntpd ConditionFileIsExecutable=!/usr/sbin/chronyd ConditionFileIsExecutable=!/usr/sbin/VBoxService
Отредактируем основной конфигурационный файл systemd-timesyncd:
# nano /etc/systemd/timesyncd.conf
# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See timesyncd.conf(5) for details. [Time] NTP=kom-dc01.holding.com kom-dc02.holding.com #FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org
После правки конфигурационной файла перезапускаем службу и проверяем её состояние:
# systemctl restart systemd-timesyncd # systemctl status systemd-timesyncd
Состояние синхронизации времени можно проверить утилитой timedatectl:
# timedatectl statusLocal time: Sat 2017-12-02 13:26:27 MSK Universal time: Sat 2017-12-02 10:26:27 UTC RTC time: Sat 2017-12-02 10:26:27 Time zone: Europe/Moscow (MSK, +0300) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Посмотреть лог службы systemd-timesyncd (как юнита systemd) можно следующей командой:
# journalctl -u systemd-timesyncd --since today-- Logs begin at Sat 2017-12-02 13:23:50 MSK, end at Sat 2017-12-02 13:27:22 MSK. -- Dec 02 13:23:51 SRV01 systemd[1]: Starting Network Time Synchronization. Dec 02 13:23:52 SRV01 systemd[1]: Started Network Time Synchronization. Dec 02 13:24:26 SRV01 systemd-timesyncd[256]: Synchronized to time server 10.1.1.2:123.
Если же всё таки возникает необходимость использования других пакетов синхронизации времени, исполняемые файлы которых отличны от тех, что перечислены в disable-with-time-daemon.conf , то можно самостоятельно остановить и отключить службу systemd-timesyncd парой простых команд:
# systemctl stop systemd-timesyncd # systemctl disable systemd-timesyncd
Дополнительные источники информации:
Проверено на следующих конфигурациях:
Автор первичной редакции:
Алексей Максимов
Время публикации: 02.12.2017 14:03
4 Фев 2020 18:02:19 | 5 комментариев
Использование systemd-timesyncd для синхронизации времени в Debian/Ubuntu
В Linux для синхронизации времени традиционно используется ntpd как стандарт де-факто, но есть другая и более простая альтернатива — это systemd-timesyncd.
Давайте настроим его для синхронизации времени, а про ntpd забудем и удалим его.
С ntpd все просто, ставится пакет ntp, настраивается файл конфигурации /etc/ntp.conf и включается служба ntp (systemctl start ntp), далее проверяем с помощью утилиты ntpstat факт синхронизации локальных часов с удаленным сервером и радуемся.
Все бы хорошо, но с помощью ntpd можно не только забирать время с удаленных сервером, но и выступать в качестве сервера времени для других, то есть ntpd принимает входящие соединения и его некорректная настройка может послужить причиной участия вашего сервера в DDoS-атаки (см. apt-get remove ntp ntpstat —purge apt autoremove
Удалить ntpd или например chronyd нужно потом, что иначе systemd-timesyncd не будет синхронизировать время. За такую проверку отвечает файл /lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf в котором прописан список бинарников, при наличии которых в системе демон systemd-timesyncd не будет работать.
Теперь настроим systemd-timesyncd, для этого в файл конфигурации /etc/systemd/timesyncd.conf пропишем список серверов времени:
echo 'NTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org' >> /etc/systemd/timesyncd.conf
Таким образом мы добавили в файл настройку NTP= определяющую список основных серверов времени, можно добавить настройку FallbackNTP= которая определит список резервных серверов времени:
echo 'FallbackNTP=ntp.ubuntu.com' >> /etc/systemd/timesyncd.conf
Смотрим текущий статус синхронизации часов:
Local time: Вт 2020-02-04 13:13:04 +05 Universal time: Вт 2020-02-04 08:13:04 UTC RTC time: Вт 2020-02-04 08:14:11 Time zone: Asia/Yekaterinburg (+05, +0500) Network time on: yes NTP synchronized: no RTC in local TZ: no
В строке «NTP synchronized» может стоять no если синхронизация часов по ntp до этого не была настроена вообще или yes, если до этого часы синхронизировались с помощью ntpd
Включаем использование systemd-timesyncd для синхронизации времени:
Включаем и перезапускаем службу systemd-timesyncd:
systemctl enable --now systemd-timesyncd.service systemctl restart systemd-timesyncd.service
systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Вт 2020-02-04 13:14:22 +05; 16min ago Docs: man:systemd-timesyncd.service(8) Main PID: 11666 (systemd-timesyn) Status: "Synchronized to time server 91.206.16.3:123 (0.debian.pool.ntp.org)." Tasks: 2 Memory: 388.0K CPU: 10ms CGroup: /system.slice/systemd-timesyncd.service └─11666 /lib/systemd/systemd-timesyncd фев 04 13:14:22 myserver systemd[1]: Starting Network Time Synchronization. фев 04 13:14:22 myserver systemd[1]: Started Network Time Synchronization. фев 04 13:12:34 myserver systemd-timesyncd[11666]: Synchronized to time server 91.206.16.3:123 (0.debian.pool.n
Через несколько минут можно проверить с помощью timedatectl состояние синхронизации:
Local time: Вт 2020-02-04 13:32:03 +05 Universal time: Вт 2020-02-04 08:32:03 UTC RTC time: Вт 2020-02-04 08:32:03 Time zone: Asia/Yekaterinburg (+05, +0500) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Значение в строке «NTP synchronized» должно измениться на yes
Если systemd-timesyncd не синхронизирует часы, то прежде всего проверьте настройки межсетевого экрана (iptables) на предмет разрешения исходящих подключений на 123 порт по протоколу UDP.
Детальную информацию о состоянии синхронизации времени можно посмотреть командой:
timedatectl timesync-status
Server: 103.134.252.11 (0.debian.pool.ntp.org) Poll interval: 34min 8s (min: 32s; max 34min 8s) Leap: normal Version: 4 Stratum: 2 Reference: 68D34CE2 Precision: 1us (-24) Root distance: 65.284ms (max: 5s) Offset: +10.793ms Delay: 149.152ms Jitter: 6.030ms Packet count: 8 Frequency: +47.109ppm
P.S. Утилиту timedatectl так же можно использовать для смены часового пояса, пример:
Выведем список временных зон:
timedatectl list-timezones
Установим временную зону Asia/Yekaterinburg:
timedatectl set-timezone Asia/Yekaterinburg
+5 свидетельствует об установке нашей зоны (Asia/Yekaterinburg это UTC+5)
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.