Введение.
Время, как система контроля, подчиняется законам синхронности выполнения действий любого уровня. Для современных областей информационных технологий это особенно важно. В Linux, за время отвечает NTP — Network Time Protocol — протокол сетевого времени. От правильной работы демона ntpd зависит многое. Такие службы как LDAP и дерево домена, чутко реагируют на малейший временной сбой. Порой сетевые администраторы часами ищут неисправность в работе различных служб, забывая проверить NTP. В статье блога рассматриваются особенности работы службы времени OpenNTPD дистрибутива ALT Linux. Эта публикация даёт начало сериям статей: ntpd, chrony посвящённым вопросам работы службы NTP ALT Linux.
- Стенд:
- ALT Linux сервер, имя lin-ntp; ip-10.0.2.36;
Установка OpenNTPD.
Специально устанавливать OpenNTPD сервер, как приложение, не будем. Используем в качестве базового, из «коробки», сервер Linux минимальной конфигурации и посмотрим какой NTP предлагается.

Как показано выше, по умолчанию установлен openntpd. OpenNTPD — бесплатная и простая в использовании реализация сервера NTP. Может работать как клиент или как NTP-сервер. Сразу отметим, что OpenNTPD и NTPD разные реализации NTP-серверов. Они не дружат, если один установлен другой автоматически удаляется. Сервер NTPD будет рассматриваться в другой статье. OpenNTPD разработан командой OpenBSD и может свободно использоваться под лицензией BSD. Файл настроек находится /etc/ntpd.conf
Настройка OpenNTPD.
Откроем /etc/ntpd.conf и посмотрим синтаксис конфигурации.
# cat /etc/ntpd.conf
# $OpenBSD: ntpd.conf,v 1.7 2004/07/20 17:38:35 henning 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 8 public stratum 2 servers
# see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
servers ru.pool.ntp.org
Из листинга видно, что в качестве сервера точного времени используется ru.pool.ntp.org. Внести запись можно, непосредственно в ntpd.conf или через acc.
Проверить наличие установленного модуля alterator-datetime.
# apt-get update
# apt-cache search alterator-datetime
alterator-datetime - alterator module for date/time setup

Проверка работы OpenNTPD.
Остаётся проверить управление и работу openntpd с помощью командной строки. Сразу отметим, команда ntpq c openntpd не работает, будем использовать другие утилиты.
# systemctl start|stop|restart|status ntpd
# systemctl status ntpd
...
Active: active (running) since Wed .....
...
lin-ntp ntpd:reply from 194.190.168.1: offset 0.421851 delay 0.005554, next query 33s
lin-ntp ntpd:reply from 213.110.203.168: offset 0.418473 delay 0.015690, next query 31s
lin-ntp reply from 82.148.16.232: offset 0.417237 delay 0.004958, next query 32s
lin-ntp ntpd:rreply from 212.13.97.58: offset 0.409858 delay 0.006080, next query 32s
Из листинга видно, служба NTP активна и принимает временную коррекцию от сервера точного времени зоны ru.
tzselect
Утилита командной строки, выводит список часовых поясов.
# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
1) Africa
2) Americas
3) Antarctica
4) Asia
5) Atlantic Ocean
6) Australia
7) Europe
8) Indian Ocean
9) Pacific Ocean
10) coord - I want to use geographical coordinates. 11) TZ - I want to specify the time zone using the Posix TZ format.
#?
timedatectl
Утилита командной строки timedatectl, способна выполнять запросы и настройку системных часов в реальном времени.
# timedatectl status
Local time: Чт 2022-02-03 11:02:46 MSK
Universal time: Чт 2022-02-03 08:02:46 UTC
RTC time: Чт 2022-02-03 08:02:46
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: no
NTP service: n/a
RTC in local TZ: no
- Local time — местное время
- Universal time — UTC всемирное время
- RTC time — аппаратное время
- Time Zone — часовой пояс
- NTP synchronized — синхронизация с ntp-сервером
- RTC in local TZ — аппаратные часы: если no показывает локальное время , если yes показывает всемирное время
Аппаратное время — BIOS, системное время — сервер.
Вывод списка временных зон.
# timedatectl list-timezones
nc
Утилита командной строки nc выборочно прослушивает соединения TCP и UDP. Проверяем соединение по IPv4 с эталонным серверном и сервером NTP.
# nc ru.pool.ntp.org 123 -z -4 -u -v
Connection to ru.pool.ntp.org 123 port [udp/ntp] succeeded!
[root@lin-ntp ~]# nc lin-ntp 123 -z -4 -u -v
Connection to lin-ntp 123 port [udp/ntp] succeeded!
nptdate.
Утилита командной строки ntpdate устанавливает/синхронизирует дату и время через NTP сервер.
# ntpdate -q -4 ru.pool.ntp.org
server 94.247.111.10, stratum 2, offset +4.262197, delay 0.08008
server 85.21.78.23, stratum 2, offset +4.262231, delay 0.03166
server 95.154.97.27, stratum 2, offset +4.275527, delay 0.16031
server 91.207.136.55, stratum 2, offset +4.265297, delay 0.05487
3 Feb 13:28:58 ntpdate[4152]: step time server 85.21.78.23 offset +4.262231 sec
journalctl.
Утилита командной строки читает системный журнал systemd. Многочисленные ключи позволяют гибко настраивать выход сообщений служебных юнитов на экран. Нас интересует работа юнит ntpd.
# journalctl -u ntpd
ntp engine ready
reply from 188.93.104.2: offset 2.039799 delay 0.006116, next query 9s
reply from 193.192.36.3: offset 2.041428 delay 0.021417, next query 6s
reply from 94.247.111.10: offset 2.033169 delay 0.070163, next query 7s
reply from 188.93.104.2: offset 2.039940 delay 0.005502, next query 8s
Заключение.
Сервер NTP успешно установлен и работает, заметим, всё «взято» по умолчанию из коробки. OpenNTPD включает в себя сервер и клиент, т.е два в одном. Для окружающих его рабочих станций, серверов и устройств периферии, OpenNTPD является источником образцового времени. Будет лучше, если сервер NTP станет работать на отдельном устройстве в виртуальном пространстве предприятия. Много ему не требуется HDD ~8 Gb ,RAM ~2Gb, CPU сколько не жалко.
Полезные ссылки.
- OpenNTPD свободная реализация сервера NTP
- ntpd демон NTP протокола
- chronyd фоновый демон ntp
- chrony утилита поддержки точности часов
- chronyc командная строка для chronyd
- chrony.conf конфигурационный файл
- ntpdate установка даты и времени NTP
- hwclock настройка аппаратных часов (RTC)
- timedatectl контроль времени и даты