Как я могу проверить текущую конфигурацию NTP системы?
Мне нужно проверить текущую конфигурацию NTP в некоторых системах Windows. В идеале я хотел бы иметь возможность сделать это через командную строку вместо навигации по экранам конфигурации.
(Я работаю над несколькими различными версиями ОС, и экраны конфигурации, как правило, не всегда находятся в одном и том же месте между версиями.)
Я надеюсь найти быструю, запоминающуюся команду, которую я могу просто вставить в консоль CMD, чтобы получить результат. Тем не менее, пакетный файл, который я могу взять с собой, тоже подойдет.
В частности, мне нужно следующее:
- Показать, настроена ли система на получение времени от NTP-сервера.
- Показать серверы NTP, с которых система получает время.
- Показать время последней синхронизации.
- Показать текущее время в системе.
Какая команда (команды) была бы необходима для достижения этих результатов?
Ищите решение, совместимое с Windows XP, 7, Server 2003 и Server 2008.
6 ответов 6
В командной строке введите
w32tm /query /configuration дает вам конфигурацию, которую вы настроили.
w32tm /query /status предоставляет такую информацию, как:
- слой
- индикатор скачка
- точность
- последняя синхронизация
- NTP сервер
- интервал опроса
time /T выводит текущее системное время.
Примечание: w32tm /query впервые был доступен в клиентских версиях Windows Time для Windows Vista и Windows Server 2008. См. Инструменты и настройки службы времени Windows.
Это отвечает на ваш последний вопрос:
Откройте командную строку и введите точно:
w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x (сколько результатов вы хотите)
Возвращает время и разницу времени NTP-сервера. Если возвращается время, ошибка: 0x80072746, то это не ваш NTP-сервер.
Пример команды приведен ниже:
В другой машине я получил:
Тогда я попробовал:
Тогда я попробовал:
В другой машине я получил страницу помощи, на которой также сказано:
Так что, в основном, сервис не работал. Следуя этим инструкциям, я сделал:
Наконец, все вышеперечисленное будет работать. (примечание: если net start завершится неудачно, см. ниже) Тогда мне просто нужно было настроить мой ntp . Я сделал это с:
следуя инструкциям отсюда, но, возможно, это могло быть так же просто, как:
как указано здесь. (10.0.0.5 — мой локальный NTP-сервер). Если вы не используете локальный NTP-сервер, вы можете использовать общий:
Наконец, вам может потребоваться сделать следующее, что мне не нужно:
Примечание: если net start w32time с ошибкой 1290 (Начало службы не удалось , так как один или несколько услуг в том же процессе имеют службы установки несовместимого типа SID) , а затем выполните шаги здесь:
Затем следуйте, как указано выше.
ПРИМЕЧАНИЕ 2: если служба NTP не запускается автоматически при перезагрузке, это может быть связано с ее настройками запуска, как описано здесь: в зависимости от ваших окон она может быть настроена на запуск только при присоединении к домену. Вы можете проверить с помощью:
Если он настроен на запуск при присоединении к домену, и у вас нет настроенного домена на вашем компьютере, он не запустит службу и не установит время. Вероятно, он не присоединяется к домену, потому что вы этого не хотите. В любом случае просто измените, какой триггер запускает его. Например, для запуска, когда машина имеет сеть (и, следовательно, может получить доступ к серверу), выполните:
Настройка NTP сервера в Windows
Начиная с Windows 2000 все операционные системы Windows включают в себя службу времени W32Time. Эта служба предназначена для синхронизации времени в пределах организации. W32Time отвечает за работу как клиентской, так и серверной части службы времени, причем один и тот же компьютер может быть одновременно и клиентом и сервером NTP (Network Time Protocol).
По умолчанию служба времени в Windows сконфигурирована следующим образом:
• При установке операционной системы Windows запускает клиента NTP и синхронизируется с внешним источником времени;
• При добавлении компьютера в домен тип синхронизации меняется. Все клиентские компьютеры и рядовые сервера в домене используют для синхронизации времени контроллер домена, проверяющий их подлинность;
• При повышении рядового сервера до контроллера домена на нем запускается NTP-сервер, который в качестве источника времени использует контроллер с ролью PDC-эмулятор;
• PDC-эмулятор, расположенный в корневом домене леса, является основным сервером времени для всей организации. При этом сам он также синхронизируется с внешним источником времени.
Такая схема работает в большинстве случаев и не требует вмешательства. Однако структура сервиса времени в Windows может и не следовать доменной иерархии, и надежным источником времени можно назначить любой компьютер. В качестве примера я опишу настройку NTP-сервера в Windows Server 2008 R2, хотя со времен Windows 2000 процедура не особо изменилась.
Запуск NTP сервера
Сразу отмечу, что служба времени в Windows Server (начиная с 2000 и заканчивая 2012) не имеет графического интерфейса и настраивается либо из командной строки, либо путем прямой правки системного реестра. Лично мне ближе второй способ, поэтому идем в реестр.
Итак, первым делом нам надо запустить сервер NTP. Открываем ветку реестра
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer.
Здесь для включения сервера NTP параметру Enabled надо установить значение 1.
Затем перезапускаем службу времени командой net stop w32time && net start w32time
После перезапуска службы NTP сервер уже активен и может обслуживать клиентов. Убедиться в этом можно с помощью команды w32tm /query /configuration. Эта команда выводит полный список параметров службы. Если раздел NtpServer содержит строку Enabled :1 , то все в порядке, сервер времени работает.
Для того, чтобы NTP-сервер мог обслуживать клиентов, не забудьте на файерволле открыть UDP порт 123 для входящего и исходящего траффика.
Основные настройки NTP сервера
NTP сервер включили, теперь надо его настроить. Открываем ветку реестра HKLM\System\CurrentControlSet\services\W32Time\Parameters. Здесь в первую очередь нас интересует параметр Type, который задает тип синхронизации. Он может принимать следующие значения:
NoSync — NTP-сервер не синхронизируется с каким либо внешним источником времени. Используются часы, встроенные в микросхему CMOS самого сервера;
NTP — NTP-сервер синхронизируется с внешними серверами времени, которые указаны в параметре реестра NtpServer;
NT5DS — NTP-сервер производит синхронизацию согласно доменной иерархии;
AllSync — NTP-сервер использует для синхронизации все доступные источники.
Значение по умолчанию для компьютера, входящего в домен — NT5DS, для отдельно стоящего компьютера — NTP.
И параметр NtpServer, в котором указываются NTP-сервера, с которыми будет синхронизировать время данный сервер. По умолчанию в этом параметре прописан NTP-сервер Microsoft (time.windows.com, 0x1), при необходимости можно добавить еще несколько NTP-серверов, введя их DNS имена или IP адреса через пробел. Список доступных серверов времени можно посмотреть например здесь.
В конце каждого имени можно добавлять флаг (напр. ,0x1) который определяет режим для синхронизации с сервером времени. Допускаются следующие значения:
0x1 – SpecialInterval, использование специального интервала опроса ;
0x2 – режим UseAsFallbackOnly;
0x4 – SymmetricActive, симметричный активный режим;
0x8 – Client, отправка запроса в клиентском режиме.
При использовании флага SpecialInterval, необходимо установленное значение интервала в ключе SpecialPollInterval. При значении флага UseAsFallbackOnly службе времени сообщается, что данный сервер будет использоваться как резервный и перед синхронизацией с ним будут выполнятся обращения к другим серверам списка. Симметричный активный режим используется NTP-серверами по умолчанию, а клиентский режим можно задействовать в случае проблем с синхронизацией. Подробнее о режимах синхронизации можно посмотреть здесь, либо не морочиться и просто ставить везде ,0x1 (как советует Microsoft).
Еще один важный параметр AnnounceFlags находится в разделе реестра HKLM\System\CurrentControlSet\services\W32Time\Config. Он отвечает за то, как о себе заявляет NTP-сервер и может принимать следующие значения:
0x0 (Not a time server) — сервер не объявляет себя через NetLogon, как источник времени. Он может отвечать на NTP запросы, но соседи не смогут распознать его, как источник времени;
0x1 (Always time server) — сервер будет всегда объявлять о себе вне зависимости от статуса;
0x2 (Automatic time server) — сервер будет объявлять о себе только, если он получает надежное время от другого соседа (NTP или NT5DS);
0x4 (Always reliable time server) — сервер будет всегда заявлять себя, как надежный источник времени;
0x8 (Automatic reliable time server) — контроллер домена автоматически объявляется надежным если он PDC-эмулятор корневого домена леса. Этот флаг позволяет главному PDC леса заявить о себе как об авторизованном источнике времени для всего леса даже при отсутствии связи с вышестоящими NTP-серверами. Ни один другой контроллер или рядовой сервер (имеющие по умолчанию флаг 0x2) не может заявить о себе, как надежном источнике времени, если он не может найти источник времени для себя.
Значение AnnounceFlags составляет сумму составляющих его флагов, например:
10=2+8 — NTP-сервер заявляет о себе как о надежном источнике времени при условии, что сам получает время из надежного источника либо является PDC корневого домена. Флаг 10 задается по умолчанию как для членов домена, так и для отдельно стоящих серверов.
5=1+4 — NTP-сервер всегда заявляет о себе как о надежном источнике времени. Например, чтобы заявить рядовой сервер (не домен-контроллер) как надежный источник времени, нужен флаг 5.
Ну и настроим интервал между обновлениями. За него отвечает уже упоминавшийся выше ключ SpecialPollInterval, находящийся в ветке реестра HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpClient. Он задается в секундах и по умолчанию его значение равно 604800, что составляет 1 неделю. Это очень много, поэтому стоит уменьшить значение SpecialPollInterval до разумного значения, скажем до 1 часа (3600).
После настройки необходимо обновить конфигурацию сервиса. Сделать это можно командой w32tm /config /update. И еще несколько команд для настройки, мониторинга и диагностики службы времени:
w32tm /monitor – при помощи этой опции можно узнать, насколько системное время данного компьютера отличается от времени на контроллере домена или других компьютерах. Например: w32tm /monitor /computers:time.nist.gov
w32tm /resync – при помощи этой команды можно заставить компьютер синхронизироваться с используемым им сервером времени.
w32tm /stripchart – показывает разницу во времени между текущим и удаленным компьютером, причем может выводить результат в графическом виде. Например, команда w32tm /stripchart /computer:time.nist.gov /samples:5 /dataonly произведет 5 сравнений с указанным источником и выведет результат в текстовом виде.
w32tm /config – это основная команда, используемая для конфигурирования службы NTP. С ее помощью можно задать список используемых серверов времени, тип синхронизации и многое другое. Например, переопределить значения по умолчанию и настроить синхронизацию времени с внешним источником, можно командой w32tm /config /syncfromflags:manual /manualpeerlist:time.nist.gov /update
w32tm /query — показывает текущие настройки службы. Например команда w32tm /query /source покажет текущий источник времени, а w32tm /query /configuration выведет все параметры службы.
Ну и на крайний случай 🙁
w32tm /unregister — удаляет службу времени с компьютера.
w32tm /register – регистрирует службу времени на компьютере. При этом создается заново вся ветка параметров в реестре.
Как проверить текущую конфигурацию NTP системы?
Мне нужно проверить текущую конфигурацию NTP на некоторых системах Windows. В идеале я хотел бы сделать это через командную строку вместо навигации по экранам конфигурации.
(Я работаю над несколькими версиями ОС, а экраны конфигурации не всегда находятся в одном месте по всем версиям.)
Я надеюсь найти быструю, запоминающуюся команду, которую я могу просто пробить в консоли CMD, чтобы получить результат. Пакетный файл, который я могу носить с собой, также будет работать.
В частности, мне нужно следующее:
- Показывает, настроена ли система для получения времени от сервера NTP.
- Показывать сервер (ы) NTP, с которого система получает время.
- Показывает время последней синхронизации.
- Показывать текущее время в системе.
Какие команды необходимы для достижения этих результатов?
Ищем решение, совместимое с Windows XP, 7, Server 2003 и Server 2008.
6 ответов
В командной строке введите
w32tm /query /configuration предоставляет конфигурацию, которую вы настроили.
w32tm /query /status предоставляет информацию, такую как:
- прослойка
- индикатор прыжка
- Точность
- последняя синхронизация
- Сервер NTP
- Интервал опроса
time /T выводит текущее системное время.
Примечание: w32tm /query был впервые предоставлен в версиях Windows Vista для Windows Vista и Windows Server 2008. См. Инструменты и настройки Windows Time
Это ответ на ваш последний вопрос:
Откройте командную строку и введите точно:
w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x (сколько возвращается вы хотите)
Возвращает время и разницу времени сервера NTP. Если он возвращает время, ошибка: 0x80072746, то это не ваш NTP-сервер.
Ниже приведен пример команды:
На другой машине я получил:
Затем я попытался:
Затем я попытался:
На другой машине я получил страницу справки, также сказав:
Итак, в основном служба не запускалась. Следуя этих инструкций, я сделал:
Наконец, все вышеизложенное будет работать. (обратите внимание: если net start не работает, см. ниже) Затем мне просто нужно было установить ntp вверх . Я сделал это с помощью:
следуя инструкциям из %20%D0%B7%D0%B4%D0%B5%D1%81%D1%8C%20,%20%D0%BD%D0%BE,%20%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE,%20%D1%8D%D1%82%D0%BE%20%D0%B1%D1%8B%D0%BB%D0%BE%20%D1%82%D0%B0%D0%BA%20%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE:%20
%20%D0%B2%20%D1%81%D0%BE%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B8%D0%B8%20%D1%81%20%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8%20 здесь . (10.0.0.5 — мой локальный NTP-сервер). Если вы не используете локальный NTP-сервер, вы можете использовать общий:
Наконец, вам может потребоваться сделать следующее, что не было необходимо для меня:
ПРИМЕЧАНИЕ: если w32tm /config /update w32tm /resync /rediscover завершится с ошибкой 1290 (запуск службы невозможен, поскольку одна или несколько служб в одном процессе имеют несовместимую службу SID), затем выполните шаги здесь :
Затем следуйте приведенным выше.
ПРИМЕЧАНИЕ 2: если служба NTP не запускается автоматически при перезагрузке, это может быть связано с ее настройками запуска, как описано здесь : в зависимости от ваших окон его можно настроить только тогда, когда он присоединяется к домену. Вы можете проверить:
Если он настроен для запуска при присоединении к домену и у вас нет домена, настроенного на вашем компьютере, он не запустит службу и не установит время. Вероятно, он не входит в домен, потому что вы этого не хотите. В любом случае просто измените, какой триггер запускает его. Например, чтобы начать, когда машина имеет сеть (и, следовательно, имеет доступ к серверу), выполните:
В командной строке вы можете получить такую информацию:
Кажется, этого должно быть достаточно, по крайней мере, чтобы идти в этом направлении, то есть, если бы я понял ваш вопрос. AFAIK, команда «reg» работает на всех этих разных платформах если у вас есть правильные сервисы.