Настройка 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)