Служба точного времени

Материал из Энциклопедия для сетевых администраторов
Перейти к: навигация, поиск
Дата последнего обновления: 26 октября 2014 года

Установка

Arch Linux

root # pacman -S ntp
resolving dependencies...
looking for inter-conflicts...

Packages (1): ntp-4.2.6.p5-14

Total Download Size:    0.45 MiB
Total Installed Size:   1.55 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages ...
 ntp-4.2.6.p5-14-x86_64                                   464.2 KiB   300K/s 00:02 [###############################################] 100%
(1/1) checking keys in keyring                                                     [###############################################] 100%
(1/1) checking package integrity                                                   [###############################################] 100%
(1/1) loading package files                                                        [###############################################] 100%
(1/1) checking for file conflicts                                                  [###############################################] 100%
(1/1) checking available disk space                                                [###############################################] 100%
(1/1) installing ntp                                                               [###############################################] 100%

openSUSE

root # zypper install ntp

Настройка

NTP сервера
Адрес Порт Уровень Устройство Доступ
ntp1.vniiftri.ru IPv4 UDP 123 stratum 1 Meinberg LANTIME M300/MRS свободный
ntp2.vniiftri.ru IPv4 UDP 123 stratum 1 Meinberg LANTIME M300/MRS свободный
ntp3.vniiftri.ru IPv4 UDP 123 stratum 1 Meinberg LANTIME M300/MRS свободный
ntp4.vniiftri.ru IPv4 UDP 123 stratum 1 MEINBERG LANTIME Version: 3.05 свободный
ntp21.vniiftri.ru IPv4 UDP 123 stratum 2 Linux kernel 2.6.32. ntpd 4.2.4p8 Intel Xeon свободный

Установка часового пояса

Linux

tzsetup
tzselect
# tzsetup 
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 8
Please select a country.
 1) Aaland Islands        18) Greece                35) Norway
 2) Albania               19) Guernsey              36) Poland
 3) Andorra               20) Hungary               37) Portugal
 4) Austria               21) Ireland               38) Romania
 5) Belarus               22) Isle of Man           39) Russia
 6) Belgium               23) Italy                 40) San Marino
 7) Bosnia & Herzegovina  24) Jersey                41) Serbia
 8) Britain (UK)          25) Latvia                42) Slovakia
 9) Bulgaria              26) Liechtenstein         43) Slovenia
10) Croatia               27) Lithuania             44) Spain
11) Czech Republic        28) Luxembourg            45) Sweden
12) Denmark               29) Macedonia             46) Switzerland
13) Estonia               30) Malta                 47) Turkey
14) Finland               31) Moldova               48) Ukraine
15) France                32) Monaco                49) Vatican City
16) Germany               33) Montenegro
17) Gibraltar             34) Netherlands
#? 39
Please select one of the following time zone regions.
1) Moscow-01 - Kaliningrad             10) Moscow+05 - Lake Baikal
2) Moscow+00 - west Russia             11) Moscow+06 - Lena River
3) Moscow+00 - Caspian Sea             12) Moscow+06 - Tomponsky, Ust-Maysky
4) Moscow+00 - Samara, Udmurtia        13) Moscow+07 - Amur River
5) Moscow+02 - Urals                   14) Moscow+07 - Sakhalin Island
6) Moscow+03 - west Siberia            15) Moscow+07 - Oymyakonsky
7) Moscow+03 - Novosibirsk             16) Moscow+08 - Magadan
8) Moscow+03 - Novokuznetsk            17) Moscow+08 - Kamchatka
9) Moscow+04 - Yenisei River           18) Moscow+08 - Bering Sea
#? 2

The following information has been given:

        Russia
        Moscow+00 - west Russia

Therefore TZ='Europe/Moscow' will be used.
Local time is now:      Wed Jun 26 21:18:51 MSK 2013.
Universal Time is now:  Wed Jun 26 17:18:51 UTC 2013.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
        setenv TZ 'Europe/Moscow'
to the file '.login' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Europe/Moscow

FreeBSD

И так, есть FreeBSD с которой идет ntpd. Для начала указываем часовой пояс.

root # tzsetup Europe/Moscow

И синхронизируем время ручками.

root # ntpdate ntp1.vniiftri.ru

Создаем drift - файл в котором храниться информация о смещении времени локальной машины относительно серверов точного времени.

root # touch /etc/ntp/drift

ntp.conf

Теперь приступим к написанию главного конфигурационного файла ntpd

Linux

FreeBSD

