Данная статья применима к:
|
| Системы электронной цифровой подписи (ЭЦП) для проставления отметок времени на подписываемых документах используют свои собственные доверенные серверы времени. Настройка этих серверов должна осуществляться в соответствии с инструкциями поставщиков таких систем. |
Инструкция по быстрой настройке клиента синхронизации времени на клиентском компьютереДля клиентских компьютеров в большинстве случаев серверные службы синхронизации времени (ntp или chrony) не нужны. Их можно удалить и использовать клиентскую службу systemd-timesyncd. В Astra Linux Special Edition x.8 клиентская служба времени представлена отдельным пакетом systemd-timesyncd. Установить пакет можно командой:
В более ранних обновления клиент systemd-timesyncd интегрирован в пакет systemd, установлен всегда, и отдельной установки на требует. Последовательность шагов для переключения на клиент systemd-timesyncd:
Подробности по настройке службы systemd-timesyncd см. далее в главе Служба systemd-timesyncd. |
Инструкция по быстрой принудительной синхронизации времени на клиентском компьютере
|
| Службы ntp, chronyd и timesyncd, несовместимы между собой и их одновременная работа невозможна. |
Серверная служба ntp (представлена пакетами ntp и ntpdate). Может обеспечивать работу ОС в режиме как сервера точного времени, так и клиента.
| Для синхронизации времени с внешними серверами служба ntp требует полного двустороннего доступа к сетевому порту 123 и не умеет работать с другими портами. Если по каким-то причинам порт 123 в вашей сети закрыт и не может быть открыт, то возможно применение одного из следующих решений:
|
Клиентская служба timedatectl / systemd-timesyncd.service. Не представлена отдельными пакетами, встроена непосредственно в ОС.
Предназначена для использования только на клиентских ОС, и не может работать сервером точного времени.
Поддерживает только упрощенный протокол передачи времени, однако считается более современным вариантом для типичных клиентских применений.
Служба systemd-timesyncd.service не будет работать, если:
|
При работе с часами используются следующие понятия, связанными друг с другом через параметры временной зоны и настроек аппаратных часов:
| Тип | Пояснение | Пример | ||
|---|---|---|---|---|
Universal time, UTC | UTC — это всемирное координированное время, стандарт времени, принятый на Земле.
| Universal time: Ср 2019-02-20 07:51:49 UTC | ||
| Time Zone | Временная зона. Определяет временное смещение и параметры сезонного (зимнего/летнего) времени. | Time zone: Europe/Moscow (MSK, +0300) | ||
Local time | Локальное время, местное время. Получается из всемирного координированного времени добавлением временного смещения, определённого во временной зоне. Для Москвы смещение составляет +3 часа (Time zone: Europe/Moscow (MSK, +0300)). Используется в основном для взаимодействия с пользователями системы. | Local time: Ср 2019-02-20 10:51:49 MSK | ||
| RTC time | Аппаратное время. Время, установленное в аппаратных часах компьютера (Real Time Clock, RTC, также CMOS или BIOS time). При установке системного времени (UTC) на основании показаний аппаратных часов (UTC или местное) операционная система принимает решение о том, какое именно время (UTC или местное) показывают аппаратные часы, на основании собственных внутренних настроек (см. man timedatectl).
| RTC time: Ср 2019-02-20 07:51:49
|
Начиная с Astra Linux Special Edition x.7 и Astra Linux Common Edition 2.12.43 в состав дистрибутивов включен пакет chrony (системная служба chronyd) - версия службы времени, в настоящее время рекомендованная к применению вместо службы ntp. В более старых вариантах Astra Linux пакет chrony может быть установлен из репозиториев Debian.
В частности, служба chronyd, в отличие от службы ntp:
При установке ОС пакет chrony по умолчанию не устанавливается и может быть установлен командой:
| sudo apt install chrony |
При установке пакета chrony, если ранее был установлен, будет автоматически удален:
При установке контроллера домена FreeIPA (версии 4.8.5 и далее. см. Контроллер ЕПП FreeIPA в Astra Linux) пакет chrony будет установлен автоматически, и при этом автоматически будет удалён пакет ntp. |
Конфигурация службы chronyd находится в файле с именем /etc/chrony/chrony.conf. В файле содержатся подробные комментарии о назначении параметров настройки. После установки служба chronyd запускается с настройками "по умолчанию", однако будет при этом работать только как клиент синхронизации времени.
При инициализации контроллера домена FreeIPA служба chronyd будет автоматически переведена в режим сервера времени. |
При использовании настройки "по умолчанию" служба chronyd будет работать только как клиент синхронизации времени. Чтобы служба начала работать как сервер времени (т.е. отвечала другим клиентам на запросы), нужно в конфигурацию добавить строчку с разрешениями, в простейшем варианте - разрешить всем:
allow |
После чего перезапустить службу chronyd:
| sudo systemctl restart chronyd |
Более подробную информацию см. в документации:
| man chrony.conf |
Для нормальной работы информационной инфраструктуры часы всех компьютеров, находящихся в одной общей сети, всегда должно быть синхронизированы. При этом если сеть изолирована от внешнего мира, то время самой сети может быть не синхронизировано с мировым временем. Технически это не приведет к нарушениям работы пока часы компьютеров синхронны.
| Отсутствие синхронизации с мировым временем может быть неприемлемо для некоторых прикладных задач, например, для работы с цифровыми сертификатами, электронными подписями и пр. |
В изолированной сети служба времени, обеспечивающая синхронизацию всех часов в этой сети, должна уметь работать без синхронизации с внешними по отношению к сети источниками точного времени. Для поддержки такого режима работы используются локальные физические источники точного времени (спутниковые данные, атомные часы и пр.). При отсутствии таких источников используется опция конфигурации local. Эта опции позволяет службе времени продолжать работу игнорируя отсутствие внешней синхронизации, сообщая при этом клиентам, что она синхронизирована. Пример задания значения опции:
local stratum 8 |
Числовое значение в опции (от 1 до 15) указывает уровень синхронизации службы, который служба сообщает клиентам. Значение 1 указывает, что служба синхронизируется с физическим источником точного времени, значение 2 указывает, что служба синхронизируется со службой уровня 1, значение 3 - со службой уровня 2 и т.д. Значения 10 и более указывают, что время синхронизировано, но недостоверно.
Для того, чтобы отключить использование службой chronyd протокола IPv6 (использование отключается полностью, сокет IPv6 не создается):
В файле /etc/default/chrony в строку параметров DAEMON_OPTS добавить значение -4. В итоге строка должна выглядеть примерно так:
DAEMON_OPTS="-F -1 -4" |
Перезапустить службу chronyd:
| sudo systemctl restart chronyd |
Эта служба устанавливается при установке ОС Astra Linux, однако, в зависимости от используемой версии ОС может автоматически не запускаться. Проверить статус службы можно командой:
| systemctl status ntp |
Если служба не запущена, включить её автоматический запуск при старте компьютера и запустить её можно командами:
| sudo systemctl enable ntp sudo systemctl start ntp |
После запуска, в общем случае, для использования в качестве клиентской службы, дополнительных настроек не требует.
| Настроенная на автоматический запуск при перезагрузке компьютера служба ntp будет запускаться автоматически, но, если она не сможет найти ни одного сервера времени из перечисленных в её конфигурации, то будет так же автоматически прекращать свою работу. |
Для управления службой в состав дистрибутивов включен графический инструмент fly-admin-ntp, который можно установить из графического менеджера пакетов, или из командной строки:
sudo apt install fly-admin-ntp |
После установки графического инструмента он будет доступен в меню:
Пуск -> Панель управления -> Сеть -> Синхронизация времени (NTP). |
Описанные далее действия по настройке можно выполнять с помощью графического инструмента,
или непосредственно редактировать файл настроек /etc/ntp.conf.
При настройках "по умолчанию" служба ntpd выдает отметки времени всем, кто их запросит, но никому не разрешает управлять собой удаленно. Пример файла конфигурации службы ntp (файл /etc/ntp.conf):
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help driftfile /var/lib/ntp/ntp.drift # Enable this if you want statistics to be logged. statistics loopstats peerstats clockstats
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# By default, exchange time with everybody, but don't allow configuration. # Local users may interrogate the ntp server more closely. # Needed for adding pool entries # Clients from this (example!) subnet have unlimited access, but only if
# If you want to listen to time broadcasts on your local subnet, de-comment the |
Все подключения к службе ограничены, а управляющие подключения запрещены:
# ограничения для IPv4 |
По умолчанию заданы следующие параметры ограничений:
При этом управление с локального компьютера разрешено, и по необходимости можно добавить более слабые ограничения. Например, для сети 192.168.0.0
# не запрещаем принимать запросы от сети 192.168.0.0, но не разрешаем управление из этой сети # разрешаем управление с локального компьютера |
Так как сервер времени сам выступает клиентом для получения своего точного времени, настройка источников синхронизации для сервера делается так же, как и для клиента.
После внесения изменений в конфигурацию следует перезапустить сервис:
| sudo service ntp restart |
Контроль состояния службы ntp
Для контроля состояния службы ntp предусмотрена команда ntpq, входящая в пакет сервера.
Эта команда получает состояние сервиса с помощью стандартных запросов и выводит сводку на печать.
Типичный вызов команды:
| ntpq -p |
Типичный вывод команды при нормально работающем сервисе:
remote refid st t when poll reach delay offset jitter============================================================================== 0.ru.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.000 1.ru.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.000 2.ru.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.000 3.ru.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.000 127.127.1.0 .LOCL. 10 l 1101 64 0 0.000 0.000 0.000+185.209.85.222 195.91.239.8 2 u 20 64 377 10.631 0.690 0.355*195.91.239.8 .PPS. 1 u 19 64 377 1.256 0.081 0.065+192.36.143.130 .PPS. 1 u 18 64 377 19.755 0.129 0.330-37.193.156.169 80.242.83.227 2 u 12 64 377 44.877 -0.832 2.427-95.165.138.248 89.109.251.24 2 u 7 64 377 3.118 0.241 0.140 |
Где:
Для проверки работы сервера времени и коррекции показаний времени в составе дистрибутивов предусмотрен инструмент командной строки ntpdate.
Типичные ошибки, которые можно обнаружить с помощью этой команды:
Этот же инструмент может использоваться для периодической коррекции времени (например, с помощью службы выполнения заданий по расписанию cron).
Инструмент ntpdate устанавливается по умолчанию, и может быть установлен с помощью графического менеджера пакетов или из командной строки командой:
| sudo apt install ntpdate |
Типичные применения:
проверка доступности сервера времени запросом времени без коррекции показаний времени (опция -q):
sudo ntpdate -q 0.ru.pool.ntp.org |
проверка доступности сервера времени запросом времени с подробной диагностикой (опция -d включает подробную диагностику, использует непривилегированный порт, и так же отменяет выполнение коррекции времени):
| sudo ntpdate -d 0.ru.pool.ntp.org |
коррекция времени без использования IP-порта 123 (используется непривилегированный порт). Может применяться для принудительной коррекции времени в сетях, где порт 123 закрыт:
| sudo ntpdate -u 0.ru.pool.ntp.org |
По умолчанию ntpdate использует тот же IP-порт (123) что и ntpd, и, если сервис ntpd запущен, то ntpdate при запуске сообщает, что порт занят:
Для того, чтобы использовать для запроса времени IP-порт, отличный от 123, следует использовать опцию -u. Так как IP-порт 123 часто закрыт по соображениям безопасности, команду ntpdate БЕЗ опции -u можно использовать для проверки доступности внешних серверов времени для службы ntpd (запросы в этом случае следует отправлять на серверы времени, указанные в конфигурационном файле службы ntpd):
Если первая команда ntpdate (с опцией "-q") не может получить ответ от сервера, а вторая (с опцией "-qu") может, то нужно либо разблокировать доступ к IP-порту 123, либо рассмотреть возможность замены NTP на службу, работающую через другие порты OpenNTPD, chrony, systemd-timesyncd). |
Команда ntpdate может применяться для периодической коррекции времени:
| sudo ntpdate -ubv 0.ru.pool.ntp.org |
См. тж. про применение ntpdate в статье про виртуализацию
Для оперативной проверки состояния локальной службы ntp можно использовать команду:
sudo ntpq -c sysinfo |
Пример вывода команды при нарушении работы службы (серверы для синхронизации недоступны):
associd=0 status=c016 leap_alarm, sync_unspec, 1 event, restart, system peer: 0.0.0.0:0 system peer mode: unspec leap indicator: 11 stratum: 16 log2 precision: -24 root delay: 0.000 root dispersion: 0.300 reference ID: INIT reference time: (no time) system jitter: 0.000000 clock jitter: 0.000 clock wander: 0.000 broadcast delay: -50.000 symm. auth. delay: 0.000 |
Пример вывода команды при нормальной работе службы (синхронизация выполняется или выполнена):
associd=0 status=0614 leap_none, sync_ntp, 1 event, freq_mode, system peer: ntp3.vniiftri.ru:123 system peer mode: client leap indicator: 00 stratum: 2 log2 precision: -24 root delay: 5.638 root dispersion: 187.866 reference ID: 89.109.251.23 reference time: e8188920.f000d2a1 Wed, May 24 2023 16:01:20.937 system jitter: 0.000000 clock jitter: 0.997 clock wander: 0.000 broadcast delay: -50.000 symm. auth. delay: 0.000 |
Параметры для доступа к серверу времени могут автоматически передаваться клиентам через DNS-сервер. Подробности см. в DNS-сервер BIND9
Изменение настроек может понадобиться в следующих ситуациях:
По умолчанию, служба настроена на работу с открытым пулом специальных серверов времени,
выбирая при запуске каждый раз новый оптимальный набор серверов со всего мира:
| pool 0.debian.pool.ntp.org iburst pool 1.debian.pool.ntp.org iburst pool 2.debian.pool.ntp.org iburst pool 3.debian.pool.ntp.org iburst |
Для того, чтобы служба ntp могла обращаться к серверам, имена которых заданы в текстовом виде (как в примере выше), необходимо, чтобы был настроен и работал сервис разрешения имён DNS. |
При желании ограничить набор серверов российскими серверами можно использовать следующие настройки:
| pool 0.ru.pool.ntp.org iburst pool 1.ru.pool.ntp.org iburst pool 2.ru.pool.ntp.org iburst pool 3.ru.pool.ntp.org iburst |
Кроме того, можно использовать серверы ВНИИФТРИ, актуальный список которых доступен по ссылке: https://vniiftri.ru/catalog/services/sinkhronizatsiya-vremeni-cherez-ntp-servera/.
При необходимости работать в изолированной сети, или при желании ограничить свой внешний трафик, можно использовать свои локальные серверы времени:
| server <IP_адрес_сервера_1> server <IP_адрес_сервера_2> |
Некоторые особенности синхронизации времени описаны в статье про виртуализацию
Может быть установлена из репозитория Astra Linux Common Edition командой:
| sudo apt install opеnntpd |
После установки запускается автоматически, однако по умолчанию работает только как клиент, и не обслуживает запросы как сервер времени.
Конфигурация службы openntpd находится в файле /etc/openntpd/ntpd.conf. Конфигурацию службы openntpd можно рассматривать как упрощенный вариант конфигурации службы ntp. Пример конфигурации:
# $OpenBSD: ntpd.conf,v 1.14 2015/07/15 20:28:37 ajacoutot Exp $ # sample ntpd configuration file, see ntpd.conf(5) # Addresses to listen on (ntpd does not listen by default) listen on * #listen on 127.0.0.1 #listen on ::1 # sync to a single server #server ntp.example.org # use a random selection of NTP Pool Time Servers # see http://support.ntp.org/bin/view/Servers/NTPPoolServers #servers pool.ntp.org # Choose servers announced from Debian NTP Pool servers ntp21.vniiftri.ru #servers 0.debian.pool.ntp.org #servers 1.debian.pool.ntp.org #servers 2.debian.pool.ntp.org #servers 3.debian.pool.ntp.org # use a specific local timedelta sensor (radio clock, etc) #sensor nmea0 # use all detected timedelta sensors #sensor * |
В примере выше служба настроена на синхронизацию с сервером ntp21.vniiftri.ru ВНИИФТРИ, и работает в режиме сервера.
Обратите внимание на строчку, включающую прослушивание службой порта 123 для обслуживания запросов от клиентов:
# Addresses to listen on (ntpd does not listen by default) listen on * |
После внесения изменений в файл конфигурации для того, чтобы эти изменения вступили в силу, служба должна быть перезапущена:
| sudo systemctl restart openntpd |
Так как служба openntpd использует стандартный протокол NTP, для диагностики службы openntpd можно использовать описанные выше команды ntpq и ntpdate (ntpq придётся использовать с другой машины, так как эта команда входит в состав пакета ntp).
Служба timesyncd предлагается в качестве современной "легковесной" замены ntp. Она более проста, интегрирована в ОС, но несколько ограничена в возможностях.
Служба timesyncd не может выполнять функции сервера, это исключительно клиентская служба. |
sudo timedatectl set-ntp false |
sudo timedatectl set-ntp true |
| sudo apt purge chrony sudo apt purge ntp sudo apt purge openntpd |
| sudo systemctl start systemd-timesyncd |
Состояние службы можно проверить командой:
| systemctl status systemd-timesyncd |
Или командой:
sudo timedatectl status |
Примерный вывод команды:
Local time: Ср 2018-12-26 11:08:12 MSK |
Служба timesyncd по умолчанию скомпилирована для работы предопределенным набором серверов. Эти серверы перечислены в комментарии в файле /etc/systemd/timesyncd.conf. Для Astra Linux Special Edition x.7 это:
#FallbackNTP=0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org 3.ru.pool.ntp.org ntp3.vniiftri.ru ntp4.vniiftri.ru ntp21.vniiftri.ru vniiftri2.khv.ru ntp2.niiftri.irkutsk.ru ntp3.stratum2.ru ntp2.stratum2.ru |
и, если в конфигурационных файлах (см. далее) не указаны иные серверы, то используются предопределенные.
Дополнительно служба timesyncd получает имена серверов времени от службы systemd-networkd, если служба systemd-networkd предоставляет такую информацию, т.е. в конфигурационных файлах этой службы (каталоги /lib/systemd/network/, /run/systemd/network/, /etc/systemd/network/ или файл /lib/) указаны серверы NTP, привязанные к сетевым интерфейсам (подробнее см. man systemd.network).
Дополнительные и резервные серверы могут быть указаны в собственных конфигурационных файлах службы timesyncd
| /etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf.d/*.conf /run/systemd/timesyncd.conf.d/*.conf /usr/lib/systemd/timesyncd.conf.d/*.conf |
Опции в конфигурационном файле:
TIMESYNCD перебирает по очереди все серверы из основного списка, и, если не удалось связаться ни с одним из серверов, обращается к серверам из резервного списка.
При установке Astra Linux Common Edition 2.12 режим интерпретации показаний аппаратных часов можно выбрать в окне "Дополнительные настройки ОС", пункт "Системные часы установлены на местное время":

При использовании любой службы времени рекомендуется настраивать аппаратные часы компьютера так, чтобы они показывали не локальное, а всемирное координированное время (UTC).
Если этого не сделать, возможны проблемы с коррекцией времени и сменой сезонного локального времени.
Если RTС настроены не на UTC, а на локальное время, команда timedatectl status будет выдавать соответствующее предупреждение.
Переключение аппаратных часов на время UTC с одновременной их синхронизацией с системным временем выполняется командой:
| sudo timedatectl set-local-rtc 0 |
Для переключения с одновременной синхронизацией системного времени по показаниям часов RTC можно использовать опцию --adjust-system-clock.
Переключение аппаратных часов на локальное время можно выполнить командой:
| sudo timedatectl set-local-rtc 1 |
Если на компьютере установлены несколько операционных систем, то во всех этих операционных системах должны быть выставлены одинаковые параметры интерпретации показаний системного времени. |
Чтобы ОС семейства Windows трактовали показания аппаратных часов как время UTC, использовать параметр реестра [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal", установив его в единицу:
| [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001 |
или
| [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=qword:00000001 |