среда, 19 сентября 2018 г.

ntpdate при невозможности синхронизировать время с сервером NTP весьма неинформативно об этом рапортует, что на самом деле не только снижает потенциальный интерес к утилите, но и фактически мешает работать.   Утилита при стандартном запуске вида
  ntpdate 10.20.30.40
не даст отличить  ситуации "нет доступа к сетевому узлу 10.20.30.40" от ситуации "на хосте 10.20.30.40 не запущен NTP сервер" не говоря уже об новой для меня ситуации "NTP сервер запущен, но его stratum/leap - это параметры [не]достоверности времени сервера -  слишком велики.
Для более подробного разбора полётов -ожидаемого на самом деле поведения - необходимо запускать nptdate с ключом -d.
Вчера на gentoo настраивал NTP сервер без доступа к внешним источникам. В генте 3 варианта NTP серверов, это

  • net-misc/openntpd
  • net-misc/ntp
  • net-misc/chrony

Мне был привычен традиционный ntp от www.ntp.org но решил попробовать openntpd.
Дать шанс. Указал адрес прослушивания, вроде бы что-то поднялось, попробовал синхронизироваться, не получилось - забил. Думаю, надо использовать старых друзей.
И как выяснилось, привычный ntpd  тоже не отдаст время с ожидаемой точностью для ntpdate.
Запустил
   <client>#ntpdate192.168.0.1

получил ожидаемое
20 Sep 05:54:30 ntpdate[1890]: no server suitable for synchronization found

далее с ключом  -d
  <client># ntpdate -d  192.168.0.1 ...
 20 Sep 05:57:03 ntpdate[5580]: ntpdate 4.2.6p5@1.2349-o Mon Nov 14 18:25:09 UTC 2016 (1)
Looking for host 192.168.0.1 and service ntp
host found : 192.168.0.1
transmit(192.168.0.1)
receive(192.168.0.1)
...
receive(192.168.0.1)
192.168.0.1: Server dropped: strata too high
server 192.168.0.1, port 123
stratum 16, precision -24, leap 11, trust 000

...
20 Sep 05:57:09 ntpdate[5580]: no server suitable for synchronization found


Решил немного покопать, может получится быстро исправить ситуацию - не получилось быстро найти требуемые опции.

 В сердцах 
подправил в сорцах

в  ntpd/ntp_proto.c задал при отправке  stratum = 2;

немногое изменилось:
 <client># ntpdate -d  192.168.0.1
20 Sep 05:59:26 ntpdate[8858]: ntpdate 4.2.6p5@1.2349-o Mon Nov 14 18:25:09 UTC 2016 (1)
Looking for host 192.168.0.1 and service ntp
host found : 192.168.0.1
transmit(192.168.0.1)leap 11
...
...
192.168.0.1: Server dropped: Leap not in sync
server 192.168.0.1, port 123
stratum 2, precision -24, leap 11, trust 000




решил, что это уже перебор. Надо дать шанс chrony, перед дальнейшей ломкой кода.
<server>#emerge chrony
<server>#cat /etc/chrony/chrony.conf
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
clientloglimit 100000000
local stratum 10
leapsectz right/UTC
allow  192.168.0.100
bindaddress 192.168.0.1

<server>#/etc/init.d/chronyd start

на клиентской тачке
 <client># ntpdate  -d 192.168.0.1
...
...
server 192.168.0.1, port 123
stratum 10, precision -25, leap 00, trust 000

refid [192.168.0.1], delay 0.02576, dispersion 0.00182
...
20 Sep 06:05:10 ntpdate[16530]: adjust time server 192.168.0.1 offset 0.434906 sec

отлично