Система точного времени NTP

Материал из RSU WiKi
Перейти к: навигация, поиск
NTP Time Servers.jpg
Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью, использущий для своей работы протокол UDP. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи. NTP — один из старейших используемых протоколов, он разработан Дэвидом Л. Миллсом (David L. Mills) из университета Дэлавера и в настоящее время продолжает совершенствование[1].

Содержание

Введение

NTP использует алгоритм Марзулло (предложен Кейтом Марзулло (Keith Marzullo) из Университета Калифорнии, Сан-Диего), включая такую особенность, как учёт времени передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0.2 мс (1/5000 с) и лучше внутри локальных сетей.

NTP использует иерархическую систему «часовых уровней»: уровень 1 синхронизован с высокоточными часами, например, с системой GPS, ГЛОНАСС (Единая Государственная шкала времени РФ) или атомным эталоном времени; уровень 2 синхронизируется с одной из машин уровня 1, и так далее.

Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 232 секунд, с теоретической точностью 2-32 секунды. Поскольку шкала времени в NTP повторяется каждые 232 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 50 лет).

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

Более простая реализация этого алгоритма известна как SNTP — простой синхронизирующий сетевой протокол. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени.

Для использования конечными пользователями рекомендуется использовать сервера Stratum 2, поскольку они имеют связь с несколькими серверами Stratum 1 и будут отдавать точное время в случае отсутствия связи до одного из них. Если же необходимо выбрать сервера для использования на маршрутизаторе, отдающем точное время внутрь локальной сети или же в интернет, рекомендуется использование не менее 3х (но не более 7и) авторитетных Stratum 1 серверов [2].

Использование конечными пользователями серверов Stratum 1 строго не рекомендуется: By convention, Stratum 1 time servers should only be used by Stratum 2 servers, and by applications requiring extremely precise time measurements, such as scientific applications. [3]

Использование случайных серверов из пула pool.ntp.org не рекомендуется не для персонального использования [4] [5]. Так же не следует настраивать использование LOCAL clock [6] кроме редких случаев, когда нет постояного подключения к сети, а синхронизация времени все же необходима.

Список надежных и публичных серверов Stratum 1

Attention.pngВНИМАНИЕ!
Не настраивайте на данные адреса софт пользовательских машин! Эти сервера предназначены только для нижестоящих серверов Stratum 2.

Россия

  • ВНИИФТРИ [7], Атомные часы [8] [9]
    • 62.117.76.142 (ntp1.vniiftri.ru)
    • 62.117.76.141 (ntp2.vniiftri.ru)
    • 62.117.76.138 (ntp3.vniiftri.ru)
    • 62.117.76.140 (ntp4.vniiftri.ru)
  • 195.2.64.5 (ntp0.zenon.net) Зенон Н.С.П. [10], GPS-источник
  • 194.149.67.32 (gps-time.prao.psn.ru) Пущинская [11] РадиоАстрономическая обсерватория [12] РАН [13], GPS-источник
  • 85.114.26.194 (ntp.mobatime.ru) Mobatime Systems [14] [15], GPS-источник (обслуживается сервером серии DTS, синхронизируемым c GPS, соответственно источник "представляется" как DTS)

США

  • 192.43.244.18 (time.nist.gov) National Institute of Standards and Technology [16], Атомные часы [17]
  • 198.123.30.132 (ntp.nasa.gov) National Aeronautics and Space Administration [18], GPS-источник

Япония

  • 133.243.238.163 (ntp.nict.jp) National Institute of Information and Communications Technology [19], Атомные часы [20]

Рабочая конфигурация сервера NTP на маршрутизаторе Cisco

Логинимся на Cisco. Смотрим текущее состояние времени:

show clock

Если время отличается от правильного на значительную величину (более 3-4 минут), то подгоняем его вручную:

clock set hh:mm:cc день месяц год

Задаем часовую зону и время перехода на летнее время.

clock timezone <имя временной зоны> [ + <смещение>]
clock summer-time <имя временной зоны> recurring <время перехода на летнее время и обратно>

напр.

clock summer-time Moscow recurring last Sun Sun 2:00 last Sun Oct 2:00

