- Синхронизация времени на AstraLinux в Windows домене
- Проблема с часами в часовых поясах отличных от Europe/Moscow
- Так же замечены другие проблемы:
- Решение:
- Диагностика неисправности
- Исправление неисправности
- Последовательность настройки времени:
- Сервис времени высокой точности PTP (Precision Time Protocol)
- Проверка оборудования
- Установка пакета
- Настройка службы timemaster
- Включение службы домена точного времени (ptp_domain)
- Включение и настройка службы ntp
- Настройка автоматического запуска timemaster
- Настройка службы ptp4l
- Настройка службы phc2sys
- Запуск всех служб
Синхронизация времени на AstraLinux в Windows домене
Во первых определяем источник точного времени, как правило это один из Domain Controller. Для этого на Windows находящейся в домене выполняем команду :
Получим список контроллеров домена. Либо получаем имя сервера с которого данная Windows машина обновляет время, выполняем команду :
(Выполнение данной команды может занять некоторое время)
На Линукс сервере проверяем доступность полученого сервера точного времени — пингуем его.
Далее в файле /etc/systemd/timesyncd.conf раскомментируем строку NTP и добавляем в нее IP сервера времени :
Закомментируем строку с FallbackNTP
Добавляем в файл /etc/ntp.conf строку :
закомментируем остальные строки начинающиеся с pool …
sudo systemctl ntp restart
Проверяем работу ntp выполнив команду :
будет выведена таблица, где:
- remote — имя ntp сервера
- refid — ip вышестоящего NTP сервера
- st — stratum — уровент данного ntp сервера , может быть число от 1 до 16
- t — Тип удаленного сервера
- when — как давно было последнее обновление времени
- poll — период опроса сервера в секундах
- reach — успешность выполнения предыдущих попыток 377 — все попытки были успешными
- delay — задержка ответов от сервера
- offset — разница во времени между локальным и удаленным сервером. Чем меньше данное значение тем лучше.
- jitter — дисперсия отклонения удаленных часов относительно локальных.
Активируем синхронизацию времени по NTP, для этого выполняем:
sudo timedatectl set-ntp true
проверяем что NTP sync активировано:
Синхронизация времени закончена.
Проблема с часами в часовых поясах отличных от Europe/Moscow
Время настраивается на клиенте и на сервере, синхронизируется. Но после нескольких перезагрузок ОС на клиенте время смещается.
1) время смещается на 6 часов в будущее;
2) время смещается на несколько дней в прошлое.
Так же замечены другие проблемы:
Часовой пояс был выставлен через » dpkg-reconfigure tzdata » на Almaty (Алма-Ата).
Если время устанавливается через fly-admin-date , то:
1) слетает настройка UTC , т.к. fly-admin-date не понимает сделанные настройки как через hwclock —utc , так даже если сам выставляет UTC.
2) часовой пояс через fly-admin-date сбрасывается на Калининград.
3) при нажатие на кнопку «Сохранить» в fly-admin-date последствия сложно предсказать.
4) нельзя удалить пакет fly-admin-date без fly-all-main .
Решение:
Не устанавливать дату и время через виджет Astra Linux «Дата и время».
Диагностика неисправности
1) Команда « cat /etc/adjtime » должна вернуть в последней строке «UTC».
2) Команда « cat /etc/localtime » должна вернуть в последней строке «ALMT-6».
3) Команда « hwclock —debug » должна сообщить, что «Аппаратные часы выставлены по UTC времени». Время прочитанное с аппаратных часов на 6 часов меньше, чем местное время по Астане.
4) Команда « date » должна вернуть местное время по Астане (часовой пояс ALMT).
Исправление неисправности
1) Если « cat /etc/adjtime » вернет «LOCAL», то необходимо выполнить «hwclock —utc».
2) Если « cat /etc/localtime » вернет что-то отличное от «ALMT-6» и команда «date» между временем и годом выводит часовой пояс отличный от «ALMT», то необходимо выполнить команду «dpkg-reconfigure tzdata» и выбрать часовой пояс «Азия/Almaty».
3) Если « hwclock —debug » сообщит, что «Аппаратные часы выставлены по местному времени», то необходимо выполнить «hwclock —utc».
4) Если « hwclock —debug » вернет время прочитанное с аппаратных часов отличающееся от местного по Астана, то необходимо убедиться, что часовой пояс выставлен правильно, что время по команде «date» выставлено правильно, выполнить команду «hwclock —systohc».
4) Если команда «date» не возвращает местное время по Астане, то необходимо убедиться, что часовой пояс выставлен правильно и выполнить команду «date MMDDhhmmCCYY», где MM — месяц, DD — день, hh — час, mm — минута, CCYY — год.
Последовательность настройки времени:
Установить часовой пояс « dpkg-reconfigure tzdata » на «Азия/Almaty».
Установить местное время « date MMDDhhmmCCYY », например « date 021517452018 » означает установить дату по местному времени на 15 февраля 2018 года 17:45.
Считать время в BIOS как время по UTC, для чего выполнить команду « hwclock —utc —systohc » .
Установить время в BIOS, выполнить команду « hwclock —systohc ».
Перезагрузить компьютер « reboot ».
Пройтись по пунктам «Диагностика неисправности» и убедиться в правильности выставленных настроек.
Сервис времени высокой точности PTP (Precision Time Protocol)
В стандартные дистрибутивы и репозитории Astra Linux Common Edition включены следующие службы точного времени:
- Серверная служба NTP (ntpd) (представлена пакетами ntp и ntpdate);
- Серверная служба OpenNTP (openntpd) (представлена пакетом openntp);
- Клиентская служба timedatectl / systemd-timesyncd.service.
Подробнее про эти службы можно прочитать в статье Службы синхронизации времени в Astra Linux. В статье также можно ознакомиться с базовыми терминами, связанными с организацией служб времени в компьютерах.
Начиная с версии Astra Linux Common Edition 2.12.10 помимо указанных выше служб в репозитории стал доступен пакет linuxptp, содержащий следующие службы:
- ptp4l — служба протокола времени высокой точности, реализующая работу по протоколу времени высокой точности PTP (Precision Time Protocol) в соответствии со стандартом IEEE 1588. Точность протокола зависит от того, как устанавливаются метки времени в пакетах IEEE 1588. При установке отметок времени программным путём, когда на точность влияют прерывания, загрузка процессора, и иные факторы, обеспечивается точность 1-100 микросекунд. Аппаратная поддержка обеспечивает точность до единиц микросекунд;
- phc2sys — служба синхронизации часов;
- timemaster — служба координации, обеспечивающая совместную работу традиционной службы времени ntp и службы времени высокой точности ptp.
Проверка оборудования
Пакет ориентирован на использование аппаратных средств точного времени, в частности, аппаратных возможностей сетевых карт (аппаратные отметки времени).
Пакет можно настроить и запустить и без сетевых карт, поддерживающих аппаратные возможности, что повлечёт некоторое снижение точности. Настройка пакета для работы без аппаратной поддержки описана ниже.
Проверить, поддерживает ли сетевая карта аппаратные отметки времени можно из командной строки с помощью команды ethtool из пакета ethtool (пакет ethtool придётся установить, если он не был установлен ранее):
$ sudo ethtool -T eth0
Time stamping parameters for eth0:
Capabilities:
hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)
software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE)
hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE)
software-receive (SOF_TIMESTAMPING_RX_SOFTWARE)
software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
off (HWTSTAMP_TX_OFF)
on (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
none (HWTSTAMP_FILTER_NONE)
all (HWTSTAMP_FILTER_ALL)
ptpv1-l4-sync (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
ptpv1-l4-delay-req (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
ptpv2-l4-sync (HWTSTAMP_FILTER_PTP_V2_L4_SYNC)
ptpv2-l4-delay-req (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ)
ptpv2-l2-sync (HWTSTAMP_FILTER_PTP_V2_L2_SYNC)
ptpv2-l2-delay-req (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ)
ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT)
ptpv2-sync (HWTSTAMP_FILTER_PTP_V2_SYNC)
ptpv2-delay-req (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)
Установка пакета
Пакет linuxptp доступен в репозитории Astra Linux Common Edition начиная с версии 2.12.10 и может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:
Настройка службы timemaster
Конфигурация службы timemaster находится в файле /etc/linuxptp/timemaster.conf.
Подробно возможные параметры настройки описаны в электронной справочной системе:
Включение службы домена точного времени (ptp_domain)
Для включения службы времени высокой точности ptp4l раскомментировать в файле настроек /etc/linuxptp/timemaster.conf секцию [ptp_domain 0] (в примере — настройка домена точного времени, использующего интерфейс eth0):
[ptp_domain 0]
interfaces eth0
delay 10e-6
Домен точного времени обслуживается сервисом ptp4l, настройка этого сервиса описана ниже.
Включение и настройка службы ntp
Для включения службы ntp в файле настроек /etc/linuxptp/timemaster.conf в секции [timemaster] нужно указать службу ntpd вместо cronyd:
[timemaster]ntp_program chronyd
ntp_program ntpd
После внесения этих изменений служба timemaster сможет самостоятельно запускать службу ntpd под своим контролем, поэтому самостоятельный запуск службы ntpd следует отключить:
Настройка автоматического запуска timemaster
Кроме настройки конфигурационного файла нужно разрешить автоматический запуск службы timemaster при старте системы:
Настройка службы ptp4l
Служба ptp4l представляет собой реализацию протокола времени высокой точности и по умолчанию настроена на работу с сетевыми картами, поддерживающими аппаратные отметки времени (time stamping).
Как проверить наличие в сетевой карте аппаратной поддержки описано выше.
Конфигурация службы ptp4l хранится в файле /etc/linuxptp/ptp4l.conf, описание которого доступно в справочной системе:
Если используются сетевые карты без аппаратной поддержки отметок времени, то в конфигурации службы ptp4l (файл /etc/linuxptp/ptp4l.conf) нужно заменить аппаратную поддержку на программную:
Настройка службы phc2sys
Служба phc2sys настроек не требует, и если в системе имеется с чем синхронизировать системные часы RTC (имеется сетевая карта с аппаратными часами), phc2sys запустится автоматически с нужными параметрами. При работе с сетевыми картами, не поддерживающими аппаратные отметки времени служба phc2sys не запускается.
Запуск всех служб
После завершения настройки запуск всех служб осуществляется командой
Служба timemaster сама запустит запустит все остальные сервисы, в итоге статус нормально и полностью запущенной службы при наличии аппаратной поддержки выглядит примерно так:
$ systemctl status timemaster
● timemaster.service — Synchronize system clock to NTP and PTP time sources
Loaded: loaded (/lib/systemd/system/timemaster.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2019-04-22 15:51:02 MSK; 2s ago
Docs: man:timemaster
Main PID: 2508 (timemaster)
Tasks: 5 (limit: 4608)
CGroup: /system.slice/timemaster.service
├─2508 /usr/sbin/timemaster -f /etc/linuxptp/timemaster.conf
├─2509 /usr/sbin/ntpd -u ntp:ntp -g -n -c /var/run/timemaster/ntp.conf
├─2510 /usr/sbin/ptp4l -l 5 -f /var/run/timemaster/ptp4l.0.conf -H -i eth0
└─2511 /usr/sbin/phc2sys -l 5 -a -r -R 1.00 -z /var/run/timemaster/ptp4l.0.socket -n 0 -E ntpshm -M 0
.