Time sync

Материал из pNp Wiki
Перейти к: навигация, поиск

Конфигурирование сервера точного времени

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: 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. По-умолчанию запрещены:

  1. nomodify - попытки модифицировать состояние сервера (то есть переконфигурировать время) утилитами ntpq и ntpdc
  2. notrap - получения трапов, созданых утилитой ntpdc
  3. nopeer - попытки неатунтицированного обмена информацией
  4. 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

Ссылки

Configuring NTP using chrony
Configuring NTP using ntpd