Exclamation mark 3d.png
Внимание
prefer запись лучше назначать наиболее "быстрому" серверу, так же рекомендуется использовать pool сервера, выбрать подходящий для вас сервер можно на странице http://www.vniiftri.ru/index.php/ru/services/22-ntp  (рус.), там же можно найти ссылки, для более полного изучения вопроса.

Опция iburst позволяет ntpd ускорить начальный процесс синхронизации, prefer - отмечает предпочитаемый сервер.

Обновление базы часовых поясов

FreeBSD
root # date

понедельник, 27 октября 2014 г. 00:36:03 (MSK)
root #portmaster misc/zoneinfo
root #tzsetup -r
root #date

воскресенье, 26 октября 2014 г. 23:42:52 (MSK)
Gentoo
root # emerge --ask timezone-data

Логирование

Arch Linux

Arch Linux:Система логирования

FreeBSD

FreeBSD:Система логирования

По умолчанию лог ntpd имеет имя ntp.log и находится в папке /var/log. Для того, чтобы newsyslog(8) выполнял его ротацию, необходимо добавить в файл /etc/newsyslog.conf строку:

/var/log/ntp.log			644 3 128	* J

Файервол

Linux

FreeBSD

Разрешаем клиентам обновляться от себя в качестве сервера:

root # ipfw add add pass udp from 192.168.0.1/24 to me 123 in via re0
root #ipfw add add pass udp from me 123 to 192.168.0.1/24 out via re0

Разрешаем себе синхронизацию с серверами:

root # ipfw add add pass udp from me to any 123 out via re1
root #ipfw add add pass udp from any 123 to me in via re1

Использование

Конфиг готов, теперь добавляем в rc.conf следующие строчки:

root # echo "ntpd_enable=\"YES\"" >> /etc/rc.conf

И стартуем демон:

root # /etc/rc.d/ntpd start

Ждем порядка 2 минут.

Теперь можно проверить состояние синхронизации:

root # ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp1.vniiftri.r .PPS.            1 u    -  256  377    7.917    3.725   0.667
-ntp2.vniiftri.r .PPS.            1 u  117  256  377    7.937    2.799   3.380
+ntp3.vniiftri.r .PPS.            1 u   87  256  377    8.034    3.840   0.680
+ntp4.vniiftri.r .PPS.            1 u  110  256  377    8.104    2.959   0.521

Тут остановимся по-подробнее.

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

Теперь немного о значках, следа от имени пира:

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

Узнать, пригоден ли наш сервер для синхронизации, а также узнать некоторые его данные можно следующей командой:

# ntpdate -q localhost

В ответ должны получить что-то подобное:

Looking for host localhost and service ntp
host found : localhost
server 127.0.0.1, stratum 3, offset 0.000003, delay 0.02573
17 Nov 15:28:54 ntpdate[4918]: adjust time server 127.0.0.1 offset 0.000003 sec

Этот ответ означает, что наш сервер пригоден для синхронизации, его страта равна трем, смещение - 0.000003 а задержка при ответе равна 0.02573.

Аналогичной командой можно узнать эти параметры на удаленном сервере:

# ntpdate -q ntp1.vniiftri.ru
server 62.117.76.142, stratum 1, offset 0.002487, delay 0.03352
29 Oct 02:28:14 ntpdate[9245]: adjust time server 62.117.76.142 offset 0.002487 sec

Ниже приведен пример ответа сервера, непригодного для синхронизации:

server 62.117.76.142, stratum 1, offset 0.002487, delay 0.03352
29 Oct 02:28:14 ntpdate[9245]: no server suitable for synchronization found

В /var/log/ntp.log должны быть сообщения аналогичные нижеприведенным:

28 Oct 20:34:56 ntpd[6558]: synchronized to 62.117.76.142, stratum 1
28 Oct 20:35:09 ntpd[6558]: synchronized to 62.117.76.138, stratum 1
28 Oct 20:37:01 ntpd[6558]: synchronized to 62.117.76.142, stratum 1

Каждая запись соответствует успешной синхронизации с удаленным сервером.

В случае, если после запуска ntpd он только 1 раз синхронизируется с удаленным сервером а синхронизация не наблюдается, лог выглядит так:

17 Nov 15:47:17 ntpd[5059]: synchronized to 91.198.10.4, stratum=2
17 Nov 15:47:17 ntpd[5059]: kernel time sync disabled 0041
17 Nov 15:47:21 ntpd[5059]: kernel time sync enabled 0001

Ссылки