Я пытаюсь настроить NTP в локальной сети, которая не имеет (и никогда не будет) подключение к Интернету. Основным приоритетом является то, что машины в сети синхронизируются друг с другом, даже если время их синхронизации не является точным на 100%.
У нас также есть требование использовать иерархию NTP для репликации настроек развернутой системы. То, что я хочу сделать, это иметь иерархию машин, как это:
Moon (Main Server running Windows) (10.1.3.10)
|____Earth (Linux x64 client) (10.1.3.1)
|____Mars (Linux x64 client) (10.1.3.2)
|____Saturn (Linux x64 client) (10.1.3.3)
|____RackCard23 (Linux x64 client and server to the two machines below) (10.1.3.23)
|___RackCard21 (Linux x64 client) (10.1.4.21)
|___RackCard22 (Linux x64 client) (10.1.4.22)
Обратите внимание, что карты RackCard имеют два порта Ethernet, один из которых подключен к сети 10.1.3.x, а другой - в сети 10.1.4.x. RackCard23, которая синхронизируется с главным сервером, Moon сделает это в сети 10.1.3.x, а RackCard22 / 23 подключится к RackCard23 в сети 10.1.4.x. Это потому, что я не хочу, чтобы RackCards22 / 23 оставлял свою сеть для синхронизации времени, и потому что он копирует окончательно развернутую систему.
До сих пор мне удалось получить все, что нужно, синхронизируя с Луны для правильной синхронизации (включая RackCard23).
Но у меня возникают трудности с синхронизацией RackCard22 и 23 с RackCard23.
[root@RackCard23]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"
server 10.1.3.10 iburst minpoll 4 maxpoll 4 prefer #This is what we want to happen
fudge 127.127.1.0 stratum 2 #Not sure about these two lines, was trying to force it to be a stratum 2 server
fudge 127.127.0.1 stratum 2
# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
restrict 10.1.3.10 mask 255.255.255.255 nomodify notrap noquery
#Attempt to get to act as an NTP Server
broadcast 10.1.4.255
restrict 10.1.3.21 mask 255.255.255.255 nomodify notrap
restrict 10.1.4.21 mask 255.255.255.255 nomodify notrap
Это вывод из ntptrace:
[rootRackCard23]# /usr/sbin/ntptrace
localhost.localdomain: stratum 16, offset 0.000000, synch distance 0.000030
Как вы можете видеть, машина сообщает о себе как сервер stratum 16, несмотря на то, что она синхронизирована с сервером stratum 1 (Moon):
[root@RackCard23 awd]# /usr/sbin/ntpdate -d 10.1.3.10
21 Jun 13:55:09 ntpdate[19410]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.3.10 and service ntp
host found : 10.1.3.10
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
server 10.1.3.10, port 123
stratum 1, precision -6, leap 00, trust 000
refid [LOCL], delay 0.04135, dispersion 0.00383
transmitted 4, in filter 4
reference time: cfc99402.e010624d Mon, Jun 21 2010 8:32:18.875
originate timestamp: cfc9dfad.48000000 Mon, Jun 21 2010 13:55:09.281
transmit timestamp: cfc9dfad.47e27179 Mon, Jun 21 2010 13:55:09.280
filter delay: 0.04155 0.04155 0.04137 0.04135
0.00000 0.00000 0.00000 0.00000
filter offset: -0.01448 0.000781 0.000537 0.000394
0.000000 0.000000 0.000000 0.000000
delay 0.04135, dispersion 0.00383
offset 0.000394
21 Jun 13:55:09 ntpdate[19410]: adjust time server 10.1.3.10 offset 0.000394 sec
Конфигурация клиентов (RackCard21 / 22) выглядит следующим образом:
[root@RackCard21]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"
server 10.1.4.23 iburst minpoll 4 maxpoll 4 prefer
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
# restrict 127.0.0.1
restrict None mask 255.255.255.255 nomodify notrap noquery
И ntptrace дает это:
[root@RackCard21]# /usr/sbin/ntpdate -d 10.1.4.23
21 Jun 14:04:34 ntpdate[14381]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.4.23 and service ntp
host found : 10.1.4.23
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
10.1.4.23: Server dropped: strata too high
server 10.1.4.23, port 123
stratum 16, precision -20, leap 11, trust 000
refid [10.1.4.23], delay 0.02568, dispersion 0.00000
transmitted 4, in filter 4
reference time: 00000000.00000000 Thu, Feb 7 2036 6:28:16.000
originate timestamp: cfc9dfef.12b79516 Mon, Jun 21 2010 13:56:15.073
transmit timestamp: cfc9e1e2.aeae7d56 Mon, Jun 21 2010 14:04:34.682
filter delay: 0.02573 0.02571 0.02568 0.02568
0.00000 0.00000 0.00000 0.00000
filter offset: -499.609 -499.609 -499.609 -499.609
0.000000 0.000000 0.000000 0.000000
delay 0.02568, dispersion 0.00000
offset -499.609286
21 Jun 14:04:34 ntpdate[14381]: no server suitable for synchronization found
Поэтому он не может найти подходящий сервер, потому что сервер, который я пытаюсь использовать, сообщает, что это сервер уровня 16 (который, я считаю, означает не синхронизированный). И это несмотря на то, что оно синхронизировано.
Поэтому мне нужно каким-то образом сделать RackCard23 более высоким слоем (в идеале, слой 2). Как мне это сделать?
Любая помощь очень ценится, поскольку я пытаюсь заставить это работать в течение многих дней!
РЕДАКТИРОВАТЬ:
Привет Кристофер
Я перезагружал ntpd, да;)
Все пакеты Linux работают под управлением CentOS 5.4.
Это вывод предложенных вами команд. Сначала с сервера:
[root@RackCard23]# /usr/sbin/ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.1.3.10 .INIT. 16 u - 16 0 0.000 0.000 0.000
10.1.4.255 .BCST. 16 u - 64 0 0.000 0.000 0.001
[root@RackCard23]# /usr/sbin/ntpdc -c monlist
remote address port local address count m ver code avgint lstint
===============================================================================
localhost.localdomain 34566 127.0.0.1 1 7 2 0 0 0
10.1.4.21 123 10.1.4.23 5 3 4 180 5 1
10.1.4.22 123 10.1.4.23 7 3 4 0 2 2
А потом от клиента:
[root@RackCard21]# /usr/sbin/ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.1.4.23 .INIT. 16 u 10 16 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 10 l 44 64 1 0.000 0.000 0.001
Ответы:
Как упоминал Крис, страта 16 указывает, что сервер на самом деле не синхронизирован с сервером. Просто чтобы быть уверенным, вы перезапустили службы ntp, верно? (
service ntpd restart
) Я не пытаюсь намекнуть, что ты скучаешь по легким вещам, но я всегда делаю!Можете ли вы опубликовать вывод еще нескольких команд для диагностики?
ntpq -p
на клиенте и сервере. Должен показать, какие серверы он настроил, а также статистику для этих серверов.ntpdc -c monlist
на сервере. Должен показать клиентов, подключенных.Кроме того, поскольку вы не упомянули ОС, я использую команды в стиле RHEL. Дайте мне знать, если у вас есть что-то другое.
РЕДАКТИРОВАТЬ после получения дополнительной информации.
Хорошо, увидев ваш вывод, вот ваша проблема: у вас нет сервера stratum 1. На самом деле «Луна» использует свои местные часы. Он сообщает о себе как сервер уровня 16. Для справки, сервер Stratum1 будет иметь локальные GPS или атомные часы. У вас есть один из них? В противном случае Moon необходимо синхронизировать свои часы с ДРУГИМ сервером ntp. Если у него нет доступа к сети, вам нужно будет выдумать его слой. (Это требует, чтобы вы не слишком заботились о «истинном» времени. Что вы не делаете, но любой, кто читает это, должен это заметить.)
На Луне, добавьте следующую строку в файл ntp.conf:
fudge 127.127.1.0 stratum 10
. Это заставит его сообщать о своих локальных часах как уровень 10. Это заставит все другие серверы использовать его по сравнению с их локальным уровнем 16 часов.- Кристофер Карел
источник
Может быть, не в тему, локальный сервер Stratum 2 требует подключения к серверу Stratum 1, а в вашей изолированной сети его нет.
Вы можете приобрести дешевый GPS-модуль и Raspberry Pi, одноплатный компьютер с минимальным энергопотреблением и широкими возможностями сопряжения. Подключите свой GPS-модуль к Raspberry Pi и присоедините Pi к своей сети, с соответствующим программным обеспечением, это может быть ваш NTP-сервер Stratum 1, который ваш сервер Stratum 2, или, поскольку у вас есть его в вашей сети каждый компьютер, синхронизировать время.
источник
NTPd установит свой собственный слой в соответствии с:
(Это не обязательно порядок событий, но порядок, в котором они обрабатываются в целях установки локального слоя.)
(Кроме того, слой 16 не обязательно означает, что он не синхронизирован).
источник
Кроме того, я приведу некоторый анализ вашего вывода ntpq. Просто чтобы помочь в дальнейшем устранении неполадок для себя и других.
Во-первых, с вашего сервера:
В первом столбце указаны два сервера, на которые настроен данный компьютер. Примечательным является отсутствие
*
или+
то, что указывало бы на синхронизированный одноранговый или вторичных кандидатов. Это означает, что ваш сервер не будет использовать записи здесь, но, по крайней мере, проверяет их.В третьем столбце "st" указан уровень этих серверов. В этом случае это означает, что обе эти машины используют свои локальные часы. (уровень по умолчанию 16) Последние три столбца будут указывать, как далеко находятся эти два часа. Либо в значении «разница секунд в секундах», либо в задержке между двумя компьютерами, к разнице в этой задержке. Здесь более высокие цифры хуже.
Причина таких несинхронизированных записей может зависеть от некоторых факторов: если смещение в часах слишком велико, то ntp даже не будет пытаться, так как это приведет к слишком большому скачку по местному времени. Если джиттер становится плохим, клиент будет десинхронизироваться, пока все не стабилизируется. (Обычно это временно, и все же повторное получение) В качестве альтернативы, как в вашем случае, если настроенные серверы имеют равные или более высокие значения страты, указывая на то, что они менее надежны в качестве источников времени, клиент не будет их использовать.
- Кристофер Карел
источник