Синхронизация времени — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
(openntpd)
 
(не показаны 22 промежуточные версии 3 участников)
Строка 1: Строка 1:
 
[[Категория:Admin]]
 
[[Категория:Admin]]
 +
[[Категория:Синхронизация_времени]]
 
{{Stub}}
 
{{Stub}}
  
Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует.
+
Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует. Так же существует дистрибутивонезависимое MINI-HOWTO на эту тему<ref>[http://rus-linux.net/MyLDP/MINI-HOWTO-ru/Clock.html http://rus-linux.net/MyLDP/MINI-HOWTO-ru/Clock.html]</ref>.
  
 
==tzdata==
 
==tzdata==
Строка 13: Строка 14:
  
 
==NTP==
 
==NTP==
===openntpd===
+
===пакет openntpd===
  
Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток.
+
Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток. Сам демон имеет название ntpd, как и аналогичный из пакета ntp, однако не является совместимым с ним ни по параметрам запуска, ни по средствам контроля, ни по конфигурационному файлу.
  
===ntpd===
+
===пакет ntp===
Устаревший сервер времени, не рекомендуется к использованию.
+
Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd.
 +
====ntpd====
 +
Собственно сам демон, который может работать как в качестве клиента, так и в качестве сервера.
 +
====ntpdate====
 +
Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Если запущен ntpd, требуется использовать ключ -u при запуске.
  
===chronyd===
+
====ntpq====
 +
Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого.
 +
 
 +
===пакет chrony===
 
Наименее проблемный сервер времени, умеющих синхронизировать время быстро по списку доверенных серверов.<br>
 
Наименее проблемный сервер времени, умеющих синхронизировать время быстро по списку доверенных серверов.<br>
В некоторых конфигурациях - это единственный сервер времени, с которым что-то работает. Например - для кластеров файловой системы ceph.
+
В некоторых конфигурациях это единственный сервер времени, с которым что-то работает, например, кластеры файловой системы ceph.
  
<code>apt-get install chrony<br>
+
apt-get install chrony
systemctl start chronyd<br>
+
systemctl start chronyd
systemctl enable chronyd<br>
+
systemctl enable chronyd
</code>
 
  
===systemd===
+
===пакет [[Systemd-timesyncd|systemd-timesyncd]]===
 +
Является клиентом SNTP, не может быть сервером NTP.
  
 
==TIME 868==
 
==TIME 868==
 +
 +
===пакет xinetd===
 +
 +
Встроенный сервер TIME 868 имеет демон xinetd. Чтобы служба заработала, надо в /etc/xinetd.d/time-tcp и /etc/xinetd.d/time-udp заменить "disable = yes" на "disable = no". Так же, не следует забывать про основной /etc/xinetd.conf, в котором, по-умолчанию, присутствует параметр "only_from = 127.0.0.1".
 +
 +
===пакет rdate===
 +
 +
TIME 868 клиент
 +
 +
===пакет netdate===
 +
 +
TIME 868 клиент
 +
 +
==[https://tools.ietf.org/html/rfc867 DAYTIME 867]==
 +
 +
[https://forum.altlinux.org/index.php?topic=40861.0 Упоминается в контексте Samba]. ''надо понять и дописать, для чего''
  
 
==Синхронизация системного времени с RTC==
 
==Синхронизация системного времени с RTC==
Строка 39: Строка 63:
 
При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут)<ref>[https://lists.altlinux.org/pipermail/community/2014-March/681844.html vsu@ в community@ про ядро]</ref>. В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.
 
При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут)<ref>[https://lists.altlinux.org/pipermail/community/2014-March/681844.html vsu@ в community@ про ядро]</ref>. В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.
  
Проверить, что функция синхронизации включена, можно посредством команды
+
Проверить, что функция синхронизации может быть активирована, можно посредством команды
  
 
  zgrep "HCTOSYS\|SYSTOHC" /proc/config.gz
 
  zgrep "HCTOSYS\|SYSTOHC" /proc/config.gz
  
===hwclock===
+
===пакет hwclock===
  
При запуске однократно синхронизирует RTC с системными часами, либо наоборот. В зависимости от параметров в RTC может быть установлено время в UTC, либо локальное.
+
При запуске однократно синхронизирует RTC с системными часами, либо наоборот. В зависимости от параметров в RTC может быть установлено время в UTC, либо локальное. В момент исполнения hwclock создаёт файл /etc/adjtime, в котором записано отклонение RTC от системного времени и какое время (локальное, либо UTC) записано в RTC. При загрузке системное время выставляется относительно RTC по данными из adjtime. Несоответствие значения временной зоны в RTC и в файле adjtime (UTC/LOCAL) приводит к сдвигу системного времени при загрузке. В некоторых случаях (например, при использовании [[Синхронизация_времени#ntpd|ntpd]]) можно просто обнулить содержимое /etc/adjtime после использования ( {{cmd|>/etc/adjtime}} ).
  
 
== Примечания ==
 
== Примечания ==
 
<references/>
 
<references/>

Текущая версия на 09:13, 25 июля 2019

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует. Так же существует дистрибутивонезависимое MINI-HOWTO на эту тему[1].

tzdata[править]

Пакет содержит множество описаний временны́х зон, нужная из которых копируется в /etc/localtime. Только этот файл определяет системную временну́ю зону. Для дистрибутивов ALT с sysvinit копирование может быть выполнено командой

service clock tzset

Сама зона, в этом случае, определяется по значению переменной ZONE из /etc/sysconfig/clock.

NTP[править]

пакет openntpd[править]

Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток. Сам демон имеет название ntpd, как и аналогичный из пакета ntp, однако не является совместимым с ним ни по параметрам запуска, ни по средствам контроля, ни по конфигурационному файлу.

пакет ntp[править]

Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd.

ntpd[править]

Собственно сам демон, который может работать как в качестве клиента, так и в качестве сервера.

ntpdate[править]

Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Если запущен ntpd, требуется использовать ключ -u при запуске.

ntpq[править]

Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого.

пакет chrony[править]

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

apt-get install chrony
systemctl start chronyd
systemctl enable chronyd

пакет systemd-timesyncd[править]

Является клиентом SNTP, не может быть сервером NTP.

TIME 868[править]

пакет xinetd[править]

Встроенный сервер TIME 868 имеет демон xinetd. Чтобы служба заработала, надо в /etc/xinetd.d/time-tcp и /etc/xinetd.d/time-udp заменить "disable = yes" на "disable = no". Так же, не следует забывать про основной /etc/xinetd.conf, в котором, по-умолчанию, присутствует параметр "only_from = 127.0.0.1".

пакет rdate[править]

TIME 868 клиент

пакет netdate[править]

TIME 868 клиент

DAYTIME 867[править]

Упоминается в контексте Samba. надо понять и дописать, для чего

Синхронизация системного времени с RTC[править]

Linux kernel[править]

При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут)[2]. В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.

Проверить, что функция синхронизации может быть активирована, можно посредством команды

zgrep "HCTOSYS\|SYSTOHC" /proc/config.gz

пакет hwclock[править]

При запуске однократно синхронизирует RTC с системными часами, либо наоборот. В зависимости от параметров в RTC может быть установлено время в UTC, либо локальное. В момент исполнения hwclock создаёт файл /etc/adjtime, в котором записано отклонение RTC от системного времени и какое время (локальное, либо UTC) записано в RTC. При загрузке системное время выставляется относительно RTC по данными из adjtime. Несоответствие значения временной зоны в RTC и в файле adjtime (UTC/LOCAL) приводит к сдвигу системного времени при загрузке. В некоторых случаях (например, при использовании ntpd) можно просто обнулить содержимое /etc/adjtime после использования ( >/etc/adjtime ).

Примечания[править]