Virbactd.ru

Авто шины и диски
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Синхронизация (часов) между двумя удаленными компьютерами

Синхронизация (часов) между двумя удаленными компьютерами

Я собираюсь написать простую возможность синхронизации в свое приложение, и одна из проблем, которая возникла, — это синхронизация времени между двумя удаленными компьютерами, каждый со своими собственными часами (в частности, относительно дат модификации files/objects).

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

Например, для начала следует всегда использовать универсальное время (UTC), так как это позволяет избежать проблем timezone, но нет никакой гарантии, что два компьютера будут иметь точно такое же системное время. К счастью, работа, которую я делаю, не очень тонкая, так что это не очень важная забота, но тем не менее мне все равно любопытно.

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

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

Обновление: позвольте мне просто добавить, что я не заинтересован в фактической синхронизации системных часов двух компьютеров-я предполагаю, что операционная система справится с этим в большинстве случаев. Это всего лишь вопрос о том, как обеспечить, чтобы два экземпляра приложения использовали синхронизированное время, хотя в наши дни я полагаю, что системные часы почти наверняка будут синхронизированы с какой-то очень маленькой дельтой.

9 ответов

  • Можно ли увидеть TCP трафик между двумя удаленными хостами в wireshark?

Я пытаюсь отладить TCP связь между двумя встроенными устройствами, только одно из которых находится под моим контролем. Я хочу посмотреть, что происходит в Wireshark, но ничего не вижу. Можно ли вообще видеть трафик между удаленными хостами (но на одном и том же коммутаторе) в Wireshark?

Я отправляю данные real-time-critical через Интернет между двумя выделенными компьютерами, используя свой собственный протокол. Здесь, конечно, присутствует латентность. Для отладки и оптимизации мне нравится, чтобы оба компьютера использовали одну и ту же временную базу. I.e, мне нужно знать.

Полагаться на NTP для вашего приложения, как рекомендовали другие, — это легкая выдумка. Правильный подход заключается в использовании алгоритма распределенной синхронизации часов Лампорта. Это объясняется в его классической статье 1978 года » Время, часы и порядок событий в распределенной системе».

Посмотрите на спецификацию «Протокол сетевого времени» (NTP).

Вы можете попробовать PTP, Протокол точного времени (PTP) — это протокол, используемый для синхронизации часов по всей компьютерной сети. В локальной сети он обеспечивает точность синхронизации в субмикросекундном диапазоне, что делает его пригодным для систем измерения и управления. http://en.wikipedia.org/wiki/ Precision_Time_Protocol

Это проблема, которую мне в настоящее время приходится решать в отношении неискушенных конечных пользователей, которые могут многое сделать, чтобы расстроить разумные предложения, сделанные предыдущими участниками. Неискушенный конечный пользователь может сделать, по крайней мере, эти вещи и многое другое:

1) Не имеют достаточных вычислительных знаний, чтобы иметь возможность настроить синхронизацию времени ntp

2) Установите часы своего компьютера на часы дома или часы мобильного телефона, которые неверны

3) В Windows XP случайно отключите синхронизацию времени ntp и не знаете, как включить ее снова, или неправильно установите дату своего компьютера, и в этом случае Windows ntp не работает

4) Батарея bios компьютера разрядилась, поэтому компьютер всегда запускается в 1970 году!

5) Пользователь берет свой ноутбук за границу и временно устанавливает часы ноутбука на местное время, но не меняет часовой пояс, поэтому теперь ПК вернет неверное время utc.

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

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

Я предлагаю эту схему, которая берет некоторые идеи из того, как работают cron рабочих мест, я был бы рад, если бы кто-нибудь мог предложить улучшения этой идеи.

1) Когда ваше приложение запускается, оно синхронизирует свое собственное внутреннее время utc с ntp через вызов soap на сторонний сервер или на ваш собственный сервер времени (который вы сами можете поддерживать вовремя с помощью ntp).

2) После этого он добавляет время, прошедшее с системных часов, для поддержания времени. Если требования являются жесткими, вам может потребоваться повторять синхронизацию ntp через определенные промежутки времени.

3) Затем приложение просматривает список будущих заданий, которые ему необходимо выполнить вовремя. Он должен знать самую раннюю работу.

