Оглавление |
---|
Информация | ||||
---|---|---|---|---|
Инструкция по быстрой настройке клиента синхронизации времени на клиентском компьютере:
Проверка результата:
Подробности ниже в главе: Служба TIMESYNCD |
Информация |
---|
Данная статья применима к:
|
Предупреждение |
---|
Системы электронной цифровой подписи (ЭЦП) для поставления отметок времни на подписываемых документах используют свои собственные доверенные серверы времени. Настройка этих серверов должна осуществляться в соответствии с инструкциями поставщиков таких систем. |
Основные понятия
При работе с часами используются следующие понятия, связанными друг с другом через параметры временной зоны и настроек аппаратных часов:
Тип | Пояснение | Пример | ||||
---|---|---|---|---|---|---|
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
|
Служба времени
NTPntp
Эта служба устанавливается при установке ОС Astra Linux, однако, в зависимости от используемой версии ОС может автоматически не запускаться.
Проверить статус службы можно командой:
Command |
---|
sudo systemctl status ntp |
Если служба не запущена, всключить её автоматический запуск при старте компьютера и запустить её можно командами:
Command |
---|
sudo systemctl enable ntp sudo systemctl start ntp |
После запуска, в общем случае, для использования в качестве клиентской службы, дополнительных настроек не требует.
Информация |
---|
Настроенная на автоматический запуск при перезагрузке компьютера служба ntp будет запускаться автоматически, но, если она не сможет найти ни одного сервера времени из перечисленных в её конфигурации, то будет так же автоматически прекращать свою работу. |
Для управления службой в состав дистрибутивов включен графический инструмент fly-admin-ntp, который можно установить из графического менеджера пакетов, или из командной строки:
Command |
---|
sudo apt install fly-admin-ntp |
После установки графического инструмента он будет доступен в меню:
Информация |
---|
Пуск -> Панель управления -> Сеть -> Синхронизация времени (NTP). |
Описанные далее действия по настройке можно выполнять с помощью графического инструмента,
или непосредственно редактировать файл настроек /etc/ntp.conf
.
Свой сервер времени
При настройках "по умолчанию" служба ntpd выдает отметки времени всем, кто их запросит, но никому не разрешает управлять собой удалённо.
Пример файла конфигурации службы NTP 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 |
По умолчанию заданы следующие параметры ограничений:
- kod — узлам, которые слишком часто отправляют запросы сначала отправить предупреждение (поцелуй смерти, kiss of death), затем отключить от сервера
- notrap — не принимать управляющие команды
- nomodify — не принимать команды, которые могут вносить изменения состояния
- nopeer — не синхронизироваться с хостом
- noquery — не принимать запросы
- limited — ограничение одновременного приема запросов
При этом управление с локального компьютера разрешено, и по необходимости можно добавить более слабые ограничения. Например, для сети 192.168.0.0
Информация |
---|
# не запрещаем принимать запросы от сети 192.168.0.0, но не разрешаем управление из этой сети # разрешаем управление с локального компьютера |
Так как сервер времени сам выступает клиентом для получения своего точного времени, настройка источников синхронизации для сервера делается так же, как и для клиента.
После внесения изменений в конфигурацию следует перезапустить сервис:
Command |
---|
sudo service ntp restart |
Контроль состояния
сервиса NTPслужбы ntp
Для контроля состояния сервиса NTP службы ntp предусмотрена команда ntpq, входящая в пакет сервера.
Эта команда получает состояние сервиса с помощью стандартных запросов и выводит сводку на печать.
Типичный вызов команды:
Command |
---|
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 |
Где:
- первый символ в строке - статус выбора:
- * — выбранный север времени;
- + —новый сервер;
- o — PPS-источник (источник секундных импульсов);
- пробел — не работающий источник;
- — x и др. — «забракованные» (ненадежные) источники.
- remote - адрес опрошенного сервера времени;
- refid - источник сигналов времени, с которым синхронизируется опрошенный сервер.
Это может быть другой сервер, а могут быть аппаратные часы.
В приведённом примере видно, что серверы первого стратума синхронизируются по аппаратным часам; - st - уровень (стратум) сервера. Может принимать значения от 0 до 16. Чем ниже уровень - тем точнее сервер.
Значение стратума 16 скорее всего говорит о том, что сервер признан негодным источником; - t - тип сервера (u - unucast, m - multicast, l - local, p - pool и т.д.);
- when - время, прошедшее с последней синхронизации (последнего ответа сервера), в секундах, если не указано иное;
- poll - интервал опроса (двоичный логарифм периода опроса в секундах);
- reach - восьмеричное значение сдвигового регистр доступности.
Отражает доступность сервера при последних восьми опросах, при 100% доступности проходит значения 0, 1, 3, 7, 17, 37, 77, 177, 377 и далее остаётся равным 377; - delay - задержка ответа (время между отправкой запроса и получением ответа);
- offset - смещение времени относительно локального сервера;
- jitter- дисперсия (разброс) времени прохождения пакетов при обмене с сервером
Проверка и принудительная коррекция времени с помощью команды ntpdate
Для проверки работы сервера времени и коррекции показаний времени в составе дистрибутивов предусмотрен инструмент командной строки ntpdate.
Типичные ошибки, которые можно обнаружить с помощью этой команды:
- no server suitable for synchronization found - пригодный для синхронизации сервер не найден, говорит сама за себя, типично для службы ntpd, которая, не обнаружив возможности синхронизироваться, просто перестаёт работать;
- leap not in sync - сервер находится в состоянии незавершенной коррекции времени, его показания пока недостоверны. Обычно действий не требует, и исчезает через некоторое время, после завершения сервером коррекции показаний своих часов.
Этот же инструмент может использоваться для периодической коррекции времени (например, с помощью службы выполнения заданий по расписанию cron).
Он не устанавливается по умолчанию, и может быть установлен с помощью графического менеджера пакетов или из командной строки командой
Информация |
---|
sudo apt install ntpdate |
Типичные применения:
проверка доступности сервера времени запросом времени без коррекции показаний времени (опция -q или -d):
Command sudo ntpdate -q 0.ru.pool.ntp.org
то же самое с подробной диагностикой (опция -d включает подробную диагностику, и так же отменяет выполнение коррекции времени):
Command sudo ntpdate -d 0.ru.pool.ntp.org то же самое без использования IP-порта 123:
Command sudo ntpdate -du 0.ru.pool.ntp.org Предупреждение По умолчанию ntpdate использует тот же IP-порт (123) что и ntpd, и, если сервис ntpd запущен, то ntpdate при запуске сообщает, что порт занят:
Command Title sudo ntpdate -q 0.ru.pool.ntp.org ntpdate[1421]: the NTP socket is in use, exiting
Для того, чтобы использовать для запроса времени IP-порт, отличный от 123, следует использовать опцию -u.
Так как IP-порт 123 часто закрыт по соображениям безопасности, команду ntpdate БЕЗ опции -u можно использовать для проверки доступности внешних серверов времени для службы ntpd (запросы в этом случае следует отправлять на серверы времени, указанные в конфигурационном файле службы ntpd):
Command sudo service ntp stop
sudo ntpdate -q 0.ru.pool.ntp.org
sudo ntpdate -qu 0.ru.pool.ntp.org
sudo service ntp startЕсли первая команда ntpdate (с опцией "-q") не может получить ответ от сервера, а вторая (с опцией "-qu") может, то нужно либо разблокировать доступ к IP-порту 123, либо рассмотреть возможность замены NTP на службу, работающую через другие порты (например, OpenNTPD).
Команда ntpdate может применяться для периодической коррекции времени:
Command |
---|
sudo ntpdate -ubv 0.ru.pool.ntp.org |
См. тж. про применение ntpdate в статье про виртуализацию
Передача параметров
NTPntp через DNS
Параметры для доступа к NTP серверу времени могут автоматически передаваться клиентам через 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 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 |
Кроме того, можно использовать серверы ВНИИФТРИ, актуальный список которых доступен по ссылке: http://vniiftri.ru/ru/uslugi-serverov
При необходимости работать в изолированной сети, или при желании ограничить свой внешний трафик, можно использовать свои локальные серверы времени:
Информация |
---|
server <IP_адрес_сервера_1> server <IP_адрес_сервера_2> |
Особенности работы в виртуальных машинах
Некоторые особенности синхронизации времени описаны в статье про виртуализацию
Служба
OpenNTPDopenntpd
Может быть установлена из репозитория ОС ОН Орёл командой:
Command |
---|
sudo apt install opеnntpd |
После установки запускается автоматически, однако по умолчанию работает только как клиент, и не обслуживает запросы как сервер времени.
Конфигурация службы openntpd находится в файле /etc/openntpd/ntpd.conf. Конфигурацию OpenNTPD службы openntpd можно рассматривать как упрощенный вариант конфигурации NTPслужбы 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 * |
После внесения изменений в файл конфигурации для того, чтобы эти изменения вступили в силу, служба должна быть перезапущена:
Command |
---|
sudo systemctl restart openntpd |
Так как служба OpenNTPD поддерживает совместимый со службой NTP формат обмена даннымopenntpd использует стандартный протокол NTP, для диагностики службы OpenNTPD openntpd можно использовать те же описанные выше команды ntpq и ntpdate (ntpq придётся использовать с другой машины, так как эта команда входит в состав пакета ntp).
Служба
TIMESYNCDtimesyncd
Служба timesyncd предлагается в качестве современной "легковесной" замены ntp.
Она более проста, интегрирована в ОС, но несколько ограничена в возможностях.
Информация |
---|
Служба TIMESYNCD timesyncd не может выполнять функции сервера, это исключительно клиентская служба. |
Служба timesyncd устанавливается автоматически при установке ОС, автоматически запускается при каждой перезагрузке ОС, однако немедленно завершает свою работу с сообщением об ошибке, обнаружив, что на компьютере присутствует служба ntp или служба chronyd, или если машина виртуальная (установлены дополнения гостевой ОС).
Отключить невостребованный автоматический запуск службы можно командой:
Command |
---|
sudo timedatectl set-ntp false |
Включить, соответственно, командой (однако, пока присутствует служба ntp (или openntpd или chronyd), служба timesyncd всё равно работать не будет):
Command |
---|
sudo timedatectl set-ntp true |
Для использования timesyncd в первую очередь необходимо полностью удалить службы ntp и openntpd (если они были установлены):
Command |
---|
sudo apt purge ntp openntpd |
Если была установлена служба времени chronyd удалить её:
Command |
---|
sudo apt purge chrony |
После чего запустить службу timesyncd:
Command |
---|
sudo systemctl start systemd-timesyncd |
Состояние службы можно проверить командой:
Command |
---|
sudo systemctl status systemd-timesyncd |
Или командой:
Command |
---|
sudo timedatectl status |
Примерный вывод команды:
Информация |
---|
Local time: Ср 2018-12-26 11:08:12 MSK |
Выбор серверов времени
Служба TIMESYNCD timesyncd по умолчанию скомпилирована для работы с набором серверов времени из пула Debian.
Дополнительно служба TIMESYNCD timesyncd получает имена серверов времени от службы systemd-networkd, если служба systemd-networkd предоставляет такую информацию, т.е. в конфигурационных файлах этой службы (каталоги /lib/systemd/network/, /run/systemd/network/, /etc/systemd/network/ или файл /lib/) указаны серверы NTP, привязанные к сетевым интерфейсам (подробнее см. man systemd.network).
Дополнительные и резервные серверы могут быть указаны в собственных конфигурационных файлах службы TIMESYNCDtimesyncd
Информация |
---|
/etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf.d/*.conf /run/systemd/timesyncd.conf.d/*.conf /usr/lib/systemd/timesyncd.conf.d/*.conf |
Опции в конфигурационном файле:
- NTP= - разделённый пробелами основной список имён NTP-серверов. Объединяется со списком полученных от службы systemd-networkd. По умолчанию список пустой.
- FallbackNTP= разделённый пробелами список имён резервных NTP-серверов.
TIMESYNCD перебирает по очереди все серверы из основного списка, и, если не удалось связаться ни с одним из серверов, обращается к серверам из резервного списка.
Настройка режима интерпретации показаний аппаратных ( RTC) часов
При установке ОС
При установке ОС ОН Орёл 2.12 режим интерпретации показаний аппаратных часов можно выбрать в окне "Дополнительные настройки ОС", пункт "Системные часы установлены на местное время":
На установленной ОС
При использовании любой службы времени рекомендуется настраивать аппаратные часы компьютера так, чтобы они показывали не локальное, а всемирное координированное время (UTC).
Если этого не сделать, возможны проблемы с коррекцией времени и сменой сезонного локального времени.
Если RTС настроены не на UTC, а на локальное время, команда timedatectl status будет выдавать соответствующее предупреждение.
Переключение аппаратных часов на время UTC с одновременной их синхронизацией с системным временем выполняется командой:
Command |
---|
sudo timedatectl set-local-rtc 0 |
Для переключения с одновременной синхронизацией системного времени по показаниям часов RTC можно использовать опцию --adjust-system-clock.
Переключение аппаратных часов на локальное время можно выполнить командой:
Command |
---|
sudo timedatectl set-local-rtc 1 |
Настройка режима интерпретации RTC в Windows
Предупреждение |
---|
Если на компьютере установлены несколько операционных систем, то во всех этих операционных системах должны быть выставлены одинаковые параметры интерпретации показаний системного времени. |
Чтобы ОС семейства 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 |