Служба точного времени

Помимо прочих сервисов, фирма Колокол предлагает своим клиентам службу точного времени. К точным часам можно обращаться по доменным именам:

ntp1.colocall.net
ntp2.colocall.net

- основной и резервный источник времени соответственно.

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

Практика показывает, что встроенные часы PC обычно имеют погрешность от 1 до 50 секунд в сутки. Вряд ли Вам захочется, чтобы неточность часов была замечена посетителями вашего ресурса, мы рекомендуем выбрать один из нижеописанных методов синхронизации.

  1. Краткая инструкция
  2. Описание поддерживаемых протоколов
  3. Настройка различных систем получения времени

1. Краткая инструкция

В настоящее время самым популярным протоколом синхронизации часов является NTP - Network Time Protocol. Протокол предложил D.Mills из университета Делавера в 1988 году, с тех пор он неоднократно совершенстовался и стал местами очень большим и тяжелым, в 1995 появилась облегченная версия протокола - SNTP, Simple Network Time Protocol.

Протокол формализует формат сигналов времени, получение которых может быть организовано одним из следующих способов:

1.1. Разовое получение точного времени по запросу

Как правило, команда получения точного времени по запросу прописывается в файлах загрузки операционной системы. Мы рекомендуем следующую строку для UNIX-систем:

ntpdate -bs ntp1.colocall.net ntp2.colocall.net

1.2. Периодическое получение точного времени по запросу

В отличие от предыдущего метода, коды программ синхронизации постоянно находятся в памяти, что в некоторых (редких) случаях может быть нежелательно. В UNIX-системах мы рекомендуем использование программы ntpd или xntpd со следующим файлом конфигурации /etc/ntp.conf:

server ntp1.colocall.net
server ntp2.colocall.net

Именно этот метод выбран на подавляющем большинстве серверов нашей фирмы.

WINDOWS-2000 и более новые имеют встроенную возможность получения времени этим методом, для этого командой:

NET TIME /SETSNTP:ntp1.colocall.net

устанавливается по какому серверу синхронизировать время. Далее всем управляет W32TM. Более подробно см. w32tm /?

WINDOWS 95/98 не имеет встроенных средств работы по NTP, но мы можем рекомендовать к установке shareware пакет Tardis2000.

1.3. Синхронизация по регулярным сигналам точного времени

Нaши точные часы настроены таким образом, что регулярно посылают в сеть сигнал точного времени, так называемый NTP Broadcast.

Для работы по этому сигналу в UNIX-like системах можно использовать те же программы ntpd или xntpd. Во избежание вреда от возможного мелкого сетевого хулиганства мы рекомендуем установить режим синхронизации по сигналам только от явно указанных (авторитетных) источников. Файл конфигурации /etc/ntp.conf может выглядеть примерно так:

enable bclient
restrict ntp1.colocall.net
restrict default ignore

Этот метод иногда более предпочтителен, чем описанный в пункте 1.2 (меньшая загрузка процессора, сети и т.п). Метод дает не меньшую точность синхронизации, ntpd достаточно интеллектуален для того, чтобы при получении первого сигнала broadcast вступить в переговоры с ntp1.colocall.net и определить время прохождения самого сигнала времени от ntp1.colocall.net до вашего компьютера.

Для Windows можно использовать программы: Domain Time II; К9.


2. Описание протоколов точного времени

2.1 Network Time Protocol

В настоящий момент максимальной версией протокола является четвертая, ntp1.colocall.net поддерживает и все предыдущие версии, которые описаны, последовательно, в RFC1059, RFC119, RFC1305 и RFC2030. SNTP описан в RFC1769 и является не более, чем разрешением не заполнять некоторые поля в NTP-запросах.

Как легко заметить с помощью команд

xntpdc -p ntp1.colocall.net
xntpdc -c sysi ntp1.colocall.net
ntptrace

и многочисленным подобным, ntp1.colocall.net является стабильным вторым стратумом. ntp2 заявляет о себе с меньшей уверенностью (Stratum-3), поэтому используется для синхронизации только в случае серьезных сетевых аварий и проблем с ntp, (за историю нашей фирмы такого не было ни разу). ntp2 в нормальном режиме сам синхронизируется по ntp1.colocall.net, но имеет более стабильные внутренние часы и в случае проблем с ntp пытается сам синхронизироваться по паритетным эзернет-линкам с нашими соседями или отдает время от своих локальных часов со стратумом 7.