4) Затем он создает поток, который он переводит в спящий режим на время, предшествующее самому раннему заданию, за вычетом запаса прочности, который в зависимости от ваших требований может составлять be 10 минут, час или два и т. Д.

5) Когда поток просыпается, он перепроверяет абсолютное время с последующим вызовом soap, а затем полагается на часы системного времени, чтобы добавить прошедшее время, пока не достигнет времени, когда должно быть выполнено первое задание.

6) Как только задание запускается (запустите его в другом потоке), поток мониторинга времени вычисляет время следующей задачи и снова переводит себя в спящий режим на это время.

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

Читайте так же:
Автомагнитолы 1 дин с плавной регулировкой громкости

2) Ваше приложение может добавлять новые, более ранние задания на лету или удалять задания, поэтому ваш спящий поток, вероятно, должен быть пробужден для пересчета для нового более раннего задания или для задания, следующего за удаленным заданием. В Win32 вы бы сделали это, если бы ваш поток ждал с таймаутом события, которое вы установили, чтобы заставить его пересчитать время сна. В Linux, несомненно, существует аналогичный механизм.

3) Для вызова Soap, чтобы получить время, запишите, когда отправляется Soap и когда получен ответ. Если время выполнения слишком велико, вы не можете полагаться на это время и, возможно, потребуется повторить вызов, или вы можете пойти на компромисс. Например, если Soap говорит, что компьютерные часы работают с частотой 5 минут, но сам вызов Soap занял минуту, чтобы ответить, то вы можете с уверенностью сказать только, что компьютерные часы работают с частотой не менее 4 минут.

  • Безопасная синхронизация между удаленными компьютерами

Я пытался найти инструмент, который будет безопасно синхронизироваться между двумя удаленными компьютерами, а также работать как Служба, чтобы мне не приходилось оставаться в системе. Windows текущий синхронизации, кажется, чтобы сделать работу, хотя я читала, что это не будет работать как service.

Я хочу отправить данные (текст) между двумя компьютерами (ноутбуком и SmartPhone), используя соединение wifi. Я хочу получить данные, которые поступают из SmatPhone в windows HyperTerminal. Кто-нибудь может помочь!

Синхронизируйте их с протоколом сетевого времени NTP .

На какой платформе вы находитесь?

С помощью NTP вы можете синхронизировать время ваших компьютеров с атомными часами и использовать официальное время мира.

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

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

Одна вещь, которую мы делаем, — это, по сути, выгружаем все операции синхронизации на машину ‘host’. Например, если у вас есть 20 серверов, которые совместно используют DB, используйте время DB. Если у вас есть центральный сервер и миллион клиентских машин, то клиентские машины не должны отвечать за синхронизацию чего-либо; выполняйте всю синхронизацию на стороне сервера. В действительно ‘distributed’ среде, такой как P2P сеть или что-то в этом роде, используйте машину, которая наиболее непосредственно ‘owns’ рассматриваемый ресурс (фактический PC файл, который вы хотите записать), чтобы синхронизировать/контролировать доступ к файлу.

Не используйте NTP. NTP только для получения даты/времени.

Он работает для синхронизации событий между приложениями, которые не взаимодействуют. Например, приложение для сигнализации и ваше тело.

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

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

Похожие вопросы:

Я пытаюсь скопировать с двух удаленных хостов, с другого хоста, то есть сказать, что а-это мой локальный хост. А B, C — это мои удаленные хосты. Как скопировать файл из B в C, размещенный в A.

Можно ли иметь скрипт в скрипте GameEngine и проверять его на наличие коллизий между двумя удаленными объектами, которые не подключены к скрипту GameEngine, через Update() или OnTriggerStay() /.

Я пытаюсь установить соединение между двумя компьютерами за NAT. Я не могу открыть ни один порт. Я хотел бы использовать брокера, который будет находиться в Интернете и который сможет общаться с.

Я пытаюсь отладить TCP связь между двумя встроенными устройствами, только одно из которых находится под моим контролем. Я хочу посмотреть, что происходит в Wireshark, но ничего не вижу. Можно ли.

Я отправляю данные real-time-critical через Интернет между двумя выделенными компьютерами, используя свой собственный протокол. Здесь, конечно, присутствует латентность. Для отладки и оптимизации.

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

