前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows域控时间同步

Windows域控时间同步

原创
作者头像
Windows技术交流
修改2023-11-03 11:57:43
6.4K0
修改2023-11-03 11:57:43
举报
文章被收录于专栏:Windows技术交流Windows技术交流

Windows配置域控参考我写的 https://cloud.tencent.com/developer/article/1925795 ,实际就4句命令而已,很简单。

新机器入域过程省略。

配好域控制器后,配置域控时间同步分为两步:第一步,为域控服务器配置与腾讯云NTP Server的时间同步;第二步,通过组策略实现域内成员同步域控服务器的时间。我基本上是参照https://www.jianshu.com/p/ca6ad7563618 思路去配置的,但也有我的小改动,按照我的配置走下来,如果人为或其他原因把时间弄得不准确了,一般会在一两分钟内自动校正,如果是手动执行w32tm /resync /rediscover /nowait 校正,会更快校正过来。

为了方便查看右下角秒数的变化,建议执行这句命令,普通命令行就行,不要用管理员命令行,因为是HKEY_CURRENT_USER,不需要管理员命令行执行,执行后注销重新登录就可以看到秒数了

代码语言:javascript
复制
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSecondsInSystemClock /t reg_dword /d 1 /f

一、域控服务器配置NTP(在域控上操作)

添加时间服务器地址(域名或IP)(下面这个键存放着时间服务器列表)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers

在右边空白处右键新建“字符串值”,命名为1,值为:ntpupdate.tencentyun.com 或者time1.tencentyun.com到time5.tencentyun.com,保存。将"默认"值修改为1即可。

我是直接删了原列表后操作的,也可以在不动原列表的情况下,新建“字符串值”,命名为0,然后将"默认"值修改为0即可。

在域控上执行下面这个脚本以确保域控制器本身的时间跟北京时间同步,脚本里ntpserver配置的是腾讯云的time1.tencentyun.com到time5.tencentyun.com,也可以配置ntpupdate.tencentyun.com(可能会淘汰,建议time1.tencentyun.com~time5.tencentyun.com)

上述HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers 的配置,其实就是普通机器运行timedate.cpl第三个页签的功能,域中的机器看不到第三个页签,就通过注册表来配置了

上述HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers 的配置,优先级低于组策略,因此,首先,排除组策略的干扰,确保组策略未配置

gpedit.msc → 计算机配置 → 管理模板 → 系统 → Windows时间服务 →

腾讯云公共镜像在组策略里配置了Windows时间服务如上图

我把相关圈出的地方全部改成未配置然后执行gpupdate /force

然后执行2遍reg delete "HKLM\SOFTWARE\Policies\Microsoft\W32Time" /f 确保未配置(我要根据自己的想法配ntp校时,腾讯云公共镜像配置的校时的间隔是5分钟、超过15小时不能校时,我自己喜欢校时的间隔短并且不论时差多大都能自动校时,所以需要先删除公共镜像的原始配置),然后执行下面这个脚本配置校时

注意:执行了脚本后就不要执行gpupdate /force了,因为组策略图形界面是"未配置",如果你执行gpupdate /force就把"未配置"拉取到注册表了,"未配置"拉取的这个注册表值会坏事,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers

执行脚本后验证效果,powershell执行restart-service w32timew32tm /query /sourcew32tm /query /peers

w32tm /query /source 多执行几次,前几次结果可能是Local CMOS CLOCK,忽略,一直执行w32tm /query /source,直到结果是time1.tencentyun.com~time5.tencentyun.com 5个之一即可(结果可能会变)

然后确认w32tm /query /peers的执行结果是否time1.tencentyun.com~time5.tencentyun.com(是5个就行,顺序无所谓)

