Установка NTP сервера для включения его в pool.ntp.org

Большинство дистрибутивов операционных систем на базе Linux и многих сетевых устройств используют для установки часов сервера вида *.pool.ntp.org.

Рассмотрим подробнее откуда же берутся данные сервера, что требуется чтобы создать свой собственный сервер и добавить его к данному кластеру для помощи сообществу синхронизации времени.

Как сказано на сайте https://www.ntppool.org/ru/  - это огромный кластер серверов точного времени, предоставляющий надежный и простой в использовании NTP-сервис для миллионов клиентов и его услугами пользуются десятки миллионов систем по всему миру.

Как же установить свой сервер, что для этого требуется?

Требуется обычный сервер со статическим реальным IP адресом с актуальной операционной системой будь то Linux/BSD или подобное устройство которое в состоянии стабильно работать в роли ntp-сервера по протоколу NTP https://ru.wikipedia.org/wiki/NTP который работает через интернет-сети по порту 123/UDP.

Из-за небольшого потребления ресурсов и канала (до 10-15 килобит в секунду) подойдет практически любая конфигурация, например, VPS/VDS на базе KVM с минимальными ресурсами.

Цитирую с сайта https://www.ntppool.org/ru/join.html

“В настоящее время большинство серверов получают порядка 5-15 NTP-пакетов в секунду. Несколько раз в день могут возникать пики по 60-120 пакетов в секунду. Переводя в килобиты, получаем примерно 10-15Кбит/с в среднем и порядка 50-120Кбит/с на пиках нагрузки. В пул постепенно входит все больше серверов, поэтому резкое возрастание нагрузки в будущем не ожидается. Таким образом, вам вряд ли потребуется полоса больше 384-512Кбит (на прием и отдачу)”.

Устанавливаем NTP-сервер

В большинстве дистрибутивов Linux он входит в стандартные репозитории операционной системы и достаточно выполнить его установку

apt install ntp для Debian/Ubuntu или yum install ntp для CentOS

Теперь откройте файл конфигурации в вашем /etc/ntp.conf и там в 99% случаев будут сервера из пула:

pool 0.debian.pool.ntp.org iburst

pool 1.debian.pool.ntp.org iburst

pool 2.debian.pool.ntp.org iburst

pool 3.debian.pool.ntp.org iburst

Просто закомментируйте их символом #, сервер который будет входить в пул не должен синхронизироваться с ними

После чего перейдите по ссылкам http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers и http://support.ntp.org/bin/view/Servers/StratumOneTimeServers выберете там сервера для синхронизации

Также рекомендуется использовать google по запросу вида “ntp server ваша_страна”

Рекомендуется использовать не меньше 4 и не больше 6 серверов

Руководствуйтесь правилом 2+2+2 -

2 сервера - StratumOne

2 сервера - StratumTwo

2 сервера - в геолокациях соседних с вашей

Отмечу, что существуют также сервера (пулы серверов) точного времени принадлежащие крупным корпорациям - такие как time.apple.com / time.facebook.com / time.google.com. Использовать их или нет - сложный вопрос, так как мы используем пул для "интернет-независимости" и свободных операционных систем, то я бы не рекомендовал их использовать, кроме того сервера google не поддерживают передачу leap second.

Работу сервера следует проверить командой ntpdate -q имя-сервера должен быть ответ вида

root@gw:~# ntpdate -q ntp4.vniiftri.ru

server 89.109.251.24, stratum 1, offset 0.001008, delay 0.08249

 8 Jan 03:50:07 ntpdate[1414]: adjust time server 89.109.251.24 offset 0.001008 sec

Это означает, что сервер работает, есть ответ и он представляет собой сервер “первого яруса” (stratum 1).

Подробнее об ярусах (stratum) можно прочитать по ссылке https://habr.com/ru/post/79461/

Сервера которые являются эталонными часами (атомными, GPS-спутник) являются сервера так называемого нулевого уровня (stratum 0).

Сервера которые синхронизируются с ними напрямую (например, через GPS-приемник)  имеют уровень 1.

Следом идут сервера 2 и 3 - их вполне достаточно для синхронизации времени часов большинства компьютерных систем.

Проверка работоспособности

После добавления новых серверов (предварительно проверенных через ntpdate -q) следует перезапустить ntp-сервер (service ntp restart) и проверить его работу командой ntpq -pn

root@gw:~# ntpq -pn

     remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

-51.15.74.121    131.176.107.13   2 u   48   64   17    1.009   -0.030   0.246

*193.190.230.37  .EXT.            1 u   41   64   17    4.825   -0.263   0.853

+145.238.203.14  .MRS.            1 u   41   64   17   14.549   -0.857   0.127

-89.109.251.24   .MRS.            1 u   44   64   17   46.043    0.501   1.539

+62.231.6.98     .GPS.            1 u   43   64   17   41.770   -1.292   0.647

-80.60.208.118   193.67.79.202    2 u   43   64   17    8.324   -1.364   1.338

Когда есть сервер который начинается с * - значит синхронизирован успешно.

Понаблюдайте за работой ntp сервера некоторое время. Оставьте сервера с минимальным delay и jitter, рекомендуется потратить на это около часа времени и отобрать действительно лучшие сервера.

Также проверьте работу сервера с внешнего подключения через интернет выполнив ntpdate -q ip-адрес тем самым убедитесь что все работает, udp/123 нигде не фильтруется

Добавление сервера в пул pool.ntp.org

Дальше следует перейти на сайт https://www.ntppool.org/ru/join.html и добавить сервер - все предельно просто после быстрой регистрации

Сервер работает по IP адресу, доменное имя можно указать на этапе добавления и оно будет использоваться только в момент первоначальной настройки и для отображения в списке.

После чего выполняется проверка стабильности работы сервера (так называемый score) и как он станет больше 10 - ваш сервер будет добавлен в пул.

На странице управления серверами есть мониторинг в виде графика и csv-формата, где можно отслеживать стабильность часов и ответы вашего NTP-сервера, в случае его недоступности отправится email о проблеме.

Наблюдать пакеты можно командой tcpdump port 123 - будут видны запросы с различных сетей различных провайдеров, в основном конечно с клиентских устройств (интернет-роутеров).

04:00:50.531801 IP gw.mytimeserver.net.ntp > 82-217-46-231.cable.dynamic.v4.ziggo.nl.59634: NTPv4, Server, length 48

04:00:50.888803 Imytimeserver.netP 51.144.84.29.ntp > gw.mytimeserver.net.ntp: NTPv4, Client, length 48

04:00:50.888998 IP gw.mytimeserver.net.ntp > 51.144.84.29.ntp: NTPv4, Server, length 48

04:00:51.621673 IP 46.11.105.3.54627 > gw.mytimeserver.net.ntp: NTPv4, Client, length 48

04:00:51.621916 IP gw.mytimeserver.net.ntp > 46.11.105.3.54627: NTPv4, Server, length 48

04:00:52.037807 IP 51.136.36.226.ntp > gw.mytimeserver.net.ntp: NTPv4, Client, length 48

04:00:52.052103 IP gw.mytimeserver.net.ntp > 40.68.72.138.ntp: NTPv4, Server, length 48

В связи с этим настоятельно рекомендую провайдерам интернет-услуг установить в своей сети ntp-сервер и включить его в ntp-пул.

Полезные ссылки

https://www.ntppool.org/ru/

https://www.ntp.org/

https://ru.wikipedia.org/wiki/NTP

Update от 01.12.2024 актуальный список ntp-серверов

После инцидента с ntp-серверами спустя несколько лет работы сервера проверил настройки ntpd, сейчас мной используются актуальные следующие сервера StratumOne

Опция iburst указана также для подобранных вручную нескольких серверов, чтобы не создавать излишнюю нагрузку на все серверы при старте ntpd