Я хочу отправить данные (текст) между двумя компьютерами (ноутбуком и SmartPhone), используя соединение wifi. Я хочу получить данные, которые поступают из SmatPhone в windows HyperTerminal.

Моя задача-синхронизировать папки между двумя компьютерами. Один из них действует как сервер windows, который является хостом, а другой-как сервер на базе linux. Передача файлов должна быть.

Допустим, я хочу реализовать соединение TCP/UDP между двумя компьютерами. Я знаю, как это сделать, если знаю, что компьютер IPs и они находятся в одном и том же LAN. Но что, если они находятся в.

Может быть, мой вопрос немного странный, но я ищу ответ уже пару дней. Единственное , что я нашел, это сокеты и asyncio(на самом деле не знаю, что это такое), но с помощью сокетов вы можете.

Общие настройки

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

Дни недели и временные интервалы наблюдения
Вы можете отметить дни недели, в которые будет производиться наблюдение за клиентскими компьютерами. В другие дни наблюдение выполняться не будет.
Также можно указать временные интервалы, внутри которых будет выполняться наблюдение. Вне этих интервалов наблюдение выполняться не будет.
Сами временные интервалы задаются через запятую или точку с запятой в форматах: «чч:мм», «чч:м», «ч:мм», «ч:м», или «ч».
Допустимые значения для минут: 0-59, для часов: 0-23.
Допускается переход через 0:00, т.е. начало интервала может быть больше конца в абсолютном значении.
Пустая строка означает, что интервалов нет и наблюдение выполняться не будет вообще.
Интервал 0:00-23:59 означает, что наблюдение будет выполняться круглосуточно.
Пример интервала: 8:00-13:00,14:00-17:00

Читайте так же:
Регулировка зажигания на мицубиси спейс стар

Выполнять автоматическое обновление при наличии в базе новой версии
Аналогично выполнению функции БОСС-Онлайн «Обновить клиентское ПО», но только в автоматическом режиме. См. раздел справки «Обновление комплекса» для более подробной информации.
Т.е. если в базу внесена новая версия после обновления администраторской части, то в течение 1-2 часов после этого произойдет загрузка данной версии на клиентскую машину. Активация новой версии клиента происходит только после перезагрузки клиентской машины!
Посмотреть текущую версию клиентской части можно через функцию БОСС-Онлайн «Общие сведения».

Выполнять автоматическое удаление клиента
Данная опция служит для синхронизации с доменом. Например, в соотв. группах безопасности домена администраторы AD удалили клиентскую машину из списка наблюдаемых, — в этом случае при включении данной опции после проведения синхронизации с AD (в ручном или автоматическом режиме) клиент также будет удален с машины спустя некоторое время (от нескольких минут до нескольких часов).
Если же синхронизация с AD ни разу не проводилась, то данная опция не будет иметь эффекта.
Также опция не будет иметь эффекта если клиентский компьютер не входит в домен.
После удаления клиента происходит также удаление отчетов по компьютеру и пользователям данного компьютера в базе если не включена опция «Сохранять отчеты после удаления клиента».

Ключ для удаления из командной строки
Если предполагается удалять клиентов через командную строку (например, в MS System Center), то необходимо для защиты установить здесь ключ (слово-пароль из английских букв и/или цифр без пробелов). См. также здесь.

Установить новое выводимое имя/описание клиентской службы
Если строки не пустые, то можно изменить имя/описание клиентской службы.
Примечание: изменения вступят в силу после перезагрузки клиентских машин.
Внимание! Администратор домена может скрыть клиентскую службу (см. здесь).

Настройки http-proxy
Некоторые функции (например, распознавание голоса) могут требовать выход в интернет по http-протоколу с клиентских машин (это обязательно оговорено в справке к каждой такой функции!). И если в вашей организации требуется обязательное использование http-proxy, то здесь можно установить необходимые настройки.

Настройка доменного сервера времени NTP в Windows Server 2012R2/2016 через GPO

Windows 95 стала доступна в виде приложения на современных платформах

Для начала определяю какой контроллер домена Windows Server 201x имеет роль PDC (если я этого не знаю )) ), если контроллеров домена несколько, как в моём случае. Для этого на любом компьютере или сервере, входящем в домен! , запускаю командную строку от имени Администратора:

