如何针对较大的时间偏差配置 Windows 时间服务

本文介绍如何针对较大的时间偏移配置 Windows 时间服务。

适用于:Windows 10 - 所有版本,Windows Server 2012 R2
原始 KB 编号: 884776

简介

Windows 操作系统包括时间服务工具 (Kerberos 身份验证协议使用的 W32Time 服务) 。 如果相关计算机之间的时间间隔在最大启用时间倾斜范围内,Kerberos 身份验证将有效。 默认值为 5 分钟。 还可以关闭时间服务工具。 然后,可以安装第三方时间服务。

时间服务工具的用途是确保组织中运行 Microsoft Windows 2000 或更高版本 Windows 操作系统的所有计算机都使用公共时间。 为了确保有适当的常见时间使用情况,时间服务使用控制颁发机构的分层关系。 默认情况下,基于 Windows 的计算机使用下面的层级:

  • 所有客户端台式计算机都指定身份验证域控制器作为其权威时间源。

  • 在域中,所有服务器都遵循客户端台式计算机所遵循的相同过程。

  • 域中的所有域控制器都指定主域控制器 (PDC) 操作主机作为其时间源。

  • 所有 PDC 操作主机在其时间源的选择中都遵循域的层次结构。 但是,PDC 操作主机可以使用基于分层编号的父域控制器。

    注意

    层数定义时间服务器与主引用源的接近程度。

数字越小,服务器离主时间源越近。 在此层次结构中,林根目录中的 PDC 操作主机将成为组织的权威时间服务器。 强烈建议将权威时间服务器配置为从硬件源收集时间。 尝试将权威时间服务器配置为与 Internet 时间源同步时,不会进行身份验证。 我们还建议减少服务器和独立客户端的时间更正设置。 遵循这些建议时,会为域提供更准确的时间。

更多信息

对时间回滚的回顾表明,计算机可以采用未来或过去的数天、月、年甚至数十年的时间。 当计算机及时前滚或向后滚动时,可能会出现以下问题:

  • 计算机帐户、用户帐户和信任关系上的密码可能会过早更新。
  • Active Directory 目录服务复制中的 NTDS 复制事件 2042 可以标识隔离区。
  • 密码不匹配是针对计算机帐户、用户帐户或信任关系进行权威还原的。 从此类不匹配项中恢复可能需要对受影响的所有帐户和信任进行手动密码重置。

如何防范前滚和时间回滚的时间

重启计算机和电源周期时,BIOS 会保留位于计算机主板上的本地 EPROM 中的时间。 Windows 启动时,内核从 BIOS 中拉取当前时间。 此当前时间用作 W32Time 服务可以与其他时间源同步之前的初始时间。

Windows 32 时间服务支持两个注册表项: MaxPosPhaseCorrectionMaxNegPhaseCorrection。 当从远程计算机发送这些样本时,这些条目限制时间服务在本地计算机上接受的样本。

当以稳定状态运行的计算机从其时间源接收时间样本时,将对照 和 MaxNegPhaseCorrection 注册表项施加的相位更正边界MaxPosPhaseCorrection检查该示例。 如果时间样本在两个注册表项强制实施的限制范围内,则接受此示例进行其他处理。 如果时间样本不在这些限制范围内,则忽略时间样本,并且时间服务会在 W32Time 专用日志文件中记录以下消息:

太大

如果管理员降低正负阶段更正值,则管理员可以减少计算机从基于 Windows 的计算机的无效时间样本接收时间的威胁。 另一方面,如果管理员减少值,则管理员可能会阻止计算机在当前时间之前或落后超过这些值施加的限制。

注意

如果减少正更正和负更正的注册表项值,则时间将增加或减少。

Windows 2000、Windows XP、Windows Server 2003 和 Windows Vista 中的 和 MaxNegPhaseCorrection 注册表项的默认值MaxPosPhaseCorrection为以下值:
0xFFFFFFF

此值使计算机能够接收包含在任何时间样本中的时间,无论其不准确。

在 Windows Server 2008 中,已采用 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 注册表项的新默认值。 此新默认值为 48 小时。 此 48 小时值可以表示为以下值之一:

  • 2a300 (十六进制)
  • 172800 (十进制)

建议将 MaxPosPhaseCorrectionMaxNegPhaseCorrection 注册表项设置为以下值以外的值:
MAX (0xFFFFFFFF)

注意

将该值设置为 MAX (0xFFFFFFFF) 以外的值时,可以阻止计算机采用在计算机重启或与外部时间源的连接中断的情况下采用非常不准确的时间。 例如,假设在林中的所有域控制器上设置了 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 注册表项 48 小时。 如果任何单个域控制器遇到超过 48 小时的异常时间跳跃,则为 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 注册表项设置的值将阻止其他计算机进行相同的时间跳转。 因此,不同步的计算机可以与其他计算机分开,直到管理员可以进行调查并采取纠正措施。

时间准确性在林根主域控制器 (PDC) 尤其重要。 由于 PDC 是域的根时间源,因此 PDC 上的不准确时间更改可能会导致域范围的时间跳跃。 如果对 PDC 施加相位更正限制,则可以阻止林中的其他域控制器接受新时间。

默认值为 48 小时,而不是默认值 5 分钟或 15 分钟取决于以下原因:

  • W32TM 实用工具的输出难以读取。
  • W32TM 当前不在成员计算机和成员服务器上以时间为目标。
  • Windows 操作系统和独立第三方应用程序日志的错误和事件高度不一致。 可能的错误包括类似于以下的返回代码:
    • 访问被拒绝
    • RPC 服务器不可用

    注意

    这些错误与时间偏差的相关性较低,因为原因可能会阻止基于 Windows 的计算机采用准确的时间值。

  • 夏令时 bug 可能会导致 1 小时时差。
  • AM 或 PM 配置错误可能会导致 12 小时时差。
  • 日期或日期错误可能会导致 24 小时时差。

因此,48 小时是 25 或 36 小时后下一个明显的时间偏移量。 管理员还可以使用报告基础结构和测试的正确工具来降低该值。

以下部分介绍了根据操作系统版本和计算机角色提供的具体建议。

Windows XP Professional 和所有版本的 Windows Server 2003

域服务器

林根 PDC (权威时间服务器)

强烈建议将权威时间服务器配置为从硬件源收集时间。 将权威时间服务器配置为与 Internet 时间源同步时,不会进行身份验证。 必须重新配置以下注册表项:

  • MaxPosPhaseCorrection
  • MaxNegPhaseCorrection

这两个注册表项的默认值为 0xFFFFFFFF。 此默认值表示“接受任何时间更改”。建议使用 48 小时的值。 它在注册表中表示为 2a300 (十六进制) 或 172800 (十进制) 。 建议将 MaxPollInterval 注册表项的值设置为 10 或更少,或者将 SpecialPollInterval 注册表项的值设置为 3600 (1 小时) 或更少。

域内的域控制器和成员服务器

MaxPosPhaseCorrectionMaxNegPhaseCorrection 注册表项的默认值为 0xFFFFFFFF。 此默认值表示“接受任何时间更改”。建议在所有域控制器上将此值设置为 48 小时。 还可以在运行基于时间敏感的应用程序的成员服务器上设置 48 小时值。

注意

有关这些注册表项的详细信息,请参阅 Windows Server 2003 和 Windows XP 时间服务注册表项 部分。

独立客户端

MaxPosPhaseCorrectionMaxNegPhaseCorrection 注册表项的默认值为 54,000 (15 小时) 。 作为安全最佳做法,建议减少此默认值。 我们还建议将值设置为 3600 (1 小时) 甚至更小的值,具体取决于时间源、网络条件、轮询间隔和安全要求。

Windows Server 2003 和 Windows XP 时间服务注册表项

