Project

General

Profile

Настройка NTP

Каждая часовая машина имеет в своём составе службу NTP.
Конфигурационный файл службы NTP находится в /etc/ntp.conf
Для настройки службы его возможно потребуется отредактировать (по умолчанию синхронизация выполняется с NTP серверами в интернете).
Для редактирования файла следует ввести команду:

sudo nano /etc/ntp.conf


В открывшемся редакторе найти строки вида:

# You do need to talk to an NTP server or two (or three).
server ru.pool.ntp.org
server de.pool.ntp.org
server pool.ntp.org


И заменить все записи server на IP адреса действующих NTP серверов комплекса.
После внесения изменений следует нажать комбинацию Ctrl+X и подтвердить запись файла /etc/ntp.conf
Для актуализации произведенных изменений следует перезапустить службу NTP командой:

sudo service ntp restart


Синхронизация времени происходит не сразу (порядка 10 минут). Системе может потребоваться значительное время для обеспечения плавного схождения с часами указанных NTP серверов.
Для ускорения процесса желательно перед установкой станции вручную установить правильное системное время в BIOS (перед отгрузкой принудительно устанавливается точное Московское время)
После перезапуска службы в системном журнале (смотреть командой cat /var/log/syslog |grep ntpd) должны быть записи вида:

Dec  2 19:16:55 capsclock ntpdr28308: ntpd exiting on signal 15
Dec  2 19:16:57 capsclock ntpdr28434: ntpd 4.2.4p4@1.1520-o Fri Dec  4 18:11:46 UTC 2009 (1)
Dec  2 19:16:57 capsclock ntpdr28435: precision = 1.000 usec
Dec  2 19:16:57 capsclock ntpdr28435: Listening on interface #0 wildcard, 0.0.0.0#123 Disabled
Dec  2 19:16:57 capsclock ntpdr28435: Listening on interface #5 lo, 127.0.0.1#123 Enabled
Dec  2 19:16:57 capsclock ntpdr28435: Listening on interface #6 eth0, 192.168.0.110#123 Enabled
Dec  2 19:16:57 capsclock ntpdr28435: kernel time sync status 0040
Dec  2 19:16:57 capsclock ntpdr28435: frequency initialized -96.097 PPM from /var/lib/ntp/ntp.drift
Dec  2 19:20:14 capsclock ntpdr28435: synchronized to 131.234.137.23, stratum 1
Dec  2 19:20:14 capsclock ntpdr28435: kernel time sync status change 0001
Dec  2 19:34:20 capsclock ntpdr28435: synchronized to 81.94.123.17, stratum 1


Статус работы службы NTP можно проверить командой:

ntpq -p
 или
ntpq -p localhost


Успешно синхронизированная станция в ответ на эту команду выдаст, в зависимости от количества записей server в файле /etc/ntp.conf , примерно следующее:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+95.140.94.2     62.117.76.141    2 u   66  128  377   10.746    0.056   0.335
+zit-net1.uni-pa .DCF.            1 u   61  128  377   52.075  -12.786   0.677
-h77-105-134-138 85.114.26.194    2 u   67  128  377    8.903    4.551   1.035
-europium.canoni 193.79.237.14    2 u  118  128  377   68.051    8.262   0.918
*ntp1.as34288.ne .PPS.            1 u  125  128  377   52.751    8.110   2.024
-gw1-x03.ndln.ne 213.251.128.249  2 u   58  128  377   53.489   16.581   9.881


В примере, приведенном выше, синхронизация производится со следующими серверами интернета:

 ru.pool.ntp.org
 de.pool.ntp.org
 pool.ntp.org
 ntp.ubuntu.com
 ch.pool.ntp.org
 fr.pool.ntp.org


Интерпретация вывода команды ntpq:
remote - имена удаленных ntp серверов
refid - сервер, с которым производит синхронизацию удаленный сервер ntp
st - стратум (уровень) удаленного сервера. 1 - самый высокий, эти сервера для вычисления точного времени используют специальное оборудование; 16 - рядовая машина/клиент.
t - тип пира (u = unicast, m = multicast)
when - указывает на то, как давно была произведена синхронизация с сервером
poll - частота в секундах, с которой NTP демон синхронизируется с пиром
reach - состояние доступности сервера, это значение стабилизируется на уровне 377 если последних 8 попыток синхронизации с удаленным сервером были успешны
delay - задержка (в миллисекундах) ответа от сервера
offset - разница в миллисекундах между системным временем и временем удаленного сервера; значение с минусом - отставание, с плюсом - наши часы спешат
jitter - смещение времени на удаленном сервере

Значки, слева от имени пира означают следующее:
"*" - пир, с которым последний раз у нас была выполнена синхронизация
"+" - "хороший" (пригодный для обновления) сервер
"-"- "плохой" (непригодный для обновления) сервер
"х" - сервер не отвечает

Еще один вариант проверки синхронизации: Команда:

ntpdate -q <адрес NTP сервера>


Выдаст отчет в удобной, читаемой форме о доступности указанного сервера и о разбежке часов между указанным сервером и локальной машиной.
Например:

> ntpdate -q ru.pool.ntp.org

server 195.16.42.125, stratum 2, offset 0.014818, delay 0.03702
server 212.192.253.178, stratum 2, offset 0.013985, delay 0.03873
server 91.194.10.40, stratum 2, offset 0.011540, delay 0.03436
 7 Dec 15:16:53 ntpdater13523: adjust time server 91.194.10.40 offset 0.011540 sec


Из последней строки приведенного выше примера видно что разбежка времени между сервером ru.pool.ntp.org и локальной машиной составляет 0.011540 секунд.
Командой ntpdate -q 127.0.0.1 можно проверить работоспособность локальной службы NTP. При правильной работе службы мы увидим примерно следующее:

> ntpdate -q 127.0.0.1

server 127.0.0.1, stratum 2, offset -0.000003, delay 0.02562
 7 Dec 15:22:19 ntpdater13622: adjust time server 127.0.0.1 offset -0.000003 sec

Альтернативный вариант настройки NTP (ntpdate)

В случае, если по разным причинам, служба NTP не может получить достоверных сигналов точного времени, может потребоваться альтернативный способ настройки синхронизации.

Этот способ заключается в регулярной (в нашем случае каждые 10 минут) синхронизации со вручную указанными серверами.

Данный способ имеет существенный недостаток, заключающийся в том, что время в момент регулярной плановой синхронизации меняется не плавно, как в случае NTPD, а рывками.

Для настройки следует создать(скопировать) файл скрипта, отключающего NTP и включающего регулярную синхронизацию NTPDATE.

Создадим файл скрипта:

sudo nano /home/capsclock/CapsClock/ntp-reconfigure

Проверить наличие установленного ntp командой service ntp status. Если ответ ntp.service loaded:not-found, раскомментировать блок строк "Отключение автоматической загрузки NTPD" НЕ НУЖНО!


В открывшемся окне редактора вставим содержимое скрипта из блока ниже (Shift+Ins):

#!/bin/sh

# Отключение автоматической загрузки NTPD
# Необходимо раскомментировать следующие 5 строк, если ntp установлен (ntp.service loaded:loaded)
#echo Disabling NTP ...
#sudo service ntp stop
#sudo update-rc.d -f ntp remove
#sudo chmod -x /etc/init.d/ntp
#echo Done.

# Установка регулярной синхронизации с указанными серверами
# Заменить IP адреса на правильные
crontab -u capsclock -r
cronjob="*/10 * * * * /usr/sbin/ntpdate 10.17.74.50 10.17.74.51 >/dev/null"
(crontab -u capsclock -l; echo "$cronjob" ) | crontab -u capsclock 
#EOF

 

Следует заменить адреса 10.17.20.50 10.17.20.51 на правильные, после чего выйти из редактора с сохранением файла (Ctrl+x)

Далее следует изменить атрибуты созданного файла, разрешив выполнение:

sudo chmod +x /home/capsclock/CapsClock/ntp-reconfigure


Для внесения изменений следует ОДИН РАЗ выполнить полученный скрипт и перезагрузить машину:

./home/capsclock/CapsClock/ntp-reconfigure
sudo reboot


Следует убедиться командой crontab -l от юзера capsclock (cat /etc/crontab), что файл /etc/crontab содержит только одну строку:

*/10 * * * * root /usr/sbin/ntpdate 10.17.20.50 10.17.20.51 >/dev/null


В дальнейшем контролировать точность времени следует командой (заменив 10.17.20.50 на правильный адрес сервера точного времени):

ntpdate -q 10.17.20.50


В результате мы увидим величину расхождения (offset) между локальной машиной и сервером времени:

14 Dec 18:17:47 ntpdater1606: adjust time server 10.17.20.50 offset -0.000338 sec


Так же рекомендуется убедиться, что в системном журнале каждые 10 минут появляются записи от службы CRON содержащие:

/usr/sbin/ntpdate 10.17.20.50 10.17.20.51 >/dev/null


(смотреть командой cat /var/log/syslog |grep CRON)

Add picture from clipboard (Maximum size: 742 MB)