Настройка доменного сервера времени NTP в Windows Server 2012R2/2016 через GPO

Не будем обсуждать распределение ролей между контролерами, в тестовом домене у меня все роли принадлежат одному контроллеру, и перейдя на сервер ADDC01 (в моём случае) — начнем его настройку.

1. Для начала создадим WMI-фильтр, который будет применять нашу новую политику только к серверу с ролью эмулятора PDC

Настройка доменного сервера времени NTP в Windows Server 2012R2/2016 через GPO

2. Создадим новую групповую политику и применим к ней фильтр WMI, созданный нами выше.
Нас интересует путь: Computer Configuration — Administrative Templates — System — Windows Time Service — Time Providers (Конфигурация компьютера -> Политики -> Административные шаблоны -> Система -> Служба времени Windows -> Поставщики времени)

Здесь нам нужно включить три политики:
Enable Windows NTP Client: Enabled
Enable Windows NTP Server: Enabled
Configure Windows NTP Client: Enabled

Настройка доменного сервера времени NTP в Windows Server 2012R2/2016 через GPO

Пункт Configure Windows NTP client имеет следующие настройки:

Настройка доменного сервера времени NTP в Windows Server 2012R2/2016 через GPO

Я использовал следующий список серверов точного времени:

3. Создав политику не забываем применить к ней фильтр WMI:

Настройка доменного сервера времени NTP в Windows Server 2012R2/2016 через GPO

4. Пришло время обновить политики на сервере времени и синхронизировать время. Запускаем командную строку от имени Администратора.

Сверим часы

С помощью службы Windows Time (W32Time), входящей в состав Windows 2000, можно установить единое время на всех подключенных к сети компьютерах Windows XP и Windows 2000.

Конфигурирование и управление службой времени в Windows

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

Отказ от W32Time для пользователей сети не имеет очевидных последствий. Однако для некоторых функций и процессов необходимы точные и синхронизированные маркеры времени. Например, маркеры времени используются в процессе генерации билета аутентификации Kerberos. По умолчанию, аутентификация Kerberos заканчивается неудачей, если время на клиентском компьютере и выполняющем аутентификацию контроллере домена (DC) различается больше, чем на 5 мин. Этот интервал называется максимальной погрешностью синхронизации компьютерных часов (Maximum Tolerance for Synchronization of Computer Clocks). Изменить его можно с помощью групповой политики, но при этом возникает угроза безопасности сети.

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

Организация эталонного сервера времени

Эталонный сервер времени — это контроллер домена DC, который сверяет время с точным внешним хронометром.

В домене с несколькими DC функции эталонного сервера времени возлагаются на контроллер, который играет роль эмулятора PDC. По умолчанию, эмулятор PDC — это первый DC, устанавливаемый в домене. Если в сети имеется несколько доменов (лес), то эмулятор PDC первого домена в лесу будет служить эталонным сервером времени для всего леса.

Чтобы указать URL или IP-адрес эталонного внешнего таймера, необходимо выполнить на DC, который играет роль эталонного сервера времени, следующую команду:

Целевой внешний сервер должен быть сервером времени SNTP (Simple Network Time Protocol — простой сетевой протокол временной синхронизации), а UDP-порт 123 должен быть открыт для доступа из Internet. Адреса серверов времени приведены во врезке «Где найти серверы времени?». В случае отказа внешнего сервера система попытается установить соединение с другим сервером из составленного администратором списка. Адреса в списке должны быть разделены пробелами, а весь список заключен в кавычки, например:

Читайте так же:
Регулировка положения рычага коробки передач
Экран 1. Записи в реестре для W32Time.

Результаты выполнения команды net time /setsntp заносятся в реестр, и эталонный сервер времени автоматически синхронизирует свой таймер с внешним источником. Элементы реестра, показанные на Экране 1, записываются в раздел HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services W32Time Parameters. В Таблице 1 разъясняется выбор значений для элементов реестра. При использовании списка из нескольких серверов NTP (Network Time Protocol — сетевой протокол временной сихронизации) указатели URL следует заменить на IP-адреса. Если перечислить NTP-серверы по имени DNS, то из-за ошибки в Windows 2000 операционная система попытается установить соединение только с первым именем в списке, игнорируя остальные. Но при использовании IP-адресов операционная система последовательно пытается установить связь с каждым IP-адресом, пока не синхронизирует время (ошибка исправлена в Windows 2000 Service Pack 3).