类型 详细信息
注册表项 MaxPosPhaseCorrection
值类型 DWORD
子项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
注意 此项指定服务可以进行的最大正时间更正(以秒为单位)。 如果服务确定更改大于所需的更改,则会改为记录事件。 特殊情况:0xFFFFFFFF意味着始终进行时间更正。 域成员的默认值为 0xFFFFFFFF。 独立客户端和服务器的默认值为 54,000 (15 小时) 。
注册表项 MaxNegPhaseCorrection
值类型 DWORD
子项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
注意 此项指定服务可以进行的最大负时间更正(以秒为单位)。 如果服务确定需要大于此的更改,则会改为记录事件。 特殊情况:-1 表示始终进行时间更正。 域成员的默认值为 0xFFFFFFFF。 独立客户端和服务器的默认值为 54,000 (15 小时) 。
注册表项 MaxPollInterval
值类型 DWORD
子项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
注意 此项指定为系统轮询间隔启用的最大间隔(以秒为单位)。 请注意,尽管系统必须按照计划的间隔轮询,但提供程序可以在请求样本时拒绝生成样本。 域成员的默认值为 10。 独立客户端和服务器的默认值为 15。
注册表项 SpecialPollInterval
值类型 DWORD
子项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
注意 此项指定手动对等方的特殊轮询间隔(以秒为单位)。 启用 SpecialInterval 0x1 标志后,W32Time 将使用此轮询间隔,而不是操作系统确定的轮询间隔。 域成员的默认值为 3,600。 独立客户端和服务器上的默认值为 604,800。

注意

建议使用全局策略对象编辑器部署这些设置。 有关基于 Windows Server 2003 的林中的 Windows 时间服务的详细信息,请参阅 Windows 时间服务 (W32Time)

组策略 对象 (GPO) 中定义的默认 Windows 时间服务参数值可能与基于 Windows Server 2003 的域控制器的注册表中定义的默认值不匹配。 使用 GPO 将 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 值部署到 Windows Server 2003 域控制器时,请确保 GPO 不会更改注册表中其他 Windows 时间服务参数的值。 其他 Windows 时间服务参数值可能还必须在 GPO 中进行更改,以匹配域控制器中的默认注册表值。

所有版本的 Windows 2000 Service Pack 4 (SP4)

域服务器

林根 PDC (权威时间服务器)

强烈建议将权威时间服务器配置为从硬件源收集时间。 将权威时间服务器配置为与 Internet 时间源同步时,不会在手动模式下进行身份验证。 可以重新配置 MaxAllowedClockErrInSecs 注册表项。 默认值为 43,200。 建议的值为 900 (15 分钟) 甚至更小的值,具体取决于时间源、网络条件和安全要求。 它还取决于轮询间隔。 建议将轮询间隔值设置为每 24 小时一小时。

注意

有关此注册表项的详细信息,请参阅 Windows Server 2000 SP 4 注册表项 部分。

域内的域控制器和成员服务器

同步类型为 NT5DS。 时间服务从域层次结构同步,时间服务接受所有时间更改。 由于 NT5DS 接受任何时间更改而不考虑时间偏移量,因此请务必在时间同步子网中设置可靠的林根时间源。

注意

NT5DS 值指示同步类型是从注册表项获取的。

独立客户端

注册表项 MaxAllowedClockErrInSecs 的默认值为 43,200 (12 小时) 。 作为安全最佳做法,建议减少此默认值。 建议将值设置为 3600 (1 小时) 或更小的值,具体取决于时间源、网络条件、轮询间隔和安全要求。

Windows Server 2000 SP 4 注册表项

类型 详细信息
注册表项 MaxAllowedClockErrInSecs
值类型 DWORD
子项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
注意 指定启用的最大时钟更改(以秒为单位)。 记录事件时,不会根据值调整时间。 发生此行为有助于防止任何可疑的时间戳活动。 域成员的默认值为 43,200。