У некоторых провайдеров, которые настраивали свою систему времени давно либо неглубоко продумывал протоколы, применяется концепция двух равноправных серверов - ntp1 и ntp2, которые независимо синхронизируются по миру и имеют одинаковый стратум. После многочисленных внутренних дискуссий мы пришли к выводу о неудачности такой схемы, одна из причин - клиенту не передается никакой информации о том, какие часы предпочтительнее. Клиентские программы выбирают часы случайным образом, в то время, как разница между ними может достигать 0.1 сек, единое время не обеспечено.

2.2 Daytime Protocol

Этот протокол описан в RFC867, на практике используется только для тестовых целей. По этому протоколу в ответ на TCP или UDP запрос в 13-й порт выдается текстовая строка, содержащая время и дату в читаемом формате. ntp1.colocall.net поддерживает daytime протокол.

2.3 Time protocol

Это протокол описан в RFC868 и тоже очень устарел. В ответ на обращение в 37-й порт выдается 32-х битовой целое число - количество секунд, которое прошло от первого января 1900 года. Протокол не обеспечивает требуемой точности синхронизации времени, но ntp1.colocall.net поддерживает этот протокол.

2.4. HTTP

Реализации протокола HTTP позволяют принимать информацию о точном времени. Хоть это и является большой экзотикой, но http-демон на ntp1.colocall.net умеет отдавать время по протоколу http. Можно продолжить юмор и упомянуть возможность получения времени, скажем, по протоколу NNTP - но, думается, хватит и одного абзаца ;).

2.5. Time Sinchronization Protocol for UNIX

TSP утратил свою популярность с развитием NTP, но поддерживается на ntp1.colocall.net. В отличие от NTP, который строго иерархический, TSP имеет развитые средства для выбора несколькими юниксами наилучших часов, прямо методом голосования.

Модуль поддержки TSP на ntp1.colocall.net (timed) настроен таким образом, что ни в каких голосованиях участвовать не будет и не поверит никому, кто попытается предложить ему "лучшее время" по протоколу TSP. Однако вполне готов отдавать время по этому протоколу другим программам timed.

2.6. SMB

Протокол SMB разработан в давние времена в недрах IBM и был существенно популяризирован фирмой Microsoft. Сегодня под этим термином обычно понимают семейство протоколов сетевого взаимодействия операционных систем Windows - разделение файлов, принтеров и пр. К сожалению, ntp1.colocall.net не обеспечивает отдачу времени "по-Виндоусовски". Объясняется это недостаточно продуманными процедурами безопасности в этом протоколе (мы не можем открыть порты 137-139 и 445).

2.7. XNS-time

Этот потокол был предложен фирмой Ксерокс и впервые упоминается в RFC1340 1992-го года. Нам не удалось найти никаких следов использования этого протокола в Интернете сегодня, похоже, он ушел в историю вместе с xns-auth, xns-mail и т.п.
ntp1.colocall.net не поддерживает xns-time.

2.8. Apple Quick Time Protocol

Как видно из названия, этот протокол был предложен фирмой Apple. Установка серверов на колокейшн под операционной системой MAC OS сегодня не является распространенным явлением.
Сегодня ntp1.colocall.net не поддерживает appleatc.

2.9. Automated Computer Time Service

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

Нам неизвестно, поддерживает ли ACTS кто-нибудь из украинских телефонных компаний. Киевская служба 060 не имеет отношения к этому протоколу и вряд ли применима на практике из-за неудобного формата выдачи времени и низкой (недекларированной) точности.
Мы не поддерживаем ACTS.


3. Настройка различных систем получения времени

3.1. Rdate

В UNIX-like системах rdate является простой и легкой командой, которая разово устанавливает время по часам другой машины. В некоторых случаях она вполне может заменить ntpdate, упомянутый в п. 1.1. Использование и понимание команды не требует больших усилий, строка запуска:

rdate -s ntp1.colocall.net

3.2. Timed

timed можно назвать предшественником xntpd, но во многих случаях его оказывается достаточно. Рекомендуемая строка запуска:

