Ошибка; Часы спешат; и что с этим делать
Ошибка «Часы спешат» и что с этим делать
Сегодня решила проверить свои автоворонки. И на один из сайтов с трипваером зайти не удалось. На странице сайта меня ждала ошибка – Google Chrome выдал:
«Часы спешат. Не удалось установить защищенное соединение с доменом из-за неверных настроек системных часов и календаря».
Попытка зайти через другой браузер выдала следующее:
«Часы отстают. Не удалось установить защищенное соединение с доменом <имя домена> из-за неверных настроек системных часов и календаря (четверг, 9 июля 2020 г., 18:29:22).
Мои же часы на ноутбуке показывали 19:29. Решила разобраться и по результатам написать небольшую статью. Если вы столкнетесь с такой неожиданностью, не торопитесь ругать свой компьютер – просто прочитайте этот материал, он поможет вам понять, в чем дело, и решить вопрос.
Конечно, нельзя исключать момент, когда неопытный пользователь может нарушить работу этой функции. Тогда синхронизация времени через Интернет производиться не будет. В принципе, самому компьютеру безразлично, какое время ему показывать. Точное время в данном случае интересует самого юзера. Если машина пользователя достаточно новая, то хватит единожды установленного правильного времени на несколько лет.
Многие системы пишут частоту обновления, и по истечении определенного срока происходит автоматическая синхронизация времени через Интернет. Windows XP указывает это в настройке часов, расположенных на панели задач. Время последней синхронизации можно посмотреть, если нажать правой кнопкой по часам и выбрать пункт «Настройка даты/времени». В открывшемся окне нужно пройти по вкладке «Время интернета», где указано, когда была прошлая синхронизация и время будущей.
На картинке выше видно, что прошлая синхронизация завершилась ошибкой. Мы можем воспользоваться кнопкой «Обновить сейчас» для моментального обновления или выбрать из списка другой адрес. Сначала в списке два адреса, которые принадлежат Microsoft, обычно работают оба. В то же время в сети можно найти и другие сайты, дающие точное время. Найдя такой сервер, мы можем добавить его в этот список. Для этого не нужно нажимать на стрелку списка, достаточно нажать прямо на адрес в строке. Его необходимо выделить и вместо него добавить свой адрес (на всякий случай заметим, что настройки системы, в том числе и описанные выше, потребуют логина администратора). В любом случае, какой бы сервер ни использовался, между строками обычно выставляется неделя.
Картинка показывает, что серверов несколько, а срок синхронизации, если обратить внимание на даты, равен одной неделе.
Чтобы восстановить нормальную работу синхронизации времени, можно прибегнуть к нескольким вариантам исправления неполадки. В первую очередь следует попробовать вручную провести эту процедуру, при надобности изменив сервер синхронизации, а также проверить, работает ли системная служба, отвечающая за эту функцию.
Нужный нам сервис также можно перезапустить с использованием специальных команд. Если такие действия не приведут к положительному результату, то воспользоваться программой, которая проверит целостность системных файлов.
Ручная синхронизация с изменением сервера
Синхронизировать время можно вручную, проделав следующие операции:
- Открываем «Панель управления» воспользовавшись поиском системы.
Открываем «Панель управления» из поисковых результатов
Переходим в раздел «Дата и время»
Открываем окно для изменения настроек
Запускаем синхронизацию вручную
Если синхронизировать время не удастся, то можно попробовать изменить сервер подключения в списке.
Включение службы синхронизации
В некоторых случаях дата и время не синхронизируются из-за отключенной службы в системе. Чтобы её активировать, нам потребуется сделать следующее:
- Запускаем диалоговое окно «Выполнить», нажав на клавиатуре клавиши «Win+R».
- Далее в появившееся окно вводим команду services.msc и нажимаем «OK».
Открываем сервисы системы при помощи команды
Открываем настройки службы времени
Запускаем службу и устанавливаем её автозапуск
Так мы запустим деактивированный сервис синхронизации.
Кроме этого метода также можно попробовать включить службу при помощи специальных команд. Для этого сделаем следующее:
- Запускаем «Командную строку» от имени администратора из стартового меню системы.
Запускаем «Командную строку» из стартового меню
Вводим команду для отключения сервиса синхронизации
Вводим команду для перезапуска сервиса синхронизации
Проверка системных файлов
Если ни один из способов не помог решить проблему с синхронизацией времени, то можно проверить целостность системных файлов Windows. Для этого проделаем следующие шаги:
- Запускаем «Командную строку» от имени администратора из стартового меню.
- В появившееся окно вводим команду sfc /scannow и нажимаем «Enter».
Запускаем проверку системных файлов
Начнется проверка файлов, по окончании которой перезагружаем компьютер и проверяем, заработала ли синхронизация.
На этом все. Теперь вы знаете, как устранить неполадки с синхронизацией времени в Windows 10.
Та же функция в Win 7
Сроки, частота обновления, запуск в Win7 скрывается в том же меню, что и в WinXP. Выбрав вышеописанный пункт «Настройка даты/времени», проходим по вкладке «Время по Интернету» (здесь это названо так).
Вот так это окно выглядит в русифицированной Win7. В окне будут два сообщения: как и с каким результатом отработала данная функция, когда будет следующая синхронизация времени через Интернет. Windows 7 показывает всю информацию, как и WinXp, но вот настройки скрыты в дополнительном окне. Открывается оно нажатием на кнопку, расположенную ниже сообщений. Нажимаем на нее и попадаем в новое окно, где видим уже знакомую кнопку «Обновить сейчас» и список серверов в выпадающем списке. На картинке у нас указано, что функция отработала в штатном режиме.
Кто виноват и что делать?
Задав себе эти два риторических вопроса, я полез в Интернет искать, кто уже написал синхронизацию времени модуля часов с компьютером. И, как известно, кто ищет – тот всегда находит. Нашёлся вариант с Instructables. В теории всё просто: обычный «батник» парсит текущее полное время, полученное «первым» способом (потому что кроме самого времени нужна ещё и дата), увеличивает время на 2 секунды, и «гоняет» пустой цикл до момента, когда настанет это новое, «плюс_две_секундное», время, чтобы «вышвырнуть» данные в COM порт. Причём «новое плюс_две_секундное» время отслеживается другим способом (через %time%, если кому интересно). Но о «косяках» такого решения позже. Данные, «вышвырнутые» в COM порт, Arduino парсит и после этого устанавливает время в модуле. Вроде всё просто, логично и удобно. Но есть очень нехорошее слово «НО». Всё это писал вроде бы немец, и региональные стандарты в Windows у него отличаются от «наших», а в частности, дробная часть отделяется точкой, а не запятой. При запуске с отечественными региональными стандартами «батник» не работает, потому что в нём время выхода из пустого цикла описывается условием сравнения с XX:XX:XX.xxx. Ну так надо вместо точки поставить запятую – и всё, «я всё починил». А вот и не всё (можете проверить, кто ещё помнит, что за такое зло – программировать в «батниках»). Нужно исправлять «батник» более серьёзно. И я его исправил, используя «маты-перематы» и «мануалку» для DOS. «Батник» исправил, но скетч всё равно не работал – время не устанавливалось. То есть данные в порт слались, Arduino их видел, но «что-то пошло не так».
Давайте взглянем, что шлёт «батник» в Arduino и в каком формате (справочно).
Данные шлются в формате S**
— 2 байта перевода каретки. Итого, 31 байт. Вроде немного, пришлются данные быстро.
Однако есть и неудобство – как видим, не шлётся день недели. Только день месяца. Для реализации часов с будильниками, зависящими от дней недели, будет «косяк». День недели придётся выставлять «ручками» в скетче, что опять намекает на некоторую «одноразовость» скетча, его неполноценность.
Складывая факторы – неполноценность скетча «с завода», его отказ нормально работать, необходимость исправления «батника» для «наших» широт – я решил разрабатывать всё свое. А раз так, то я могу устранять недостатки и оптимизировать формат данных.
Облегченный метод
Открытая политика операционной системы Windows позволяет расширять ее функционал при помощи сторонних приложений. Поэтому при возникновении сложностей при настройке параметров синхронизации можно использовать дополнительное ПО.
Все что потребуется — найти программу, установить ее и указать в ней необходимые данные, после чего все действия, описанные выше, будут произведены без вмешательства пользователя. Такие программы могут действовать даже лучше встроенных инструментов Виндовс. При определении времени будет учитываться задержка, которая имеется из-за необходимости передачи пакетов данных через интернет.
Настройка NTP сервера и клиента групповой политикой
Раз уж у нас с вами домен Active Directory, то глупо не использовать групповые политики, для массовой настройки серверов и рабочих станций, я покажу как настроить ваш NTP сервер в windows и клиента. Открываем оснастку «Редактор групповых политик». Перед тем как настроить наш NTP сервер в Windows, нам необходимо создать WMI фильтр, который будет применять политику, только к серверу мастера PDC.
Вводим имя запроса, пространство имен, будет иметь значение «rootCIMv2» и запрос «Select * from Win32_ComputerSystem where DomainRole = 5». Сохраняем его.
Затем вы создаете политику на контейнере Domain Controllers.
В самом низу политики применяете ваш созданный WMI фильтр.
Переходим в ветку: Конфигурация компьютера > Политики > Административные шаблоны > Система > Служба времени Windows > Поставщики времени.
Тут открываем политику «Настроить NTP-клиент Windows». Задаем параметры
- NtpServer: 0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1 3.ru.pool.ntp.org,0x1
- Type: NTP
- CrossSiteSyncFlags: 2. Двойка означает, если этот параметр равен 2 (Все), можно использовать любого участника синхронизации. Это значение игнорируется, если не задано значение NT5DS. Значение по умолчанию: 2 (десятичное) (0x02 (шестнадцатеричное))
- ResolvePeerBackoffMinutes: 15. Это значение, выраженное в минутах, определяет интервал ожидания службы W32time перед попыткой разрешения DNS-имени в случае неудачи. Значение по умолчанию: 15 минут
- Resolve Peer BAckoffMaxTimes: 7. Это значение определяет число попыток разрешения DNS-имени, предпринимаемых службой W32time перед перезапуском процесса обнаружения. При каждом неудачном разрешении DNS-имени интервал ожидания перед следующей попыткой удваивается. Значение по умолчанию: семь попыток.
- SpecilalPoolInterval: 3600. Это значение параметра NTP-клиента, выраженное в секундах, определяет частоту опроса настроенного вручную источника времени, который использует особый интервал опроса. Если для параметра NTPServer установлен флаг SpecialInterval, клиент использует значение, заданное как SpecialPollInterval, вместо значений MinPollInterval и MaxPollInterval, чтобы определить частоту опроса источника времени. Значение по умолчанию: 3600 секунд (1 час).
- EventLogFlags: 0
Делаем отдельную групповую политику для клиентских рабочих машин, вот с такими параметрами.
- NtpServer: Адрес вашего контроллера домена с ролью PDC.
- Type: NT5DS
- CrossSiteSyncFlags: 2
- ResolvePeerBackoffMinutes: 15
- Resolve Peer BAckoffMaxTimes: 7
- SpecilalPoolInterval: 3600
- EventLogFlags: 0
Далее идем на клиента и обновляем групповые политики gpupdate /force и вводим команду w32tm /query /status