Почему я не могу подключиться ни к одному NTP-серверу из Windows?

Вопрос или проблема

У меня есть три компьютера с Windows, которые я пытаюсь синхронизировать с NTP-сервером. Все они не справляются с этой задачей. Я подтвердил, что NTP-сервер работает нормально, подключившись с помощью WSL.

Вот что я пробовал:

Я включил windows time в службах Windows.

Я пробовал: Панель управления -> дата и время -> интернет-часы -> ввод сервера -> синхронизация. Это не удается.

Я пробовал это с повышенными правами:

w32tm /resync /rediscover

Появляется ошибка: Компьютер не синхронизировался, так как данные о времени недоступны.

Я пробовал вручную настроить:

w32tm /config /manualpeerlist:<ip> /syncfromflags:manual

Это сообщает об успешности, но фактически время не устанавливает…

Я пробовал выключить и включить снова:

net stop w32time
net start w32time
w32tm /config /update
w32tm /resync /rediscover

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

Я пробовал использовать pool.ntp.org и получил тот же результат.

Затем я пробовал telnet <ip> 123, который сообщает, что сервер недоступен.

ping <ip> работает нормально.

В WSL (ubuntu) sudo ntpdate -q <ip> работает корректно.

Я отключил брандмауэр на всех машинах.

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

Затем я пробовал telnet <ip> 123, который сообщает, что сервер недоступен.

NTP работает исключительно по UDP; он не использует TCP.

В WSL (ubuntu) sudo ntpdate -q <ip> работает корректно.

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

Если бы вы посмотрели на фактические пакеты в Wireshark, вы бы увидели, что:

  • ntpdate использует клиент-серверный режим, поэтому он отправляет пакеты с случайного порта; ответы поступают на вашу систему на этом случайном порту.

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

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

Я думаю, что изменить работу Windows Time Service в этом плане невозможно; ваши единственные варианты могут быть а) запустить небольшой локальный NTP-сервер для вашей локальной сети, который затем синхронизируется с некоторым внешним NTP, используя режим, который не блокируется; либо б) запустить внешний NTP-сервер, который будет доступен через IPsec или какой-либо VPN.


(Иногда это также зависит от вашего маршрутизатора — многие маршрутизаторы реализуют NAT так, что он насильно изменяет исходный порт UDP-пакетов, так что даже если Windows действительно отправляет пакеты с порта 123, интернет-провайдер, который осуществляет блокировку, может никогда не увидеть этого благодаря скрытию NAT маршрутизатора, и все будет, казалось бы, работать нормально.

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

Одна из проблем может заключаться в том, что источник w32tm /query /source может указывать на локальные часы CMOS, а конфигурация w32tm /query /configuration показывает сломанный NtpServer, указывающий на Политику вместо Локального, например:


Type: NTP (Policy)

NtpServer: ,0x1 (Policy)

Чтобы это исправить, создайте групповую политику, используя gpedit.msc в разделе Конфигурация компьютера -> Административные шаблоны -> Система -> Служба времени Windows -> Поставщики времени -> Настройка клиента Windows NTP

  • Активируйте эту политику
  • Установите NtpServer на time.windows.com,0x9
  • Установите Type на NTP

Сохраните, запустите gpupdate из Run для немедленного применения обновлений политики.

Теперь вы должны увидеть следующее, когда запустите w32tm /query /configuration:


Type: NTP (Policy)

NtpServer: time.windows.com,0x9 (Policy)

После того, как это появится, вернитесь в gpedit.msc и установите Настройка клиента Windows NTP в Не настроено, снова запустите gpupdate для применения новой политики и теперь, когда вы запустите w32tm /query /configuration, он должен показать правильную информацию


Type: NTP (Local)

NtpServer: time.windows.com (Local)

и когда вы запустите w32tm /query /source он должен показать


time.windows.com,0x9

Это сбросит время Windows, чтобы клиент NTP использовал NTP-сервер

Ответ или решение

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

Причины и решения проблемы с подключением к NTP-серверу

  1. Проблемы с конфигурацией Windows Time Service

    • Убедитесь, что служба Windows Time (w32time) правильно настроена. Команда w32tm /query /configuration может показать текущие настройки. Если в строке Type и NtpServer указано значение Policy, это может означать неправильную конфигурацию.
    • Решение: Используйте gpedit.msc для настройки политики. Перейдите в Конфигурация компьютера -> Административные шаблоны -> Система -> Служба времени Windows -> Поставщики времени -> Настроить клиент NTP Windows. Включите политику, укажите NtpServer, например, time.windows.com,0x9, и задайте тип NTP. После применения изменений, выполните gpupdate для обновления настроек. Проверьте, чтобы источник времени изменился с Policy на Local.
  2. Блокировки фаерволом и политикой сети

    • Вы упомянули, что деактивировали локальный фаервол, однако существует возможность блокировки извне, например, на уровне маршрутизатора или провайдера. Некоторые интернет-провайдеры блокируют симметричный режим NTP (использование порта 123 как исходящего), что может стать препятствием для синхронизации.
    • Решение: Установите локальный NTP-сервер в вашей сети, который сможет работать через не блокируемые режимы, или используйте VPN для подключения к внешнему серверу.
  3. Проблемы маршрутизации и NAT

    • Маршрутизаторы с технологией NAT иногда изменяют исходные порты UDP-пакетов. Это может привести к тому, что сервер NTP неправильно идентифицирует запросы.
    • Решение: Проверьте настройки маршрутизатора, чтобы убедиться, что исходные порты не изменяются. Рассмотрите возможность использования другой конфигурации NAT.

Вывод и рекомендации

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

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

Оцените материал
Добавить комментарий

Капча загружается...