timed -F ntp1.colocall.net

3.3. Xntpd, или его Berkeley-версия ntpd.

Эти демоны, без преувеличения, являются сегодня самым распространенным средством синхронизации времени на Unix-подобных системах. Их настройка хорошо документирована, нет смысла пересказывать здесь man ntp.conf.

Однако позволим себе буквально несколько общих рекомендаций:

3.3.1 Нет смысла запрещать обращения к вашему серверу за временем. Большой трафик такие обращения создать не могут, в то же время возможность удаленно узнать время сервера не помешает вам же самим.

3.3.2. Не гонитесь за высоким номером стратума. Стратум имеет весьма отдаленное отношение к надежности или точности часов, изначально стратум вообще задумывался как средство подавления циклов в ntptrace, средство простое и надежное. Приведенные в настоящем тексте рекомендации обеспечивают Stratum 3.

3.3.3. Не ставьте большое количество аплинков, особенно аплинков с похожими характеристиками. Переключение ntpd с одного аплинка на другой практически всегда означает коррекцию времени, время даже эталонных часов может отличаться на несколько десятков или сотен милисекунд. Переключение на другой uplink должно происходить только в случае серьезных аварий сети.

3.3.4. На основании двух предыдущих пунктов мы не запрещаем, но не рекомендуем использовать для синхронизации "чужие" сервера. В случае разбора попыток взлома и в ряде других случаев необходимо сопоставление log-файлов различных компьютеров, совпадение вашего времени со временем наших магистральных раутеров выглядит гораздо более важным критерием, чем возможная милисекундная разница с временем компьютера вашего американского партнера.

3.3.5. Не используйте механизм аутентификации аплинка (trusted keys). Крайне затруднительно придумать ситуацию, когда "уважаемые" часы с точным временем не могли бы быть заданы явно при конфигурации сервера.

3.3.6. Используйте механизм удаленного управления сервером (control keys) только если по каким-либо причинам перезапуск ntpd крайне нежелателен. В большинстве же систем остановка и повторный запуск ntpd не приводит к ужасным последствиям и незаметен дя всех остальных программ, поэтому лучше постоянно иметь текущую конфигурацию запущенного сервера в /etc/ntp.conf.

3.3.7. Не стесняйтесь использовать флажок prefer в командах server и peer. Вреда от него не может быть никакого, но он может сделать переходы с одного аплинка на другой значительно более редкими, уменьшая общее количество неприятных аспектов таких переходов.

3.4. Tardis2000 for Windows

Традис является продуманной и удобной программой, может быть, даже излишне развитой для такой простой задачи, как синхронизация времени. Тардис может брать время от ntp1.colocall.net по одному из семи (!) возможных протоколов, мы рекомендуем NTP.

Тардис несложен в настройке, буквально несколько советов:

3.4.1. Тардис может быть как клиентом-получателем времени, так и сервером, синхронизирующим другие компьютеры. Пожалуйста, не включайте флажок "enable broadcast", этим вы доставите немножко хлопот другим клиентам и нашим специалистам.

3.4.2. Тардис удобно поместить в Startup-menu, предварительно поставив флажки в опциях "Run minimized" и "Hide if minimized", это позволит вам не обращать внимания на Тардис после его установки. Возникает вопрос - как потом запустить Тардис для изменения параметров, то есть с окошками? Разработчик предусмотрел нестандартное средство - нужно запускать EXE-файл с нажатой клавишей SHIFT. Об этом написано в HELP-кнопках Тардиса, но нет уверенности, что вы их будете читать.

3.4.3. Tardis2000 for Windows может быть загружен по адресу: http://www.kaska.demon.co.uk/tardis.htm

Заканчивая это описание, разрешите пожелать вам приятной работы в сети и высказать надежду, что система точного времени не доставит вам много хлопот. Эту систему достаточно настроить один раз, потом можно забыть о ней. Мы очень надеемся, что вы будете соблюдать правила поведения в "сети времени", например, не будете со своих компьютеров посылать broadcast- пакеты синхронизации времени либо пытаться убедить timed соседнего компьютера, что нужно брать время у вас. Подобные неприятности легко отслеживаются и устраняются, кроме того, они не могут принести никакого вреда при следовании вышенаписанным рекомендациям.