Инструкция по быстрой настройке клиента синхронизации времени на клиентском компьютере:
sudo apt remove ntp
sudo timedatectl set-ntp true
sudo systemctl start systemd-timesyncd
Данная статья применима к:
- ОС ОН Орёл 2.12;
- ОС СН Смоленск 1.6;
- ОС СН Ленинград 8.1.
Основные понятия
При работе с часами используются следующие понятия, связанными друг с другом через параметры временной зоны и настроек аппаратных часов:
Тип | Пояснение | Пример |
---|---|---|
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). Аппаратные часы рекомендуется всегда использовать в режиме UTC. Современные установщики Linux-систем при установке ОС считают, что аппаратные часы работают в режиме UTC. Все установщики Windows считают, что аппаратные часы работают в режиме локального времени. Если на компьютере одновременно установлены несколько операционных систем, то во всех этих операционных системах должны быть выставлены одинаковые параметры интерпретации показаний системного времени. В версии Astra Linux ОС СН Смоленск 1.5 установщики для совместимости в Windows был настроен трактовать показания времени RTC как показания локального времени. | RTC time: Ср 2019-02-20 07:51:49 Следует помнить, что некоторые аппаратные платформы (например, Raspberry Pi) не оборудованы энергонезависимыми аппаратными часами, и в них показания аппаратного времени должны быть выставлены после включения программно операционной системой. |
Служба времени NTP
Эта служба устанавливается при установке ОС Astra Linux, однако, в зависимости от используемой версии ОС может автоматически не запускаться.
Проверить статус службы можно командой:
sudo systemctl start ntp
После запуска, в общем случае, для использования в качестве клиентской службы, дополнительных настроек не требует.
Для управления службой в состав дистрибутивов включен графический инструмент fly-admin-ntp, который можно установить из графического менеджера пакетов, или из командной строки:
После установки графического инструмента он будет доступен в меню:
Пуск -> Панель управления -> Сеть -> Синхронизация времени (NTP).
Описанные далее действия по настройке можно выполнять с помощью графического инструмента,
или непосредственно редактировать файл настроек /etc/ntp.conf
.
Свой сервер времени
При настройках "по умолчанию" служба ntpd выдает отметки времени всем, кто их запросит, но никому не разрешает управлять собой удалённо.
Пример файла конфигурации службы NTP (/etc/ntp.conf):
Все подключения к службе ограничены, а управляющие подключения запрещены:
# ограничения для IPv4
restrict -4 default kod notrap nomodify nopeer noquery limited
# ограничения для IPv6
restrict -6 default kod notrap nomodify nopeer noquery limited
По умолчанию заданы следующие параметры ограничений:
- kod — узлам, которые слишком часто отправляют запросы сначала отправить предупреждение (поцелуй смерти, kiss of death), затем отключить от сервера
- notrap — не принимать управляющие команды
- nomodify — не принимать команды, которые могут вносить изменения состояния
- nopeer — не синхронизироваться с хостом
- noquery — не принимать запросы
- limited — ограничение одновременного приема запросов
При этом управление с локального компьютера разрешено, и по необходимости можно добавить более слабые ограничения. Например, для сети 192.168.0.0
# не запрещаем принимать запросы от сети 192.168.0.0, но не разрешаем управление из этой сети
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
# разрешаем управление с локального компьютера
restrict 127.0.0.1
restrict ::1
Так как сервер времени сам выступает клиентом для получения своего точного времени, настройка источников синхронизации для сервера делается так же, как и для клиента.
После внесения изменений в конфигурацию следует перезапустить сервис:
Контроль состояния сервиса NTP
Для контроля состояния сервиса NTP предусмотрена команда ntpq, входящая в пакет сервера.
Эта команда получает состояние сервиса с помощью стандартных запросов и выводит сводку на печать.
Типичный вызов команды:
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).
Он не устанавливается по умолчанию, и может быть установлен с помощью графического менеджера пакетов или из командной строки командой
Типичные применения:
проверка доступности сервера времени запросом времени без коррекции показаний времени (опция -q или -d):
sudo ntpdate -q 0.ru.pool.ntp.orgто же самое с подробной диагностикой (опция -d включает подробную диагностику, и так же отменяет выполнение коррекции времени):sudo ntpdate -d 0.ru.pool.ntp.orgто же самое без использования IP-порта 123:sudo ntpdate -du 0.ru.pool.ntp.orgПо умолчанию ntpdate использует тот же IP-порт (123) что и ntpd, и, если сервис ntpd запущен, то ntpdate при запуске сообщает, что порт занят:
sudo ntpdate -q 0.ru.pool.ntp.orgДля того, чтобы использовать для запроса времени IP-порт, отличный от 123, следует использовать опцию -u.
ntpdate[1421]: the NTP socket is in use, exitingТак как IP-порт 123 часто закрыт по соображениям безопасности, команду ntpdate БЕЗ опции -u можно использовать для проверки доступности внешних серверов времени для службы ntpd (запросы в этом случае следует отправлять на серверы времени, указанные в конфигурационном файле службы ntpd):
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 может применяться для периодической коррекции времени:
Передача параметров NTP через DNS
Параметры для доступа к NTP могут автоматически передаваться клиентам через DNS-сервер.
Подробности см. в DNS-сервер BIND9
Изменение настроек клиентов
Изменение настроек может понадобиться в следующих ситуациях:
- оптимизация и локализация сетевого трафика
- работа в изолированной сети
- работа со специальными серверами времени
По умолчанию, служба настроена на работу с открытым пулом специальных серверов времени,
выбирая при запуске каждый раз новый оптимальный набор серверов со всего мира:
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst
Для того, чтобы служба NTP могла обращаться к серверам, имена которых заданы в текстовом виде (как в примере выше), необходимо, чтобы был настроен и работал сервис разрешения имён DNS.
Если служба DNS отсутствует, серверы времени должны быть заданы в виде IP-адресов.
Независимо от способа указания серверов времени, если служба DNS в очередном цикле опроса не сможет обратиться ни к одному из указанных в конфигурационном файле серверов, она просто аварийно завершит свою работу.
При желании ограничить набор серверов российскими серверами можно использовать следующие настройки:
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_адрес_сервера_2>
Особенности работы в виртуальных машинах
Некоторые особенности синхронизации времени описаны в статье про виртуализацию
Служба OpenNTPD
Может быть установлена из репозитория ОС ОН Орёл командой:
Конфигурация службы 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 *
После внесения изменений в файл конфигурации для того, чтобы эти изменения вступили в силу, служба должна быть перезапущена:
Служба TIMESYNCD
Служба timesyncd предлагается в качестве современной "легковесной" замены ntp.
Она более проста, интегрирована в ОС, но несколько ограничена в возможностях.
Служба TIMESYNCD не может выполнять функции сервера, это исключительно клиентская служба.
Служба timesyncd устанавливается автоматически при установке ОС , автоматически запускается при каждой перезагрузке ОС, однако немедленно завершает свою работу с сообщением об ошибке, обнаружив, что на компьютере присутствует служба ntp или служба chronyd, или если машина виртуальная (установлены дополнения гостевой ОС).
Отключить невостребованный автоматический запуск службы можно командой:
После чего запустить службу timesyncd:
Local time: Ср 2018-12-26 11:08:12 MSK
Universal time: Ср 2018-12-26 08:08:12 UTC
RTC time: Ср 2018-12-26 08:08:12
Time zone: Europe/Moscow (MSK, +0300)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
Выбор серверов времени
Служба TIMESYNCD по умолчанию скомпилирована для работы с набором серверов времени из пула Debian.
Дополнительно служба TIMESYNCD получает имена серверов времени от службы systemd-networkd, если служба systemd-networkd предоставляет такую информацию, т.е. в конфигурационных файлах этой службы (каталоги /lib/systemd/network/, /run/systemd/network/, /etc/systemd/network/ или файл /lib/) указаны серверы NTP, привязанные к сетевым интерфейсам (подробнее см. man systemd.network).
Дополнительные и резервные серверы могут быть указаны в собственных конфигурационных файлах службы TIMESYNCD
/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С настроены на локальное время, команда timedatectl status будет выдавать соответствующее предупреждение.
Переключение аппаратных часов на время UTC с одновременной их синхронизацией с системным временем выполняется командой:
Переключение аппаратных часов на локальное время можно выполнить командой:
Настройка режима интерпретации RTC в Windows
Если на компьютере установлены несколько операционных систем, то во всех этих операционных системах должны быть выставлены одинаковые параметры интерпретации показаний системного времени.
Чтобы ОС семейства Windows трактовали показания аппаратных часов как время UTC, использовать параметр реестра [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal", установив его в единицу:
или