非域加入服务器上的时间同步

非域加入服务器上的时间同步

我有一台服务器,它位于与域中的其他服务器不同的网络中的工作组中。因此,它无法使用域控制器作为时间源。该服务器是 Windows Server 2012 R2 计算机。

我想确保服务器配置为从我国境内的可靠 NTP 服务器列表中检索其时间,但我在研究如何最好地配置它时遇到了一些困难。

我的第一个想法是按照在域环境中配置 PDC 的方式配置机器,以便它从一个或多个外部时间源获取时间。命令行如下所示:

w32tm /configure /manualpeerlist:"ntp1.npl.co.uk ntp2.npl.co.uk" /syncfromflags:manual /update

这会在注册表项中设置适当的注册表值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters

不幸的是,该命令失败了,因为“Windows 时间”(又名 w32time)服务未启动。调查显示,在未加入域的服务器上,Windows 时间服务设置为“手动(触发器启动)”,触发器是计算机是否加入域。由于没有加入域,因此服务尚未启动。

由于该服务未运行,您可能会认为这意味着将 w32time 配置为使用特定 NTP 服务器不会产生任何效果。但是,还有一个名为SynchronizeTimelocated in 的内置计划任务Task Scheduler Library\Microsoft\Windows\Time Synchronization\SynchronizeTime,它使用参数启动 w32time 服务task_started。这似乎会导致服务启动、同步,然后立即再次停止。更奇怪的是,该任务没有触发器,但它确实会定期运行。我找不到任何方法来确定是什么导致任务运行。

更令人困惑的是,在“Internet 时间”选项卡上的“日期和时间”对话框中还可以看到以下设置:

在此处输入图片描述

看起来此设置与完全不同的注册表项相关,该注册表项也包含 NTP 服务器列表。该注册表项为:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers

因此,以上所有内容都让我想知道实现我想要做的事情的正确方法是什么。 我也想知道以下任何问题的答案:

  • 为什么有两个系统看上去在做同样的事情?
  • 第二个如何工作?
  • 它们如何互动?
  • 我应该使用哪一个?
  • 计划任务是如何触发的?

答案1

正如您所发现的,Windows 中的 NTP 配置可能很麻烦。虽然您肯定可以让它正常工作,但我强烈建议您使用如下方法网络时间或者(如果您需要真正的、出色的 NTP 精度)这是适用于 Windows 的 NTP 端口。

无论如何,关于 w32time 和 GUI 显示内容之间的不一致,http://www.timesynctool.com/我们读:

Windows 7 中的 Windows 时间服务也默认配置为在每次系统启动时不自动启动 - 用户界面报告 Windows 配置为自动更新系统时间,但除非用户通过服务控制面板小程序或请求手动同步手动启动 Windows 时间服务,否则它不会自动更新系统时间。除非用户将 Windows 时间服务重新配置为自动启动,否则每次系统重新启动时它都会被禁用!

答案2

我像您一样使用w32tm /configure /manualpeerlist:命令配置NTP。

要更改 Windows 以便 w32time 在重新启动时启动,请发出以下命令:

sc triggerinfo w32time delete

如果您想检查服务的触发状态,您可以这样做:

C:\Windows\system32>sc qtriggerinfo w32time
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: w32time

    START SERVICE
      DOMAIN JOINED STATUS         : <clip> [DOMAIN JOINED]
    STOP SERVICE
      DOMAIN JOINED STATUS         : <clip> [NOT DOMAIN JOINED]

相关内容