# vniiftri
server ntp5.vniiftri.ru iburst
server ntp.sstf.nsk.ru
server ntp1.niiftri.irkutsk.ru
server vniiftri.khv.ru

# russia
server ntp.ix.ru iburst
server ntp2.ab2b.ru
server ntp.sonur.ru
server atomic.zxlab.ru
server ntp.lemonbro.ru

# other foreign servers
server time.apple.com iburst
server time.nist.gov iburst
server ntp.nic.kz
server ntp0.nl.net
server ntp2.fau.de
server time.esa.int
server ntp.ripe.net

Такое большое количество не используется одномоментно, неиспользуемые просто в пуле и помечены как # при выводе ntpq -p

@litos
08.01.2021 10:17 UTC
Первоисточник

Комментарии

@datt
08.01.2021 08:45 UTC
+1
На Сentos (и скорее всего на других RHEL-based дистрибутивах) при установке ОС, если сначала настроить сеть (с доступом в интернет), а потом настроить таймзону, то будет галочка «синхронизировать время по сети». При этом ставится демон chronyd. Есть небольшие отличия с ntpd (https://chrony.tuxfamily.org/comparison.html), в основном, положительные.
@Temtaime
08.01.2021 22:06 UTC
+2
Верно только для CentOS 8.
Вообще CentOS для меня умер после того как они изменили срок поддержки и переходят на CentOS Stream.
Остаётся Ubuntu Server.
09.01.2021 00:23 UTC
0
Есть Oracle Linux — бесплатный билд редхата, заметных отличией от CentOS нет. Недавно успешно перенесли на него кластер.

И почему сразу Убунту, почему не Дебиан?
09.01.2021 08:13 UTC
0
Лично я предпочитаю Debian, даже при наличии Centos. Но если говорить о компаниях, то лучше брать что-то имеющее техподдержку от разработчика — Oracle Linux, Centos или Ubuntu — всё таки Canonical также продаёт поддержку.
09.01.2021 08:11 UTC
0
Да вроде на 7 версии та же штука — сначала настроить сеть, потом время — и автоматом поставится chronyd.
@NAI
08.01.2021 11:17 UTC
+3
Эм, я правильно понимаю вы синхронизируетесь с серверами из списка *.ntp.org и потом добавляетесь в pool.ntp.org?

Переводя с русского на русский, синхронизируетесь из пула и входите в пул… масло-масленное. Причем, рекомендуете синхронизироваться с стратум 1 и 2, т.е. в худшем случае ваш сервер будет стратум 3.

Вступать в пул имеет смысл если у вас есть GPS\Glonass\Galileo приемник типа такого, или такого, или что-нибудь более профессиональное
@litos
08.01.2021 11:22 UTC
0
Я не синхронизируюсь с серверами из пула и то что это не следует делать указал выше, список серверов взял из их документации и его как раз в статье по настройке рекомендую использовать www.ntppool.org/ru/join.html «Сервер, входящий в пул, не должен использовать для синхронизации pool.ntp.org. Рекомендуем вручную выбирать сервера для синхронизации из этого support.ntp.org/bin/view/Servers/StratumTwoTimeServers списка»
@freejoins
08.01.2021 11:58 UTC
0
Что-то они мне напоминают
Пробовали FreeBSD+NTPd+Garmin, работает вполне стабильно. Дальше взяли вот такого зверя. Это обычный Fujitsu server с PCI-e платой, внутри Linux с тем же NTPd.
09.01.2021 14:02 UTC
0
Да много их всяких… далее вопрос лишь денег и необходимости сертификации. В домашних условиях это все даром не надо, а вот в каком-нибудь АСУ ТП требования к рассинхрону времени между устройствами более 10 мс. могут привести, если не к аварии, то к весьма значительным последствиям.
@nsmcan
08.01.2021 20:23 UTC
+2

Из этой статьи выпал важнейший кусок, описывающий а зачем это, собственно, надо Вам и/или провайдерам интернета.


Особенно, если нету своего источника точного времени, который можно расшарить таким образом для общества

@vodopad
08.01.2021 20:25 UTC
0
NTP уже не так актуально, в Centos, начиная с 7-ки, рекомендуют chrony. В Ubunru уже давно systemd-timesyncd. Работоспособность можно проверить через timedatectl timesync-status или timedatectl show-timesync. Ставить вместо этого ntp я бы не стал…

И не очень понятно, для чего менять предустановленные серверы на «любительские». А если они отвалятся? Что со стабильностью? Постоянно следить за доступностью чужих серверов и ещё мониторить их? Лично я считаю, что нужно оставить «стандартные» серверы поставщика дистрибутива.
@litos
08.01.2021 22:28 UTC
0

Предустановленные сервера времени в дистрибутиве находятся в домене pool.ntp.org и являются, как вы выразились, любительскими
Даже если зона вида centos.pool.ntp.org или ubuntu.pool.ntp.org — вендор (публично известный дистрибутив, крупный производитель сетевого оборудования) может получить свою доменную зону для статистики по своим устройствам
Менять сервера стоит в случае когда вы сами хотите вступить в пул NTP-серверов и тем самым используя бесплатно ресурсы для своих серверов/клиентов что-то отдавать взамен. Ведь пул полностью бесплатен и живёт только благодаря волонтёрам которые отдают часть своих ресурсов. Не будет их — не будет и сервиса.

@Zolg
08.01.2021 23:25 UTC
+1
NTP уже не так актуально, в Centos, начиная с 7-ки, рекомендуют chrony. В Ubunru уже давно systemd-timesyncd

А они, простите, через астральную связь с пространственно-временным континуумом время синхронизируют?
Под капотом там все тот же ntp/sntp


Лично я считаю, что нужно оставить «стандартные» серверы поставщика дистрибутива.

В рамках сети предприятия имеет смысл ставить сервера предприятия. По принципу "хоть и безобразно, зато единообразно". Т.к. в первую очередь как правило важна именно единообразность времени в различных системах, нежели его точное значение.
И если сбои в работе ваших центральных серверов времени вы отмониторите, то сбой серверов, зашитых по умолчанию вон в ту железку — далеко не факт

@JPEGEC
09.01.2021 09:10 UTC
0
Ожидал что речь пойдет о stratum0 и stratum1.
Жаль.
@vviz
09.01.2021 20:54 UTC
+1
Чуточку реальности:
— понятие «кластер» не корректно — это пул на уровне DNS.
— если железка непосредственно торчит в Инет — нужно «жосткий» FW
— трафик после года использования составляет in/out 108/247 Kb/s (ИМХО)
— после добавления NTP сервера в пул, некий сервес пула будет контролировать доступность сервера и помещать его адрес в пул только при достижении некого уровня «качественности» и удалять при снижении «качественности».
-для домашнего хозяйтва можно пользоваться 3.ru.pool.ntp.org
@Vort123
10.01.2021 15:47 UTC
0

По-моему, защита от некорректных клиентов должна быть реализована в самом сервере. Ему лучше знать, какой клиент — хороший, а какой — плохой. В ntpd, как я понимаю, есть команда restrict с опцией limited, так что от DDoS'а, теоретически, должен остаться только повышенный расход сетевых ресурсов. Да и кому надо DDoS'ить NTP сервер? У меня даже Tor атаковали всего несколько раз и то сервер сам справлялся (а после реакции разработчиков стал справляться ещё лучше).

10.01.2021 17:26 UTC
0
Я дико извиняюсь, но то, что Вы написали выше — чушь с точки зрения админа. Значит Вы не админ. Тогда к чему теоретизировать в незнакомой Вам области? Или Вы пишите комментарий ради комментария?
10.01.2021 18:04 UTC
0

Хотелось бы узнать, что именно неверно и почему.