然后验证校时效果:运行timedate.cpl改个错误的时间(可以多试几次,时间差几分钟、十几分钟、几个小时、几天、几个月、跨年),然后执行w32tm /resync /rediscover /nowait 校正时间,执行命令后等几秒应该就能同步,等不及就多执行几次w32tm /resync /rediscover /nowait,或者不用执行w32tm /resync /rediscover /nowait,就耐心等待一两分钟左右就自动校正时间了。

二、配置权威服务器及组策略

1、设置权威服务器(在域控上操作)

代码语言:javascript
复制
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v "AnnounceFlags" /t REG_DWORD /d 5 /f

5和10都试过,没明显感受

2、 启用 NTPServer(在域控上操作)

代码语言:javascript
复制
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" /v "Enabled" /t REG_DWORD /d 1 /f

3、配置组策略,设置时间同步(在域控上操作)

【填坑说明】 如果在“Default Domain Policy”下添加时间同步策略,将会导致域控服务器也获取并执行策略,由于组策略的优先级较高,导致第一步配置的与腾讯云NTP同步策略失效。使得域控服务器本身的时间准确性得不到保证。因此通过新建组织单位的方式,对除了域控服务器以外的计算机下发该策略,确保所有成员时间准确。

域控运行gpmc.msc打开组策略管理

①域控新建GPO之全局配置

全局配置我就改了如下图圈出的:关键的几个我提一下,其他的照着截图里圈出的填就行

MaxNegPhaseCorrectionMaxPosPhaseCorrection建议改成4294967295 (16进制0xFFFFFFFF)。

0xFFFFFFFF为特例。 此值表示服务始终校正时间。

0xFFFFFFFF为特例。 此值表示服务始终校正时间。

0xFFFFFFFF为特例。 此值表示服务始终校正时间。

UpdateInterval,建议小于等于100,比如10、5,此参数指定在逐渐校正时钟时,两次校正之间 W32time 等待的时长。进行逐渐校正时,此服务对时钟进行轻微调整,并等待此时长,然后查看是否需要其他调整,直至校正完成。默认值: 100,即100 个 1/100 秒单位,即 1 秒。

PhaseCorrectRate,此参数控制 W32time 校正客户端计算机本地时钟差异的速度,校正目的是与作为准确示例从 NTP 服务器接受的时间示例相匹配。值越小时钟校正速度越慢;值越大时钟校正速度越快。默认值: 7 (标量)。此值不建议小于7,我试过设置1、7、14,设置1的时候,自动校时挺慢的,可能需要等2分钟左右,设置7的时候一般需要等1分钟左右,大部分在1分钟内自动校时,设置14的时候基本都在1分钟内自动校时(平均半分钟左右)。

关于单台机器自身MaxNegPhaseCorrection、MaxPosPhaseCorrection以及UpdateInterval、PhaseCorrectRate的具体情况,执行这几句命令查看

代码语言:javascript
复制
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config"|findstr PhaseCorrection
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config"|findstr UpdateInterval
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config"|findstr PhaseCorrectRate

也可以合并成一句命令

代码语言:javascript
复制
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config"|findstr "PhaseCorrection UpdateInterval PhaseCorrectRate"

请注意,如果是域中的机器,组策略(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time\Config)的优先级是高于本地服务(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config),2个路径都得查

请注意,如果是域中的机器,组策略(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time\Config)的优先级是高于本地服务(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config),2个路径都得查

请注意,如果是域中的机器,组策略(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time\Config)的优先级是高于本地服务(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config),2个路径都得查

例如下图,真正起作用的是组策略里的配置(从域控拉下来的Windows时间服务全局配置很重要)

代码语言:javascript
复制
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time\Config"|findstr "PhaseCorrection UpdateInterval PhaseCorrectRate"

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config"|findstr "PhaseCorrection UpdateInterval PhaseCorrectRate"

单机修改这几个参数的话,执行这几句命令,但我们这里说的是在域控上配置组策略,建议在图形界面配置

代码语言:javascript
复制
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v MaxNegPhaseCorrection /t reg_dword /d 0xFFFFFFFF /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v MaxPosPhaseCorrection /t reg_dword /d 0xFFFFFFFF /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v UpdateInterval /t reg_dword /d 5 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config" /v PhaseCorrectRate /t reg_dword /d 14 /f

https://docs.microsoft.com/zh-cn/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings

②域控新建GPO之ntp客户端

注意下图NtpServer的值,末尾的0x1或0x9,默认的是time.windows.com,0x9,域名改成域控制器的计算机全名(执行sysdm.cpl查看),关于末尾的0x几,参考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc779560(v=ws.10)?redirectedfrom=MSDN

③不论全局配置,还是NTP客户端配置,配置过程中都有EventLogFlags这个参数,默认值并不一定是3,如果要日志详细些,那就配3

此值是一个位掩码,控制可以记录到事件查看器系统日志中的事件。若此值设置为 0x1,则指示每次检测到时间跳转时 W32time 都将创建一个事件。若此值设置为 0x2,则指示每次更改时间源时 W32time 都将创建一个事件。此值是一个位掩码值,因此将其设置为 0x3 (0x1 与 0x2 的和)时指示同时记录时间跳转和时间源更改。

4、域内成员同步策略(在域成员机上操作)

组策略配好后,先在域控机器上powershell执行restart-service w32time,然后在域成员机上powershell执行gpupdate /forcerestart-service w32time,再然后在域成员机上执行

代码语言:javascript
复制
cmd.exe /c "gpresult /H GPReport.html /f && GPReport.html" 

然后点右上侧的"全部显示",然后搜"时间服务",如果能看到下面这3处(全局配置设置、配置 Windows NTP 客户端、启用 Windows NTP 客户端)说明已经配置好了。如果没搜到"时间服务",注意在域控上看下是否忘记执行下图这个动作了,在域控上执行dsa.msc把入域的成员机拉入到新建的组织单位里,然后在成员机上重新执行

代码语言:javascript
复制
gpupdate /force;restart-service w32time;cmd.exe /c "gpresult /H GPReport.html /f && GPReport.html"

5、域内成员验证配置(在域成员机上操作)

前面提到的

gpupdate /force

restart-service w32time

w32tm /query /source (多执行几次确保同步到新的源)

w32tm /query /peers

w32tm /query /status

w32tm /query /configuration

运行timedate.cpl改个错误的时间,然后执行w32tm /query /source (多执行几次确保同步到新的源,如下图),然后执行w32tm /resync /rediscover /nowait 校正时间,执行命令后等几秒应该就能同步,一次不行就多执行几次,或者不用执行w32tm /resync /rediscover /nowait,就耐心等待一两分钟左右就自动校正时间了。

【注意事项】

域成员第一次执行gpupdate /force拉取域控上配置的组策略之前,首先确保域成员执行w32tm /query /sourcew32tm /query /peers的结果唯一包含域控制器全名(域控上执行sysdm.cpl查看),而没有其他地址。

如果执行了一二十次w32tm /query /source,结果一直是Local CMOS CLOCK,执行下这几句命令恢复预设值

代码语言:javascript
复制
net stop w32time
w32tm /unregister
w32tm /register
net start w32time

然后确保跟域控时间相同或很接近,然后再执行gpupdate /force,如果执行报下面的错了,

再次在域控上powershell执行restart-service w32time,然后在域成员机再次执行gpupdate /force,如果还是报这个错,那就在域成员机上执行下面这几句命令,如果还是不行,就重启下机器再试(我自己遇到的各种特殊情况都在这里作说明了,其他特殊情况自求多福自己研究下吧,这篇文档已经很细节了)。

代码语言:javascript
复制
net stop w32time
w32tm /unregister
w32tm /register
sc.exe triggerinfo w32time delete
sc.exe config w32time start= auto
sc.exe triggerinfo w32time start/networkon stop/networkoff
net start w32time
gpupdate /force

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【注意事项】
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档