Можно ли настроить ntpd
подделать уровень страты сетевого источника?
С первого взгляда я подумал, что fudge
директива может выполнить это, однако после просмотра ntp.conf(5)
man, я обнаружил, что эта директива применима только к эталонным часам.
Несколько деталей:
У меня работает локальный сервер ntpd
в качестве основного источника времени для клиентов в локальной сети. Этот сервер указывает на пул ntp.org и обычно поддерживает уровень страты 3.
В дополнение к моему основному серверу у меня есть стороннее сетевое устройство, основная задача которого - синхронизировать настенные часы по беспроводной сети. Радиочастотная передача. В спецификации устройства указано, что это «сервер времени, соответствующий RFC2030», но в остальном это почти черный ящик. Я настроил устройство на использование моего основного сервера в качестве единственного источника времени:
Конфигурация черного ящика http://www.freeimagehosting.net/uploads/21bafb12bd.png
Моя проблема обнаружилась, когда я настроил ntpd
на моем персональном компьютере, чтобы использовать оба моих основного сервера NTP, и беспроводной передатчик как источники времени. При запросе моего локального ntpd я заметил, что «черный ящик» (10.x.x.Z) был предпочтительным источником времени:
$ ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
x10.x.x.X 69.164.222.108 3 u 48 64 177 0.501 370.029 1.530
*10.x.x.Z 10.x.x.Z 2 u 50 64 377 1.354 -23.681 14.179
С сервера 10.x.x.Z
единственный источник времени является сервер 10.x.x.X
(который является слоем 3), это должен be stratum 4. Я считаю, что производитель жестко запрограммировал свой уровень страты.
Есть ли способ заставить мою машину отдавать предпочтение «хорошему» (10.x.x.X) серверу, несмотря на его более высокий уровень страты? Я также попробовал prefer
директива в моем местном ntp.conf
файл, но безрезультатно, всегда побеждает маленький черный ящик: /
Как бы то ни было, на моем локальном компьютере установлена Mac OS X 10.6.
$ ntpq -c rv | grep version
version="ntpd 4.2.4p4@1.1520-o Mon May 18 19:38:25 UTC 2009 (1)",
После некоторого дополнительного исследования, похоже, "обманывают" уровень страты сеть источник невозможен. Так что я пошел дальше и попробовал ответ dtoubeli. К моему удивлению, простое превращение моего локального сервера времени в уровень слоя 2 (равный стороннему устройству) не всегда приводило к тому, что он становился предпочтительным источником времени. Мой локальный ntpd по-прежнему будет управлять ими обоими как «ложные отметки». По какой причине, я не уверен, но я предполагаю, потому что они были единственными двумя источниками времени, а их время было так далеко.
Самая большая проблема здесь заключается в том, что мое стороннее устройство, похоже, не показывает очень стабильное время, на самом деле оно сильно колеблется. Решением моей проблемы было добавление нескольких других источников точного времени (pool.ntp.org) в мой /etc/ntp.conf
. Теперь мой локальный сервер всегда выбирается в качестве предпочтительного источника времени, часто, несмотря на то, что у него более высокий уровень страты, чем у некоторых серверов в пуле.
Вы можете попробовать запустить свой локальный ntpd на уровне 2. Вместо того, чтобы указывать его на pool.ntp.org, просто создайте список из 5-7 серверов уровня 1 и напрямую добавьте их в конфигурацию. Если ссылочный сервер находится на уровне 1, ваш будет работать на уровне 2. Тогда ваш prefer
вариант может сработать.
Однако, исходя из моего опыта, уровень страты не всегда является решающим фактором при выборах из числа первоисточников. Я думаю, что задержка и джиттер также имеют большое влияние. Я несколько раз замечал, что сервер нижнего уровня был выбран в качестве основного источника, хотя было несколько доступных серверов верхнего уровня только потому, что у него была наименьшая задержка. Поэтому я не могу гарантировать, что предложенный подход сработает.
У меня есть аппаратный источник времени GPS "высокого уровня (10)" в нашей локальной сети, который дает мне фальшивый статус (x) в ntpq, я обнаружил, что используя server [x.x.x.x] true
(x = IP-адрес) в ntp.conf будет обходить проверку фальцетом, позволяя ему быть возможным кандидатом. Похоже, что номер страты не всегда означает более высокий приоритет.
Если вам не нравится этот сервер 10.x.x.Z в качестве ссылки, это должно помочь:
server 10.x.x.Z noselect
Это полезно, если сервер должен использоваться только для мониторинга. в качестве альтернативы вы также можете настроить:
server 10.x.x.X prefer
Следовательно, 10.x.x.Z не будет использоваться, если доступен 10.x.x.X.
Одна из причин, по которой это предпочтительнее, заключается в том, что ваш другой сервер времени недавно был недоступен. Видите столбец охвата?