Ключевые слова:ntp, freebsd, (найти похожие документы)
From: Anton Shcherbinin <npecca@z.eridan.us.>
Newsgroups: ftp.ru.unix.bsd
Date: Mon, 16 Jan 2004 14:31:37 +0000 (UTC)
Subject: Выбор NTP-серверов для синхронизации времени
AL>>>> Пропиши другой ntp-сервер. А лучше три.
>> То, что лучше 3 сервера -- святая правда. Если жалко трафика, то трафик,
>> генерируемый (в среднем за месяц) ntpd, ничтожен. Полагаться на то, что 1
>> конкретный сервер всегда будет доступен, опрометчиво.
> Трафик не вопрос, но вот где нарыть 3 штуки? Еще знаю ntp.psn.ru, а еще?
> В списке ntp серверов
> (http://www.eecis.udel.edu/~mills/ntp/servers.html)
"Вегной догогой идёте, товагищи" :-) Именно в этом списке и нарыть.
> на RU приходится 2 сервера, один из которых, похоже, дохлый
> (sign.chg.ru).
Угу :-( Что еще хуже, второй (ntp.psn.ru в Пущино) тоже отнюдь не самый
надежный. IMHO, так просто говно, я бы его даже в список "запасных" в
ntp.conf не включал. Хотя, я следил за ним года 2 назад, может, они
исправились. Так что еще раз подчеркиваю, IMHO.
Увы, мы в Совке, мы все бедные, а кто не очень бедный, тот жадный. И
никто, даже из имеющих источники точного времени (всякие там
GPS-приемники и проч.), и не думает включать свои серверы в список
публичных. В результате публичные серверы stratum 1 есть даже в Польше,
Словении, Чехии, не говоря уже о западноевропейских государствах
(половина из названных стран с населением менее Московской обл.). Но в
Совке -- нетути. В России из публичных только 2 жалких stratum 2, из них
1 вообще дохлый, а 2-й -- скорее мертв, чем жив.
> Или можно использовать любые, не только RU, серверы?
Перефразируя Кису Воробьянинова, "патриотизм здесь неуместен" :-)
Сделаем так: я опишу, что бы я делал, создавая для себя список серверов
для синхронизации. А вы будете смотреть мне через плечо. Очень
наглядно.
Исходные данные. Географически я в дер. Лужки. Это на окраине Европы. Но
все же Европа (это будет важно в дальнейшем; если вы в Сибири или на
Дальнем Востоке, то выбирать вам нужно будет из других серверов, к вам
поближе). Собираюсь синхронизировать небольшую сеть (10 клиентов, 1
сервер), это тоже имеет значение.
Идем к проф. Дэйвиду Миллзу (автору NTP и ntpd) на список публичных
серверов. В России есть только 2 сервера stratum 2: sign.chg.ru (В дер.
Черноголовка) и ntp.psn.ru (в дер. Пущино). Какое счастье: до Пущино от
меня всего 100 км, до Черноголовки -- и вовсе 50, на велике летом туда
ездил. Оба просят написать им письмо. Письмо писать исключительно лень.
Я бы на этом и забил на оба сервера, но ладно, будем косить под
патриотов и убедимся, что даже фанатичный патриот этими серверами не
воспользуется.
% host sign.chg.ru
Host not found.
Т. е. 1-го сервера вообще не существует. Ладно, применяем телепатию:
% host ntp.chg.ru
ntp.chg.ru is a nickname for netserv1.chg.ru
netserv1.chg.ru has address 193.233.46.3
Ага, такой есть. Попробуем получить с него время:
% ntpdate -q ntp.chg.ru
server 193.233.46.3, stratum 16, offset -43.044637, delay 0.09561
18 Jan 07:56:34 ntpdate[55699]: no server suitable for synchronization found
Т. е., во-первых, у него у самого часы не синхронизированы (stratum 16).
Во-вторых, мало того, что не синхронизированы, разница с моими около 43
целых секунд (не миллисекунд!) А у меня часы более-менее точно идут. Т.е.
это _ему_ надо по мне часы выверять, а не наоборот :-) Наконец,
в-третьих, задержка составляет 95 мс. До Черноголовки, расстояние до
которой 50 км, в сетевой метрике 95 мс. Много это или мало? Мы это
поймем, когда увидим, сколько в сетевой метрике до Дании и Швеции, до
которых более полутора тысяч км.
Пробуем 2-й сервер:
% ntpdate -q ntp.psn.ru
server 194.149.67.130, stratum 0, offset 0.000000, delay 0.00000
18 Jan 08:18:48 ntpdate[55743]: no server suitable for synchronization found
Т. е. этот сервер вообще лежит. Увы, оба российских сервера оказались
совершенно бесполезны.
Теперь из всего длинного списка серверов отберем только те, которые:
1) находятся в Европе (поближе к нам);
2) включают Европу (т. е. и мою деревню) в Service Area;
3) имеют максимально облегченную стратегию доступа (Access Policy),
т.е. открыты для всех и не требуют ничего, даже письма с уведомлением об
использовании их сервиса.
Естественно, требования 2) и 3) -- это просто вежливость, netiquette. И
мы, в отличие от 99% совков, будем их соблюдать.
А если не соблюдать? Тогда можно не ограничиваться списком публичных
NTP-серверов, а взять, скажем, ваш ntp1.demos.net . А еще лучше -- те, у
которых сам ntp1.demos.net берет время. (Домашнее задание для читателей:
узнайте, у кого он берет время). Только уж делать как админ
ntp1.demos.net и совать в ntp.conf серверы из-за океана, до которых чуть
ли не 200 мс, мы не будем. И делать локальные часы одним из источников
синхронизации (насильно присваивать локальным часам stratum 8 ) тоже не
будем -- это грубый хак. Бедный Демос, скромный крохотный провайдер
Интернет, ну нет у него денег на приемник сигналов точного времени... А
вот у одного из тех, с кем он синхронизируется (тоже крупного
российского провайдера), есть GPS. И 2 нормальных сервера NTP (один --
stratum 1 (на нем и стоит GPS), другой -- stratum 2. В принципе, уже
этих двух серверов хватило бы за глаза, т. к. они, в отличие от
"серверов" в Черноголовке и Пущино, стабильно работают. Но они, увы, не
публичные. Хотя 99% людей на это, как мы понимаем, плевать. Но не нам.
2 года назад я звонил в сервисную поддержку этого провайдера (лучший,
IMHO, провайдер в нашей деревне, низкий им поклон), спрашивал, можно ли
использовать их NTP-сервер. Оператор поддержки слегка опешил, такого у
них еще никто не спрашивал, попросил подождать, пошушукался, видимо, со
старшими админами, и ответил, что я должен прислать почтой заявку с
указанием, чего конкретно я хочу. Но я решил, что админ должен админить,
а писать письма... пусть писатели пишут. Поэтому "вернемся к нашим
баранам": отберем из списка публичных серверов удовлетворяющие трем
перечисленным требованиям.
Вот что выходит:
########################
# A. stratum 1 servers #
########################
swisstime.ethz.ch
ntp{0,1,2,3}.fau.de
ntps1-{0,1}.cs.tu-berlin.de
GPS.FreeBSD.dk (!open access to servers, please, no client use!)
GPS.dix.dk (!open access to servers, please, no client use!)
tempo.cstv.to.cnr.it
ntp{0,1,2}.nl.net
ntp.certum.pl
vega.cbk.poznan.pl
ntp{1,2}.gbg.netnod.se
ntp{1,2}.mmo.netnod.se
ntp{1,2}.sp.se
ntp{1,2}.sth.netnod.se
time2.stupi.se
########################
# B. stratum 2 servers #
########################
ntp{1,2}.belbone.be
ntp.tuxfamily.net
time.flygplats.net
a.ntp.alphazed.net
ntp.cis.strath.ac.uk
time-server.ndo.com
Гм... а негусто stratum 2 по сравнению с приличным списком stratum 1!
Парадокс -- владельцы серверов stratum 2 больше озабочены, чем владельцы
stratum 1, реально потратившие деньги на оборудование. И либо вообще
требуют prior arrangement для использования их сервера, либо хотят, чтоб
мы им "send a message to notify".
Примечание: в обоих списках строки вроде ntp{0,1,2}.nl.net означают
следующее: _случайным образом_ выбрать 1 сервер из ntp0.nl.net ,
ntp1.nl.net , ntp2.nl.net и использовать его.
Ok, опробуем в деле сначала 2-й список. Создаем файлы /etc/ntp.conf и
/etc/ntp.keys :
% cat /etc/ntp.conf
server ntp2.belbone.be
driftfile /etc/ntp.drift
keys /etc/ntp.keys
trustedkey 1
requestkey 1
controlkey 1
% cat /etc/ntp.keys
1 M p422w0rd
Мы будем добавлять и удалять серверы по ходу пьесы, не перезапуская
ntpd, поэтому я включил сюда лишь 1 сервер.
А теперь -- пааехали! :-)
# ntpd
Присоединяемся к нему, смотрим на список серверов, вводим данные для
авторизации, добавляем остальные stratum 2 серверы, ждем для набора
статистики хотя бы 20 минут, смотрим, как идет его "общение" с
серверами (в приглашении ntpdc я заменил '>' на '$', чтоб никто не
принял это за цитированный текст) :
% ntpdc
ntpdc$ pe
remote local st poll reach delay offset disp
=ntp2.belbone.be 105.157.127.57 2 64 17 0.09691 -0.035300 0.93817
ntpdc$ keyid 1
ntpdc$ passwd
MD5 Password:
ntpdc$ adds ntp.tuxfamily.net
done!
ntpdc$ adds time.flygplats.net
done!
ntpdc$ adds a.ntp.alphazed.net
done!
ntpdc$ adds ntp.cis.strath.ac.uk
done!
ntpdc$ adds time-server.ndo.com
done!
/* подождали 20 минут */
ntpdc$ pe
remote local st poll reach delay offset disp
=c-573470d5.06-2 105.157.127.57 2 64 377 0.04778 0.002055 0.00093
=hades.hosts.net 105.157.127.57 3 64 377 0.06644 0.030716 0.00095
=kryten.alphazed 105.157.127.57 2 64 377 0.06363 0.007340 0.00092
*80.67.179.98 105.157.127.57 2 64 377 0.06282 0.010858 0.00095
=ntp0.cis.strath 105.157.127.57 2 64 377 0.07347 0.011024 0.00093
=ntp2.belbone.be 105.157.127.57 2 64 377 0.09839 -0.015025 0.00093
Имена серверов гадко обрезаны, выведем их в полном виде:
ntpdc$ list
client c-573470d5.06-201-73746f25.cust.bredbandsbolaget.se
client hades.hosts.netdirect.net.uk
client kryten.alphazed.net
client 80.67.179.98
client ntp0.cis.strath.ac.uk
client ntp2.belbone.be
Итак, все 6 серверов работают нормально, все последние 8 раз были
доступны (reachability register == 0377, т. е. 11111111 двоично),
находятся недалеко от меня (delay в пределах 0.1 секунды), offset в
разумных пределах ( +-30 миллисекунд ).
Только hades.hosts.netdirect.net.uk (он же time-server.ndo.com ) имеет
stratum 3, а не 2, как все остальные. Это плохой симптом. Скорее всего,
у него stratum скачет, то 2, то 3, в зависимости от доступности каких-то
серверов stratum 1 или еще чего-то. Я бы его выкинул, а остальные 5
оставил.
Резюме. Если не нужна высокая точность синхронизации (точнее +- 30
миллисекунд), то зубные врачи всего мира рекомендуют следующий ntp.conf
% cat /etc/ntp.conf
server ntp2.belbone.be
server ntp.tuxfamily.net
server time.flygplats.net
server a.ntp.alphazed.net
server ntp.cis.strath.ac.uk
driftfile /etc/ntp.drift
keys /etc/ntp.keys
trustedkey 1
requestkey 1
controlkey 1
плюс /etc/ntp.keys, содержащий единственную строку
1 M password_to_change_ntpd_settings
Теперь попробуем более внушительный список серверов stratum 1. Один из
серверов, tempo.cstv.to.cnr.it (193.204.114.233 , Location: IEN Galileo
Ferraris, Torino, Italy), сразу кандидат на помойку:
% host tempo.cstv.to.cnr.it
Host not found.
% ntpdate -q 150.145.33.1
server 150.145.33.1, stratum 0, offset 0.000000, delay 0.00000
18 Jan 10:50:28 ntpdate[56101]: no server suitable for synchronization found
Т. е. сервер по указанному адресу не работает, а DNS-имя не разрешается.
Подсовываем остальные stratum 1-серверы ntpd, а stratum 2 удаляем:
ntpdc$ adds swisstime.ethz.ch
done!
ntpdc$ adds ntp2.fau.de
done!
ntpdc$ adds ntps1-1.cs.tu-berlin.de
done!
ntpdc$ adds gps.freebsd.dk
done!
ntpdc$ adds gps.dix.dk
done!
ntpdc$ adds ntp2.nl.net
done!
ntpdc$ adds ntp.certum.pl
done!
ntpdc$ adds vega.cbk.poznan.pl
done!
ntpdc$ adds ntp2.gbg.netnod.se
done!
ntpdc$ adds ntp2.mmo.netnod.se
done!
ntpdc$ adds ntp2.sp.se
done!
ntpdc$ adds ntp2.sth.netnod.se
done!
ntpdc$ adds time2.stupi.se
done!
ntpdc$ unconf ntp2.belbone.be ntp.tuxfamily.net time.flygplats.net \
a.ntp.alphazed.net ntp.cis.strath.ac.uk time-server.ndo.com
done!
ntpdc$ pe
remote local st poll reach delay offset disp
=ntp1.NL.net 105.157.127.57 1 1024 3 0.13670 0.056724 3.93774
=smtp.certum.pl 105.157.127.57 1 1024 3 0.10017 -79.97433 3.93774
=ntp2.sth.netnod 105.157.127.57 1 1024 3 0.02525 0.020061 3.93773
=ntp2.sp.se 105.157.127.57 1 1024 3 0.05815 0.011808 3.93774
=gps.dix.dk 105.157.127.57 1 1024 3 0.03290 0.019397 3.93773
=swisstime.ee.et 105.157.127.57 1 1024 3 0.06447 0.011622 3.93774
=Time2.Stupi.SE 105.157.127.57 1 1024 3 0.09265 0.018685 3.93773
=vega.cbk.poznan 105.157.127.57 1 1024 3 0.14240 0.063887 3.93773
=sombrero.cs.tu- 105.157.127.57 1 1024 3 0.05487 0.018349 3.94066
=gps.freebsd.dk 105.157.127.57 1 1024 3 0.13394 0.065261 3.93774
=ntp2.gbg.netnod 105.157.127.57 1 1024 3 0.15221 0.049865 3.93773
=ntp2-rz.rrze.un 105.157.127.57 1 1024 3 0.06853 0.014397 3.93774
=ntp2.mmo.netnod 105.157.127.57 1 1024 3 0.14427 0.047090 3.93773
Для набора статистики придется ждать хотя бы 10 раз по периоду опроса
серверов, т. е. по 1024 секунды :( Хотя, период опроса должен сейчас
упасть до минуты-двух (а затем снова нарасти). Подождали. Выведем список
серверов, для разнообразия, выйдя из ntpdc, командой ntpq -p :
% ntpq -p
remote local st poll reach delay offset disp
-ntp1.NL.net .GPS. 1 u 715 1024 377 138.670 38.134 1.063
xsmtp.certum.pl .PPS. 1 u 931 1024 277 95.704 -79996. 0.100
xvega.cbk.poznan .PPS. 1 u 712 1024 377 140.775 43.362 0.347
+Time2.Stupi.SE .PPS. 1 u 708 1024 377 92.393 -1.687 0.270
#ntp2.gbg.netnod .PPS. 1 u 916 1024 377 151.555 29.487 0.400
-ntp2.mmo.netnod .PPS. 1 u 918 1024 377 143.508 27.438 0.091
-ntp2.sp.se .PPS. 1 u 689 1024 377 57.687 -8.392 0.198
+ntp2.sth.netnod .PPS. 1 u 912 1024 377 25.437 -0.036 0.474
-swisstime.ee.et .DCFa. 1 u 920 1024 377 64.874 -7.700 0.281
-ntp3-rz.rrze.un .DCFp. 1 u 167 1024 377 63.002 -6.511 0.267
-sombrero.cs.tu- .PPS. 1 u 927 1024 377 54.873 -1.945 0.234
xgps.freebsd.dk .GPS. 1 u 929 1024 377 133.315 46.119 0.028
*gps.dix.dk .GPS. 1 u 675 1024 377 33.028 -0.213 0.109
Здесь when и poll -- в секундах, а offset и delay -- в миллисекундах.
Все серверы stratum 1, все были доступны все время (единственное
исключение -- smtp.certum.pl, reachability == 277, но это нормально,
запросто 1 пакет в сети мог потеряться, подключение к Сети у меня отнюдь
не самое надежное). smtp.certum.pl утверждает, что он суперсервер
stratum 1, а у самого часы на 80 секунд (!!) спешат. На помойку такие
серверы! Одно из многочисленных преимуществ ntpd перед ntpdate как раз и
состоит в том, что первый спасет нас от таких лжецов, а второй -- нет.
Далее, у 5 серверов задержка (расстояние в мс от меня) > 100 мс.
Далековато. Естественно, по сравнению с остальными. Наверняка
gps.freebsd.dk (о, коллеги по BSD! :-) ) и vega.cbk.poznan.pl ,
признанные лжецами ('x' в 1-й позиции в строке), работают нормально, но
просто слишком далеки, а соединение с ними несимметричное (т. е.,
например, запрос к ним идет 40 мс, а ответ от них обратно -- 90 мс). В
результате их часы для синхронизации не годятся.
Итак, что бы сделал я (у вас результаты могут сильно отличаться):
выкинул бы ntp1.nl.net, smtp.certum.pl, vega.cbk.poznan.pl,
ntp2.gbg.netnod.se, ntp2.mmo.netnod.se, gps.freebsd.dk . Что получилось
в итоге, по прошествии некоторого времени?
% ntpq -co
remote local st poll reach delay offset disp
-swisstime.ee.et 105.157.127.57 1 u 23 64 377 64.693 -3.250 0.010
-ntp2-rz.rrze.un 105.157.127.57 1 u 14 64 377 68.830 -0.171 0.092
+sombrero.cs.tu- 105.157.127.57 1 u 46 64 377 53.912 3.527 0.186
+gps.dix.dk 105.157.127.57 1 u 13 64 377 33.064 4.700 0.226
-ntp2.sp.se 105.157.127.57 1 u 49 64 377 57.724 -3.504 0.373
*ntp2.sth.netnod 105.157.127.57 1 u 22 64 377 25.861 4.695 0.106
-Time2.Stupi.SE 105.157.127.57 1 u 30 64 377 92.531 3.270 0.075
% ntpdc -clist
client ntp2.sth.netnod.se
client ntp2.sp.se
client gps.dix.dk
client swisstime.ee.ethz.ch
client Time2.Stupi.SE
client sombrero.cs.tu-berlin.de
client ntp2-rz.rrze.uni-erlangen.de
Сверяя часы с 7 серверами в Германии, Дании, Швейцарии и Швеции, я получаю
максимальное расхождение меньше 5 миллисекунд!
> Каким серверам можно верить? А то, как сказано в NTP FAQ, "Only 28% of the
> stratum 1 clocks found appear to actually be useful."
Учтите, что это 28% от общего кол-ва хостов, которые прикидываются
серверами stratum 1. В списке публичных серверов "хороших", полагаю,
более 90%. Нам в этом моем мини-исследовании попался лишь 1
лже-(stratum 1) сервер (smtp.certum.pl). "Дохлых" серверов, т. е.
просто не отвечающих (или не всегда отвечающих) на запросы, намного
больше, чем лже-серверов. В любом случае, оба списка, полученных в конце
концов мной, можете использовать совершенно смело. Проблема гораздо
скорее возникнет с внешним каналом вашего провайдера, чем с ними всеми
одновременно.
> То есть, со stratum 2 серверами, я так понимаю, всё еще хуже?
Нет, я полагаю, что не хуже. У stratum 1, только 1 (главный) источник
времени -- некая железяка. Если она поломается (баги в драйвере, сели
батарейки, отломалась антенна, ...), такой сервер запросто может начать
врать. У серверов stratum 2, как правило, источники времени --
несколько серверов stratum 1. Из которых хотя бы 1-2 не врут.
> А пользоваться надо, насколько я понял, stratum 2 серверами.
Желательно, особенно, если вы синхронизируете с вашего сервера менее
сотни клиентов. Однако, использовать непубличный сервер типа серверов
Демоса, gamma.ru и т. п. stratum 2, по-моему, еще менее этично, чем
публичные stratum 1. Гнаться за более низким stratum не нужно.
Синхронизируясь даже с плохими далекими серверами stratum 2 через модем
на 9600 bps, ваши часы будут все равно ошибаться не больше, чем на 0.1
сек.
--
Антон Щербинин
Ну это пул русских серверов(т.е. корневой ntpd-демон(ntp.org?) выберет вам случайный сервер из всех доступных.....) Но вообще, для получения невысоких stratum можно доверить выбор пулу, но лучше руками тестить и прописывать сервера, как описано :)
А вот про chg.ru:
# ntpdate -q ntp.chg.ru
server 77.236.32.2, stratum 2, offset 22.371198, delay 0.06288
25 Nov 21:41:11 ntpdate[24028]: step time server 77.236.32.2 offset 22.371198 sec
в статье жаловались на отсутствие в России, есть офицальные с атомными часами и gps в лаборатории точного времени
ntp1.imvp.ru ntp2 ntp3
питаются от офицального эталона, который в той же лаборатории.
только интересно чем надо заниматься, чтобы важно было забирать именно со stratum 1 ?
>Участвовать в пуле, например. Они прямо пишут, что stratum 3 им не
>очень-то и нужны.
Ну если это самоцель, тогда да :)
А так - есть довольно много областей где крайне важна качесвенная взаимная синхронизация времени на серверах - железках. А вот таких, где важно держать 3 знак по эталону - крайне мало.
Есть помимо прочего отлично работающие NTP ВНИИФТРИ (что такое ВНИИФТРИ - Википедия вам в помощь))):
Server stratum 1:
ntp1.vniiftri.ru
ntp2.vniiftri.ru
ntp3.vniiftri.ru
> Есть помимо прочего отлично работающие NTP ВНИИФТРИ (что такое ВНИИФТРИ - Википедия
> вам в помощь))):
> Server stratum 1:
> ntp1.vniiftri.ru
> ntp2.vniiftri.ru
> ntp3.vniiftri.ru
> Server stratum 2:
> ntp21.vniiftri.ru
угу, лабораторию точного времени ( институт времени и пространства - imvp.ru) - влили обратно во ВНИИФТРИ.
p.s. сегодня сказали что свой stratum 1 есть на M-IX, доступен из мира, может кто подскажет адрес.