Использование NTP с сервером-посредником

Если W32Time работает на машине, скрытой за системой Microsoft Proxy Server, то, возможно, ей не удастся подключиться к внешнему NTP-серверу. W32Time работает от имени локальной системной учетной записи на внутреннем сервере, а сервер-посредник, как правило, использует режим контроля доступа Access Control. Существует несколько способов решения проблемы.

  • Отключить режим Access Control для Winsock Proxy. Для этого следует открыть Microsoft IIS Manager из меню Administrative Tools, открыть диалоговое окно Properties для службы Winsock Proxy, щелкнуть на вкладке Permissions и сбросить флажок Enable Access Control.
  • Настроить сервер времени на сервер-посредник вместо внешнего NTP-сервера, а затем указать посреднику на внешний сервер.
  • Ежедневно выполнять на эталонном сервере времени командный файл с помощью Task Scheduler. Файл следует дополнить следующими командами:

Иерархический поиск источника точного времени

Рабочие станции XP и Windows 2000 Professional, автономные серверы Windows 2000 и все DC, которые не являются эталонными серверами времени, автоматически синхронизируют свои таймеры с нужным DC. Чтобы синхронизировать время в сети, W32Time использует иерархический метод. Данный метод предполагает, что в сети есть эталонный сервер времени. Если из-за отсутствия сервера поиск источника точного времени закончится неудачей, в журналах всех сетевых компьютеров появится множество сообщений об ошибках. Они описаны в разделе «Типичные ошибки W32Time». В иерархии службы времени существует три уровня.

  • Уровень 1: эталонный сервер времени.
  • Уровень 2: другие DC домена (если они существуют) и другие DC других доменов леса (если они существуют).
  • Уровень 3: члены-серверы Windows 2000 и рабочие станции XP и Windows 2000.

На уровне 1 эталонный сервер времени ищет источник точного времени в Internet и пытается установить связь с выбранными администратором внешними серверами времени. В сети может существовать лишь один компьютер уровня 1, и только он может обращаться к внешнему источнику времени. Чтобы определить, настроен ли этот компьютер на связь с нужным источником времени, следует ввести команду

В ответ должен быть получен Internet-адрес внешнего сервера (или несколько Internet-адресов, если указан список внешних серверов времени).

На уровне 2 все DC сети ведут поиск в родительском домене (если существует лес), а затем ищут эталонный сервер времени в текущем домене. Обнаружив эталонный сервер времени, все DC синхронизируют с ним свои таймеры. Эталонный сервер времени для контроллеров домена играет роль NTP-сервера.

На уровне 3 компьютеры синхронизируют свои таймеры с DC, на котором была проведена аутентификация. Считается, что таймер аутентифицирующего DC точен, так как он синхронизирован с NTP-сервером для клиентов уровня 3. Только компьютеры XP и Windows 2000 обеспечивают такую автоматическую синхронизацию. О синхронизации машин со старыми версиями Windows рассказано в разделе «Синхронизация NT 4.0 и клиентов Windows 9x».

Процесс синхронизации времени

Когда компьютеры регистрируются в домене, служба времени проверяет время на соответствующем компьютере и определяет «целевое» время. Для машин уровня 2 целевым временем будет время эталонного сервера времени. Для всех других компьютеров целевым считается время DC аутентификации (компьютера уровня 2). Чтобы согласовать локальное время с целевым, локальный (клиентский) компьютер выполняет следующие действия.

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

Другой способ — вручную синхронизировать таймер любого сетевого компьютера XP или Windows 2000 (кроме аутентифицированного сервера времени) с помощью команды

Пользователь получает сообщение, приведенное на Экране 2. Чтобы согласовать локальное время со временем аутентифицирующего DC, нужно нажать клавишу Y.

Временная синхронизация производится не только при начальной загрузке. Таймеры компьютеров XP и Windows 2000 периодически синхронизируются в процессе работы. По умолчанию, клиентские машины подключаются к источникам точного времени один раз за «период», который определяется следующим образом.

  • Длительность начального периода — 45 мин.
  • Если процедура синхронизации успешно проведена три раза подряд, то период увеличивается до 8 ч.
  • Если синхронизация трижды закончилась неудачей, то период сокращается до 45 мин, и процесс определения длительности периода начинается заново.