В нашем случае указываем эти параметры для часовой зоны Москва (UTC +4, без перехода)

clock timezone Moscow 4

Если циска уже была сконфигурирована на переход на летнее время, отключаем его следующей командой:

no clock summer-time

и меняем часовой пояс на +4:

clock timezone Moscow 4

Указываем адреса ntp-серверов (список Stratum 1), относительно которых наша Cisco будет клиентом:

ntp server 62.117.76.140 prefer
ntp server 194.149.67.32 prefer
ntp server 195.2.64.5 prefer
ntp server 192.43.244.18 prefer
ntp server 85.114.26.194 prefer

В нашем примере используются 5 надежных адресов.

Далее смотрим конфигурацию маршрутизатора на предмет имени внутреннего сетевого интерфейса:

 show conf

Пример выдержки из конфигурационного файла:

 #show conf
   ..
   interface FastEthernet0/0.2
   encapsulation dot1Q 2
   ip address 192.0.2.30 255.255.255.0
   ntp broadcast
   ..

Указываем, на каком интерфейсе будет располагаться наш ntp-сервер:

 ntp source FastEthernet0/0
Attention.pngВНИМАНИЕ!
Нельзя указывать в качестве ntp source сабинтерфейсы, работать не будет. В документации Cisco часто можно встретить рекомендации использовать Loopback-интерфейс.

Записываем конфигурацию в память:

 write mem

Наш конфигурационный файл

#sh run | i ntp
 ntp broadcast
ntp clock-period 17178592
ntp source FastEthernet0/0
ntp update-calendar
ntp server 62.117.76.140 prefer
ntp server 194.149.67.32 prefer
ntp server 195.2.64.5 prefer
ntp server 192.43.244.18 prefer
ntp server 85.114.26.194 prefer

Проверка текущего состояния

sh ntp a
sh ntp s
sh clock

Настройка клиентских машин и устройств

Отмена перехода на летнее/зимнее время на территории РФ

  • Для того, чтобы системы Windows не переходили на летнее/зимнее время необходимо установить заплатку: http://support.microsoft.com/kb/2570791
  • В SuSE Linux, возможно, необходимо будет обновить пакет timezone до версии  2011n или выше.

Linux

Как посмотреть стратум удаленного сервера:

# ntptrace ntp.example.org

Проверка работоспособности конфигурации NTP:

# ntpq -p

Windows 2003

Вся настрока выполняется из командной строки. Последовательность действий следующая:

net time /setsntp:ntp.example.com
net stop w32time && net start w32time
w32tm /resync

В ответ должны получить следующее:

Команда синхронизации отправлена на local computer...
Команда выполнена успешно.

Через некоторое время проверяем журнал событий системы. Если все настроено верно, то в журнале будет информационное сообщение от источника W32Time с кодом (ID) 35 и текстом Служба времени выполняет синхронизацию системного времени с источником времени имя_ntp_сервера

Если возникли какие-то проблемы, то в журнал будет записана ошибка с кодом (ID) 29 от источника W32Time и текстом NTP-клиент поставщика времени настроен на получение времени из одного или нескольких источников, однако ни один из этих источников недоступен. Попытки подключения к источнику не будут выполняться в течение ХХ мин. NTP-клиент не имеет источника правильного времени. В таком случае, убедитесь, что файрвол не блокирует соединения с NTP-сервером по протоколу UDP порт 123. Проверьте, что имя NTP-сервера указано верно. Для этого в командной строке выполните

net time /querysntp

В ответ будет выведено имя сервера NTP.

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

w32tm /stripchart /computer:имя_компьютера

На экран будет выводиться информация о дельте локального времени и времени на имя_компьютера до прерывания работы при помощи Ctrl+C.

Если Ваша сеть с доменами, то клиенты будут автоматически синхронизировать свои часы с контроллером домена. Если Вы не используете в сети доменов, то настраивать клиентов придётся вручную.

Windows 2008

Microsoft Windows [Версия 6.0.6001]
(C) Корпорация Майкрософт, 2006. Все права защищены.

Z:\>net time /setsntp:"ntp.example.com"
Команда выполнена успешно.

Z:\>net stop w32time && net start w32time
Служба “Служба времени Windows” останавливается.
Служба “Служба времени Windows” успешно остановлена.

Служба “Служба времени Windows” запускается.
Служба “Служба времени Windows” успешно запущена.

Z:\>w32tm /resync
Отправка команды синхронизации на локальный компьютер
Команда выполнена успешно.

Z:\>

Подмена адреса time.windows.com локальным NTP на DNS-сервере

В крупных, постоянно меняющихся и развивающихся сетях установка адреса локального ntp-сервера на всех машинах, не подключенных к Active Directory, может представлять определенную проблему. В данном случае можно воспользоваться возможностями DNS-сервера BIND и подменить выдаваемый по запросу "time.windows.com" ip-адрес на принадлежащий локальному серверу NTP [21].

На DNS сервере (на примере SLES 10) создадим интересующую нас зону следующего содержания:

/var/lib/named/master/time.windows.com

$TTL 2d                                                                         
@               IN SOA          ns.example.com.  hostmaster.example.com. (           
                                2009012810      ; serial                        
                                3h              ; refresh                       
                                1h              ; retry                         
                                1w              ; expiry                        
                                1d )            ; minimum                       
                                                                                
time.windows.com.       IN NS           ns.example.com.                          
                                                                                
time.windows.com.       IN A            192.0.2.30
где 192.0.2.30 — ip-адрес локального ntp-сервера

В конфигурационный файл /etc/named.conf добавляем строки:

zone "time.windows.com" in {                                                    
    file "master/time.windows.com";                                             
    type master;                                                                
    allow-transfer { acls; };               
};
где acls — используемые в локальной сети ACL'и

Перегружаем Bind:

rcnamed reload

Если все правильно, то в логе /var/log/messages появится подобная строчка:

May 24 08:17:32 ns named[30279]: zone time.windows.com/IN: loaded serial 2009012810

Проверяем результат на клиентской машине, предварительно сбросив кэш dns (How do I Flush DNS?):

# ping time.windows.com
PING time.windows.com (192.0.2.30) 56(84) bytes of data.
64 bytes from ntp.example.com (192.0.2.30): icmp_seq=1 ttl=254 time=0.896 ms

Таким же образом можно подменить стандартные адреса pool.ntp.org (для linux-машин) и time.apple.com, time.euro.apple.com, time.asia.apple.com (для apple macintosh).

Различное NTP-оборудование

GPS/Глонасс Stratum-1 19' сервер

Оборудование MOBATime

Настенные NTP-часы с интерфейсом Ethernet

Digital-time-clock.jpg

Примеры инструкций для клиентов

Примечания

  1. NTP. Материал из Википедии — свободной энциклопедии
  2. pool.ntp.org: Configuration recommendations for servers joining the pool
  3. NTP server misuse and abuse. From Wikipedia, the free encyclopedia
  4. Точное время в Интернете. Доклад Скробова А., 2004 г.
  5. pool.ntp.org: Join the NTP Pool!
  6. pool.ntp.org: Рекомендации по конфигурированию серверов, входящих в пул
  7. ВНИИФТРИ - Всероссийский Научно - Исследовательский Институт Физико - Технических и Радиотехнических Измерений
  8. ВНИИФТРИ. Услуги NTP серверов
  9. ВНИИФТРИ. Измерения времени и частоты, больших длин; определение параметров вращения Земли
  10. "Зенон Н.С.П." - хостинг и интернет
  11. Пущинский научный центр РАН
  12. Пущинская РадиоАстрономическая Обсерватория
  13. Российская академия наук
  14. Компания Mobatime Systems - специалист в области синхронизации и точного времени
  15. Mobatime Systems: Публичный NTP сервер
  16. National Institute of Standards and Technology
  17. NIST-F1 Cesium Fountain Atomic Clock. The Primary Time and Frequency Standard for the United States
  18. NASA Integrated Services Network. NTP
  19. NICT - トップページ | NICT-独立行政法人 情報通信研究機構
  20. Japan Standard Time Group. Time Information Service
  21. Хабрахабр: Подмена time.windows.com локальным ntp-сервером / Системное администрирование

См. также

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

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты