Time sync
Содержание
Конфигурирование сервера точного времени
Предварительные требования
- Виртуальная машина с двумя сетевыми интерфейсами
- Установленные пакеты:
bash-completion
,chorny
, либоntpd
иntpdate
Общая информация
Сервер точного времени необходим для определения точного времени наступления событий, которые будут записаны в журнал,
так же он чрезвычайно важен для системы билетов kerberos
, так как при расхождении времени между сервером и
клиентом kerberos
, больше чем в 5 минут, клиент билета не получит. При синхронизации времени,
разница между источником и клиетом хранится в так называемом driftfile
. При запуске системы, сервис точного
времени читает данный файл и корректирует время на клиенте, согласно разнице записанной в driftfile
.
Так же протокол точного времени вводит понятие stratum
. stratum
- это величина удаления от
атомных часов, градации 0-15
. Атомные часы, имеют stratum 0
, но они не имеют открытого доступа в интернет и все подключены
к серверам, раздающим точное время и имеющим stratum 1
.
Конфигурирование chrony
Сервис chronyd
читает конфигурационный файл /etc/chrony.conf
. Заменим серверы точного времени по-умолчанию, на серверы
предоставляемые ФГУП «Всероссийский научно-исследовательский институт физико-технических и радиотехнических измерений», в результате файл /etc/chrony.conf
примет следующий вид:
[root@vm-01 ~]# grep "^[^#]" /etc/chrony.conf
server ntp1.vniiftri.ru iburst
server ntp2.vniiftri.ru iburst
server ntp3.vniiftri.ru iburst
server ntp4.vniiftri.ru iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony
[root@vm-01 ~]#
Запуск
[root@vm-01 ~]# systemctl start chronyd
[root@vm-01 ~]# systemctl is-active chronyd.service
active
[root@vm-01 ~]# systemctl status -l chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-03-12 10:10:47 MSK; 17s ago
Process: 18534 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 18530 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 18532 (chronyd)
CGroup: /system.slice/chronyd.service
└─18532 /usr/sbin/chronyd
Mar 12 10:10:47 vm-01 systemd[1]: Starting NTP client/server...
Mar 12 10:10:47 vm-01 chronyd[18532]: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +DEBUG +ASYNCDNS +IPV6 +SECHASH)
Mar 12 10:10:47 vm-01 chronyd[18532]: Frequency -4.154 +/- 0.091 ppm read from /var/lib/chrony/drift
Mar 12 10:10:47 vm-01 systemd[1]: Started NTP client/server.
Mar 12 10:10:52 vm-01 chronyd[18532]: Selected source 89.109.251.24
Mar 12 10:10:53 vm-01 chronyd[18532]: Selected source 89.109.251.21
[root@vm-01 ~]#
Проверка
Для проверки запустим утилиту timedatectl
:
[root@vm-01 ~]# timedatectl
Local time: Mon 2018-03-12 10:12:33 MSK
Universal time: Mon 2018-03-12 07:12:33 UTC
RTC time: Mon 2018-03-12 07:12:33
Time zone: Europe/Moscow (MSK, +0300)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@vm-01 ~]#
Теперь посмотрим информацию, которая выдает утилита chornyc
с опцией tracking
:
[root@vm-01 ~]# chronyc tracking -v
Reference ID : 89.109.251.21 (ntp1.vniiftri.ru)
Stratum : 2
Ref time (UTC) : Mon Mar 12 07:16:17 2018
System time : 0.000026197 seconds fast of NTP time
Last offset : +0.000290393 seconds
RMS offset : 0.000422688 seconds
Frequency : 6.000 ppm slow
Residual freq : -3.410 ppm
Skew : 6.876 ppm
Root delay : 0.006987 seconds
Root dispersion : 0.001164 seconds
Update interval : 64.9 seconds
Leap status : Normal
[root@vm-01 ~]#
Конфигурирование ntpd
Сервис ntpd
читает конфигурационный файл /etc/ntp.conf
, однако
ключи, с которыми запускается демон находятся в файле /etc/sysconfig/ntpd
:
[root@vm-01 ~]# cat /etc/sysconfig/ntpd
# Command line options for ntpd
OPTIONS="-g"
[root@vm-01 ~]#
По-умолчанию, в нем находится опция -g
, которая разрешает один раз скорректировать время, если разница между источником и приемником составляет более 1000 секунд (без этого ключа,
ntpd
пишет сообщение в системный журнал и прекращает работу). Если после корректировки времени, разница все еще превышает 1000 секунд, ntpd
пишет сообщение в системный журнал и прекращает работу. В некоторых случаях, бывает полезно добавить опцию -x
которая, увеличивает шаг подгонки времени (по-умолчанию 128 миллисекунд) до 600 секунд, однако nix ядра ограничены
подгонкой времени на 0.5 миллисекунд в секунду, для каждой следующей секундной подгонки требуется интервал в 2000 секунд, таким образом корректировка 600 секунд займет примерно 14 дней. Поскольку время
может меняться на клиентской машине как вперед, так и назад, то некоторое программное обеспечение может выдавать ошибки, в связи с резкой сменой времени.
В конфигурационном файле изменим серверы точного времени на те, что предоставляются ФГУП «Всероссийский научно-исследовательский институт физико-технических и радиотехнических измерений», в результате файл /etc/ntp.conf
примет следующий вид:
[root@vm-01 ~]# grep "^[^#]" /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server ntp1.vniiftri.ru iburst
server ntp2.vniiftri.ru iburst
server ntp3.vniiftri.ru iburst
server ntp4.vniiftri.ru iburst
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
[root@vm-01 ~]#
Доступ к демону ntpd
регулируется списками доступа, указанными в директиве restrict
, конфигурационного файла /etc/ntp.conf
.
По-умолчанию запрещены:
-
nomodify
- попытки модифицировать состояние сервера (то есть переконфигурировать время) утилитамиntpq
иntpdc
-
notrap
- получения трапов, созданых утилитойntpdc
-
nopeer
- попытки неатунтицированного обмена информацией -
noquery
- попытки запросов не касающихся времени, при помощи утилитntpq
иntpdc
Управление разрешается только с localhost
'а по протоколам ipv4
и ipv6
Запуск
[root@vm-01 ~]# systemctl status -l ntpd
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@vm-01 ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@vm-01 ~]# systemctl start ntpd
[root@vm-01 ~]# systemctl is-active ntpd
active
[root@vm-01 ~]#
Проверка
Для проверки запустим утилиту timedatectl
:
[root@vm-01 ~]# timedatectl
Local time: Wed 2018-03-07 12:54:33 MSK
Universal time: Wed 2018-03-07 09:54:33 UTC
RTC time: Wed 2018-03-07 09:54:33
Time zone: Europe/Moscow (MSK, +0300)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@vm-01 ~]#
Теперь посмотрим статистику, которая выдает утилита ntpstat
[root@vm-01 ~]# ntpstat
synchronised to NTP server (89.109.251.21) at stratum 2
time correct to within 3942 ms
polling server every 64 s
[root@vm-01 ~]#
При необходимости раздавать точное время в локальной сети, следует открыть порт в файрволле:
[root@vm-01 ~]# firewall-cmd --permanent --zone=public --add-port=123/udp