Использование команды net time /set для ручной синхронизации таймера на подсчете числа успешных проверок не отражается.

Синхронизация NT 4.0 и клиентов Windows 9x

Сетевые клиенты NT 4.0 и Windows 9x должны быть синхронизированы вручную. Для этого следует ввести команду net time /set /yes, где ComputerName — имя компьютера в данном домене, таймер которого считается эталонным. Служба W32Time на компьютерах NT и Windows 9x не работает, поэтому периодическая автоматизированная синхронизация не производится. Если ввести команду в командный файл, а ярлык командного файла поместить в папку Startup, то временная синхронизация будет выполняться каждый раз при запуске компьютера; или же можно поместить ярлык на «рабочем столе», чтобы пользователи могли действовать по своему усмотрению.

Читайте так же:
Не отключается синхронизация времени

Типичные ошибки W32Time

Сообщения об ошибках W32Time заносятся в журнал System утилиты Event Viewer; в качестве источника сообщений указывается W32Time (чтобы сортировать журнал по источникам сообщений, следует щелкнуть на столбце Source). Многие события, записываемые службой времени, являются информационными, но если обнаружено предупреждение, то следует принять меры для устранения неполадки.

Если администратор не назначил эталонный сервер времени, то первый DC домена (или первого домена в лесу) запишет в журнал System следующее событие: This Machine is a PDC of the domain at the root of the forest. Configure to sync from External time source using the net command, ?net time /setsntp:. («Данная машина — главный контроллер корневого домена леса. Настройте его на синхронизацию с внешним источником времени, используя команду

Если эталонный сервер времени недоступен и возникают проблемы репликации DC, то не всегда очевидно, что причина кроется в службе времени. Когда источники времени становятся недоступными, W32Time не генерирует сообщений об ошибках в журнале System. Я надеюсь, что этот недостаток будет устранен в будущих версиях Windows. Но если система выдает сообщение об ошибке The RPC server is unavailable, то, скорее всего, произошел сбой службы синхронизации времени.

Если клиент XP или Windows 2000 не может найти домена для аутентификации (как правило, это случается в небольших сетях с единственным DC), то клиент может зарегистрироваться на любой машине, так как по умолчанию система кэширует пароли и имена пользователей. Однако процесс синхронизации времени срывается, и в результате W32Time записывает в журнал System событие с ID 11 (The NTP Server didn?t respond — NTP-сервер не ответил).

Событие с ID 11 — типичное предупреждение на эталонном сервере времени. Если предупреждение приходит часто, то следует повторно ввести команду net time /setsntp: и найти другой сервер времени в Internet или добавить IP-адреса нескольких NTP-серверов.

Если сеть занята или возникли неполадки с сетевой платой или кабелем, то в журнал System может быть записано событие с ID 64. Источник этого события — W32Time, но проблема не связана с данной службой. Тем не менее это событие может быть единственным предупреждением о разрыве соединения. На Экране 3 показано сообщение для события с ID 64. Данное сообщение относится к программе w32tm.exe, с помощью которой можно исследовать и изменить службу W32Time. Чтобы получить рекомендации по использованию этого инструмента, нужно ввести команду

Вопрос времени

Нормальное функционирование W32Time необходимо обеспечивать не только ради собственно синхронизации. Успешное выполнение многих важных функций, в том числе безопасность Kerberos и репликация данных, зависит от точности компьютерных таймеров.

Кэти Ивенс — редактор Windows & .NET Magazine. С ней можно связаться по адресу: kivens@winnetmag.com.

Где найти серверы времени?

При синхронизации эталонного сервера времени с внешним сервером времени NTP (Network Time Protocol) Windows устанавливает местное время с учетом перехода на летнее время и обратно. Кроме того, операционная система компенсирует любые задержки в каналах Internet.

Серверы времени расположены по всему миру и организованы в иерархическую структуру. Первичные (уровень 1) серверы — наиболее точные, но вторичные (уровень 2) серверы, как правило, безупречно синхронизированы или лишь незначительно рассогласованы с серверами уровня 1. Разница, не превышающая нескольких наносекунд, безусловно, не приведет

к проблемам в сетевых функциях, зависимых от службы времени Windows. Серверы уровня 1 очень загружены, и попытки обращения к ним могут оказаться неудачными из-за тайм-аута. Поэтому рекомендуется выбирать в качестве внешних NTP-серверов серверы уровня 2.

Список серверов 1 уровня приведен на сайте http://www.eecis.udel.edu/

В каждом списке перечислены общедоступные NTP-серверы времени. Для каждого сервера указаны код страны, штат (только США), имя узла, Internet-адрес и сведения о географическом положении.

Синхронизация времени клиентских машинах

П редставьте себе такую ситуацию: однажды утром, придя на работу, вы обнаружили, что на прошлой неделе некий хакер, использовав адрес электронной почты генерального директора вашей компании, передал якобы от его имени несколько фальшивых сообщений по корпоративной интрасети. Чтобы “вычислить” злоумышленника, вы решили определить время их передачи. Как показал отчет Web-сервера, это произошло в прошлую пятницу в 14 ч 49 мин. Просматривая журнал своего доверенного сервера-посредника, вы заметили, что показания его системных часов и системных часов Web-сервера отличаются от точного времени на несколько минут. Сначала это показалось вам несущественным, но потом, когда вы узнали, что в часы наибольшей загрузки сервер-посредник обрабатывает около десяти запросов в секунду, а значит, за это время им было выполнено несколько тысяч запросов, стало ясно, что предпринятое вами расследование будет непростым.

Для успешного выполнения ряда приложений, включая точное протоколирование системных событий, необходимо обеспечить высокую точность отсчета времени в компьютерных системах. Значимость точности и синхронизма хода компьютерных часов еще более возрастает в современных сложных сетевых средах. Операционные системы NetWare, Windows NT, Unix и другие имеют встроенные службы синхронизации времени, но, поскольку они не совместимы друг с другом, реализовать службу синхронизации времени на их основе в масштабе всей гетерогенной корпоративной сети очень сложно.

К счастью, для этого разработан специальный протокол NTP (Network Time Protocol), представляющий собой стандартный (описанный в RFC 1305) метод синхронизации хода часов вычислительных устройств на самых разных платформах.

Протокол NTP реализован в следующих ОС: Windows NT (его поддержка — ПО TimeServ — входит в набор программ Windows NT Server Resource Kit), NetWare 5.0 (для работы с NTP предыдущим версиям NetWare — 3.x и 4.x — требуются дополнительные программные продукты третьих фирм), Unix и IOS (Internetwork Operating System) фирмы Cisco Systems. С помощью средств NTP сетевые администраторы смогут обеспечить синхронизм и точность хода (в пределах нескольких миллисекунд) часов маршрутизаторов, серверов, рабочих станций и других NTP-совместимых сетевых устройств.

Читайте так же:
Регулировать подшипник ступицы заднего колеса

Средства NTP устанавливают системные часы узлов сети в соответствии с информацией о точном времени, которую обычно получают от атомных часов, приемников GPS и радиочасов. В одной из наших тестовых лабораторий установлен сервер времени TymServe 2100 фирмы Datum, обеспечивающий точность установки системных часов на узлах нашей сети в пределах 1 мс.

Архитектура NTP

В NTP реализован иерархический подход к синхронизации времени в сетях (см. рисунок). На самом верхнем уровне иерархии находится источник информации о координированном всемирном времени (Universal Coordinated Time — UTC), совпадающем с временем по Гринвичу. В зависимости от логической близости к этому источнику серверам времени присваивают определенные номера stratum. Серверы stratum 1 обычно имеют прямой доступ к источнику информации о UTC и синхронизируются непосредственно с ним. Серверы stratum 2 синхронизируются с серверами stratum 1, а серверы stratum 3 — с серверами stratum 2 и т. д. (При этом, чем выше номер stratum сервера, тем ниже точность хода его часов. — Прим. ред.) Хотя протокол NTP позволяет сконфигурировать сервер stratum 1 для работы с любым источником информации о времени, номер stratum 1 обычно присваивают только серверам с высокоточными источниками.

Для синхронизации времени в сети на базе NTP ее администратор может установить в ней сервер stratum 1, подключив его к внешнему источнику информации о точном времени (например, к приемнику GPS), использовать информацию о времени от серверов времени в Интернет или задействовать один или несколько своих компьютеров в качестве источников информации о времени для других узлов сети. В первых двух случаях часы узлов сети будут установлены в соответствии с UTC, а в последнем случае достигается только синхронизм хода этих часов, но их показания могут быть далеки от UTC в зависимости от точности хода часов их источников информации о времени.

Администратор может присвоить любой номер stratum своим NTP-серверам, которые в качестве источников информации о времени используют собственные системные часы и никогда не “сверяют” их с часами сервера времени на базе UTC. В этом случае они могут быть хорошо синхронизированы друг с другом, но если все они отклонились от точного времени, скажем, на 69 мин, то системное время на всех узлах сети будет отличаться от точного на те же 69 мин. Если же нужно обеспечить соответствие системного времени точному, тогда используйте для синхронизации NTP-серверов источники информации о UTC.

Большинство администраторов предпочитают не устанавливать собственные серверы stratum 1, а получать информацию о времени от серверов времени в Интернет. При этом у некоторых из них появляется “соблазн” использовать для синхронизации времени своих систем серверы stratum 1, но такое решение часто считается “дурным тоном”, поскольку в нем, как правило, нет технической необходимости. Сервер времени stratum 1 обеспечивает очень высокую точность информации о времени, которая нужна лишь организациям, использующим редкие приложения с повышенными требованиями к точности отсчета и фиксации времени или поддерживающим общественные серверы stratum 2. Для большинства приложений достаточно точности серверов stratum 2 и stratum 3.

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

Время для клиентов

Определившись с составом и способом синхронизации своих серверов времени, вы должны выбрать метод распределения информации о времени клиентским станциям.

В большинстве случаев устанавливать точное время на этих станциях не требуется. Windows-машины могут получать информацию о времени от локальных серверов Windows NT и NetWare с помощью соответствующих функций, вызываемых из сценариев входа в сеть. Хотя эти функции уступают по точности синхронизации средствам NTP, они обеспечивают неплохую точность установки часов клиентских станций по часам сервера — около одной секунды. Кроме того, задействовать сценарии входа в сеть и штатные средства синхронизации сетевых ОС гораздо проще, чем соответствующие дополнительные средства.

Если же точность установки времени на клиентских станциях должна быть примерно 1 мс, необходимо использовать клиентские средства NTP и выбрать один из методов синхронизации: клиент-серверный, многоадресный (multicast) или широковещательный. Многоадресный метод предпочтителен для сетей с числом клиентских станций более 200. В сетях меньшего масштаба или не поддерживающих многоадресную передачу можно задействовать клиент-серверный метод, а широковещательное распространение информации о времени хорошо подходит для локальных сетей. Большинство администраторов крупномасштабных сетей используют средства NTP только на своих серверах и хост-машинах, поддерживающих критичные к точности установки времени приложения, а ход часов клиентских станций синхронизируется с помощью обычных сценариев входа в сеть.

Ряд версий ОС Unix, включая HP-UX, Solaris и Digital Unix, комплектуют пакетами программ NTP. Кроме того, администраторы сетей Unix могут загрузить из Интернет последнюю версию ПО протокола NTP. Речь идет о пакете NTPv4 (улучшенном варианте популярного пакета xntp), который хранится на Web-сервере Университета штата Делавэр. Работы по развитию этого пакета продолжаются. В его состав входит демон NTPD, функционирующий как процесс сервера времени и поддерживающий контроль доступа на базе диапазонов IP-адресов, аутентификацию с применением шифрования по алгоритму DES, расширенные возможности протоколирования событий и другие важные функции.

Хотя ПО TimeServ и не является частью ОС Windows NT, а поставляется отдельно в составе набора программ Windows NT Server Resource Kit фирмы Microsoft, оно инсталлируется в среде этой ОС как ее служба. TimeServ взаимодействует с серверами NTP и другими службами времени. Если оно нужно вам, приобретите набор программ Windows NT Server Resource Kit. Но знайте, текущая версия этого набора уже устарела, поэтому загрузите соответствующую “заплатку” с ftp-сервера Microsoft.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector