Зачем синхронизировать время в локальной сети

Когда время в разных компьютерах “уезжает”, сыпятся мелкие и не очень мелкие проблемы: сбиваются логи, ломается привязка событий, страдают сертификаты и проверка сроков, усложняется разбор инцидентов. В Windows за синхронизацию отвечает служба W32Time, а связь идёт по NTP (нужен UDP-порт 123).

В большинстве локальных сетей делают так: один сервер или один “раздающий” компьютер синхронизирует время извне (или сходит на внутренний источник), а остальные тянут время из локальной сети.

Что нужно подготовить перед настройкой

  1. Определите, какой компьютер будет источником времени в вашей сети:
  2. либо он ходит в интернет и синхронизируется с внешним NTP;
  3. либо вы заранее подготовили локальные NTP-источники.
  4. Убедитесь, что между клиентами и источником времени разрешён UDP-порт 123.
  5. На клиентах и источнике у вас должен быть доступ к службе времени W32Time (обычно это всё “из коробки”).

Вариант 1: проще всего - источник времени (NTP-сервер) на Windows в локалке

Ниже логика такая: на “раздающем” сервере включаем роль NTP, корректируем его настройки и прописываем интервал, а на клиентах меняем NTP-сервер на IP/имя раздающего компьютера.

Настройка источника времени (NTP на Windows)

Делайте это на “раздающем” компьютере.

  1. Включите встроенный Windows NTP-сервер и сделайте его доверенным для клиентов.
  2. Перезапустите службу W32Time.
  3. Уменьшите интервал опроса внешнего времени (если источник ходит в интернет), чтобы время держалось точнее.

Практический набор команд и параметров в Windows чаще всего сводится к настройкам W32Time через реестр и перезапуску службы, затем проверке через w32tm. Самый удобный способ работать с W32Time - команда w32tm.

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

w32tm /query /status
w32tm /query /configuration

Настройка клиентов Windows 10

Делайте это на каждом клиенте (или централизованно через GPO, если есть домен).

На клиенте откройте “Дата и время” и через “Время по Интернету” задайте локальный NTP сервер (IP или DNS-имя источника). Это рабочий и быстрый путь.

Если хотите именно через консоль, используйте W32Time. Для ручной привязки клиента к конкретному источнику:

w32tm /config /syncfromflags:manual /manualpeerlist:"IP_источника_времени" /update
w32tm /resync

После этого проверяйте, что клиент реально тянет время у нужного узла:

w32tm /query /source
w32tm /query /configuration
w32tm /monitor /computers:IP_источника_времени

Вариант 2: если клиентов много и вы хотите командой “переключить всех”

Когда нужно разом привести много машин к одному источнику время, обычно используют скрипт-обёртку:

Пример батника для клиентов

На каждом клиенте (с правами администратора) выполнить:

w32tm /config /manualpeerlist:IP_источника_времени,0x1 /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync

Смысл:
- прописать ручной список одноранговых узлов (IP источника),
- перезапустить W32Time,
- форсировать повторную синхронизацию.

Если в сети несколько источников время, на клиента можно указать их списком (и при необходимости понизить приоритет одного).

Важно про порт 123 UDP и брандмауэры

W32Time следует NTP и использует UDP-порт 123 для синхронизации время. Если где-то между источником и клиентом стоят правила firewall, чаще всего проблема выглядит так: клиент “жив”, а синхронизация срывается.

Быстрая практическая диагностика по w32tm:

w32tm /monitor /computers:IP_источника_времени

Если источник недоступен - проблема обычно в маршрутизации, адресации или правилах UDP 123.

Где именно посмотреть, что сейчас происходит с временем

На любом компьютере с Windows 10:

  • Текущий источник:
w32tm /query /source
  • Конфигурация клиента:
w32tm /query /configuration
  • Статус синхронизации:
w32tm /query /status
  • Понять, когда и с кем синхронизируется (и есть ли рассинхрон):
w32tm /monitor /computers:IP_или_имя_сервера

Частые причины рассинхронизации

  • клиент продолжает тянуться на внешний NTP, которого в вашей сети нет;
  • UDP 123 заблокирован;
  • время на источнике “уехало” само по себе (например, интернет отключён и внешняя синхронизация не работает).

Как принудительно синхронизировать “прямо сейчас” на Windows 10

Обычно достаточно:

w32tm /resync

Если нужно запустить системную задачу синхронизации (когда интерфейс/политики мешают обычным путём), можно запускать задачу планировщика:

schtasks.exe /run /tn "\Microsoft\Windows\Time Synchronization\ForceSynchronizeTime"

Иногда на “ограниченных” учётках из-за прав это будет блокироваться, тогда синхронизацию делают либо от администратора, либо через корректно настроенные политики.

Таблица: что сделать и чем проверить

Шаг Что сделать Команда/путь Результат
Выбрать источник Определить один сервер/раздающий компьютер (ваше решение) Все клиенты должны тянуться к нему
Проверить службу Убедиться, что W32Time работает w32tm /query /status Служба и состояние синхронизации видны
Прописать клиенту источник Настроить NTP на IP/имя раздающего w32tm /config ... /manualpeerlist:"IP" В конфигурации появился нужный источник
Форсировать синхронизацию Сразу применить изменения w32tm /resync Время начинает корректироваться
Проверить источник Увидеть, откуда тянет клиент w32tm /query /source Источник соответствует локальной сети
Проверить доступность Проверить обмен с источником w32tm /monitor /computers:IP Показывает доступность и смещение

Практический минимум: самый рабочий рецепт

  1. На “раздающем” компьютере обеспечьте нормальную синхронизацию время (хотя бы с внешним NTP, если он в интернете, или с другим внутренним источником).
  2. Разрешите UDP 123 от раздающего ко всем клиентам.
  3. На каждом клиенте Windows 10 замените NTP-сервер на IP/имя раздающего.
  4. Запустите w32tm /resync.
  5. Проверьте w32tm /query /source и w32tm /monitor.

Ссылки на авторитетные источники

  • Microsoft: Windows Time Service (W32Time) и инструменты w32tm и требования по UDP 123
    https://learn.microsoft.com/ru-ru/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings