NTP

Описание протокола времени. Настройка сервера времени в Debian.

Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью.

NTP использует для своей работы протокол UDP. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи.
NTP использует алгоритм Марзулло (предложен Кейтом Марзулло (Keith Marzullo) из Университета Калифорнии, Сан-Диего), включая такую особенность, как учёт времени передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей.
NTP — один из старейших используемых протоколов. NTP разработан Дэвидом Л. Миллсом (David L. Mills) из университета Дэлавера в 1985 году и в настоящее время продолжает совершенствоваться. Текущая версия — NTP 4.
NTP использует иерархическую систему «часовых уровней» (stratum). Уровень 1 синхронизован с высокоточными часами, например, с системой GPS, ГЛОНАСС (Единая Государственная шкала времени РФ) или атомным эталоном времени. Уровень 2 синхронизируется с одной из машин уровня 1, и так далее.


NTP

Рис.1 Иерархия NTP-серверов.

 

Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 232 секунд, с теоретической точностью 2−32 секунды. Поскольку шкала времени в NTP повторяется каждые 232 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 50 лет).
Наиболее широкое применение протокол NTP находит для реализации серверов точного времени. Для достижения максимальной точности предпочтительна постоянная работа программного обеспечения NTP в режиме системной службы. В семействе операционных систем Microsoft Windows, — это служба W32Time (модуль w32time.dll, выполняющийся в svchost.exe), Linux - сервис Ntpd.
Более простая реализация этого алгоритма известна как SNTP — простой синхронизирующий сетевой протокол. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени.

NTP в Linux

Система Linux, как и большинство других современных операционных систем, фактически имеет двое часов. Первые часы — аппаратные, иногда называемые Real Time Clock, сокращенно (RTC), или часы BIOS, обычно они связаны с колеблющимся кварцевым кристаллом, имеющим точность хода до нескольких секунд в день. Точность зависит от различных колебаний, например, окружающей температуры. Вторые часы — внутренние программные часы, которые идут непрерывно, в том числе и при перерывах в работе системы. Они подвержены отклонениям, связанным с большой системной нагрузкой и задержкой прерываний. Однако система обычно считывает показания аппаратных часов при загрузке и потом использует системные часы. Команда date, устанавливает не аппаратные, а системные часы.

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

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

Можно синхронизировать аппаратные часы с системными при помощи команды hwclock с опцией -w или –systohc и синхронизировать системные часы с аппаратными при помощи команды hwclock с опцией -s или –hctosys.

Быстро синхронизируем время

Сначала нам бы однократно синхронизировать часы, а уж потом думать о том, как это свалить на компьютер. В Debian GNU/Linux это делается (как и всё прочее) очень просто. Ставим пакеты:

#apt-get install ntp ntpdate

Теперь выбираем сервер точного времени, поближе к вам и не очень загруженный. Список таких серверов можно посмотреть здесь:

или можно выбрать из таблицы:

Таблица 1. Российские NTP cерверы точного времени второго уровня.

  ntp1.kangran.su OpenAccess Yes Sergey Ptashnick (root@kangran.ru) 2009-07-10T14:42:16Z
  ntp21.vniiftri.ru OpenAccess Yes Andrey Bertcov (noc@vniiftri.ru) 2010-12-08T20:51:11Z
  ticktock.net.ru OpenAccess No www.ticktock.net.ru 2010-08-13T07:36:02Z
  ntp2.aas.ru OpenAccess No Network Operations (noc at aas dot ru) 2011-10-16T10:17:32Z
  ntp.xland.ru OpenAccess No Boris Gribovsky (ntp@xland.ru) 2004-12-25T17:55:01Z
  ntp.sirius-p.ru OpenAccess Yes noc@sirius-p.ru 2012-01-19T19:51:51Z
  ntp.psn.ru OpenAccess Yes clockmaster@psn.ru 2006-11-23T15:57:06Z
  ntp3.ntp-servers.net OpenAccess Yes HSDN Project - http://www.hsdn.org (info@hsdn.org) 2010-11-16T14:12:25Z
  ntp.vld.ru OpenAccess No ntpboss_-_-_vld.ru 2006-06-19T03:36:48Z
  ntp4.ntp-servers.net OpenAccess Yes HSDN Project - http://www.hsdn.org (info@hsdn.org) 2010-11-16T14:12:37Z
  d0012.colocat.ru OpenAccess Yes   2011-12-07T17:25:29Z
  ntp5.ntp-servers.net OpenAccess Yes HSDN Project - http://www.hsdn.org (info@hsdn.org) 2010-11-21T11:41:55Z
  rtr.firmacem.ru OpenAccess Yes Michael Korotin (michael.korotin@gmail.com) 2007-11-01T08:00:42Z
  ntp6.ntp-servers.net OpenAccess Yes HSDN Project - http://www.hsdn.org (info@hsdn.org) 2010-11-23T01:29:48Z
  ntp2.kangran.su OpenAccess Yes Sergey Ptashnick (root@kangran.ru) 2011-01-23T14:51:10Z
  ntp1.aas.ru OpenAccess No Network Operations (noc at aas dot ru) 2011-10-16T10:18:23Z
  ntp.letinet.ru OpenAccess No postmaster at mail dot hostname 2009-04-02T14:27:28Z
  ntp7.ntp-servers.net OpenAccess Yes HSDN Project - http://www.hsdn.org (info@hsdn.org) 2011-03-10T23:29:11Z
  ntp.hws.ru ClosedAccess Yes Evgeny Illyushko (hostmaster@hws.ru) 2011-09-15T19:41:14Z

После чего сервер времени (вместо указанного сервера можно выбрать другой из списка) не мешало бы пощупать:

# ntpdate ntp.remco.org

На что он ответит примерно следующее:

21 Jan 00:56:29 ntpdate[17180]: the NTP socket is in use, exiting

Можно сравнить с правильно настроенными часами и увидеть правильно идут часы на компьютере или нет.

Если есть разница, то это мы сейчас устраним. Теперь однократно синхронизируемся с часами на NTP сервере точного времени:

# ntpdate -bs ntp.remco.org

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

Автоматическая синхронизация времени на компьютер

В принципе, для отдельно стоящей машины можно написать простенький скрипт и запускать время от времени. Дело в том, что если ставить ntp-server на локальной машине, он будет каждый раз при загрузке пытаться связаться с сервером точного времени. Это чревато увеличением времени загрузки на минуту, а то и более. Если уж так хочется - ищем в районе прямой видимости UNIX-машину, постоянно подключенную к Интернету, и ставим сервер туда, а потом используем её как локальное зеркало точного времени.
Ставим пакет:

#apt-get install ntp-server

После этого лезем в конфиг /etc/ntp.conf и прописываем там правильное зеркало точного времени, например:

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

А можно не лазить, настройки по умолчанию (в Debian, по крайней мере) разумны. При следующей перезагрузке / перезапуске ntp ваши часы снова синхронизируются.

На этом настройку NTP в Debian можно считать законченной.

Операции с документом

Яндекс.Метрика Top.Mail.Ru