Точное время в домашней локалке


A man with a watch knows what time it is. A man with two watches is never sure.
Segal's law

Часы советского ТВВсе-таки домашний сервер - это не только ценный мех, но еще и куча приятных мелочей в нагрузку. Помимо своих непосредственных задач (бэкап, хранение и раздача файлов), сервер может брать на себя еще множество мелких обязанностей, возлагать которые на персоналку часто неэффективно, да и просто идеологически неверно.

Недавно обнаружилось, что у нас в доме на всех компах разное время. Не то, чтобы фатально разное, но на несколько минут отличается. И это при том, что на всех вроде как включена синхронизация с time.windows.com, от которой на практике толку ровным счетом никакого. Ситуация тем абсурднее, что даже оба наших мобильника умудряются где-то брать точное время безо всяких дополнительных настроек, а полноценные компьютеры с постоянным доступом в Интернет сделать этого не могут.

Что я в итоге сделал:
1. Зашел на сервер.
2. Написал строчку:

sudo apt-get install ntp

3. Поправил одну строчку в конфиге /etc/ntpd.conf:

broadcast 192.168.1.255

4. Дал команду:

sudo /etc/init.d/ntp restart

Говоря более простыми словами, установил сервис точного времени, настроил его на работу с локальной сеткой и перезапустил. Дальше осталось на всех машинах заменить time.windows.com на имя домашнего сервера:

Синхронизация времени с домашним сервером

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

А если нет домашнего сервера?

На самом деле, конечно, вовсе не обязательно иметь под рукой сервер для того, чтобы иметь точное время на компьютере. Почему не работает time.windows.com, я, честно говоря, не знаю (кстати, оно вообще у кого-нибудь работает?), но в интернете полно других серверов точного времени, найти их можно, написав в гугле "список NTP-серверов". Но тут есть парочка "но".

Во-первых, сервера точного времени появляются и исчезают. Никто не гарантирует, что выбранный вами сервер будет работать завтра.

Во-вторых, сервисы точного времени представляют собой иерархию: на первом уровне (stratum 1) находятся те сервера, которые получают время "из первых рук", затем от них берут время сервера второго уровня (stratum 2) и так далее. По мере движения вниз, в показаниях времени естественным образом накапливается ошибка: чем ниже уровень, тем меньше точность, а первые уровни редко открыты для публичного доступа (см. замечательную статью "Проблемы публичных NTP-серверов"). С другой стороны, точность до микросекунд мало кому нужна - для домашней машины вполне подойдет время, полученное от сервера третьего-четвертого уровня. В некоторых кругах даже считается моветоном ходить на публичные сервера первого уровня, поскольку это создает им излишнюю нагрузку и мешает снабжать точным временем тех, кому оно по-настоящему нужно.

Кстати, хороший провайдер сам заводит у себя сервер точного времени и предоставляет его в распоряжение своих абонентов. Так что, выбирая себе NTP-сервер, есть смысл поинтересоваться сначала у своего провайдера - вдруг далеко ходить и не надо?

А если у провайдера нет NTP-сервера?

Но если у провайдера нет сервера точного времени, то для домашних нужд вполне подойдет "облачный" сервис pool.ntp.org, состоящий из нескольких тысяч серверов-добровольцев, которые где-то получают точное время и готовы делиться им с общественностью. Такой сервис, разумеется, не может гарантировать ювелирную точность, но зато вы можете быть уверены, что в тот момент, когда вы придете на pool.ntp.org сверять часы, кто-нибудь из этих нескольких тысяч да отзовется.

Сервис ntpd, крутящийся у меня на домашнем сервере, настроен как раз на него. Но если у вас в локалке нет Linux-сервера, то в закладке "Время Интернета" достаточно будет прописать адрес pool.ntp.org. Впрочем, идеологически вернее будет использовать адрес российского кластера данного сервиса: ru.pool.ntp.org:

Синхронизация времени с пулом pool.ntp.org