SCADA_域控制器(DC)时间同步问题

如题所述

第1个回答  2022-06-19

问题1: 在域控上面设置default domain policy对全域设置了时间同步参数,其中MaxPollInterval=10,MinPollInterval =8;我想请教一下,同步的时间间隔只能从这两个参数定义吗,能不能自定义。

通常我们如果通过注册表的方式配置域的时间同步的话,按照下面的注册表设置来配置:

===主域控制器===
1. PDC宣布它为NTP服务器:
Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
Key Name: AnnounceFlags
Type: REG_DWORD (DWORD Value )
Data: 0x5

2. 将服务器类型更改为NTP:
Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type
Key Name: Type
Type: REG_SZ(String Value)
Data: NTP

3. 启用NTP服务器:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
Key Name: Enabled
Type: REG_DWORD
Data: 1

4. 指定哪个服务器充当NTP服务器:
Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
Key Name: NtpServer
Type: REG_SZ(String Value)
Data: Peers (example: time.windows.com, 0x9)

5.仅当我们的PDC计算机是虚拟机时,才需要设置此注册表。 如果它不是虚拟机,则没有有关此注册表的信息。
HLM\SYSTEM\CurrentControlSet\services\w32time\TimeProviders\VMICTimeProvider
Name: Enabled
Type: REG_DWORD
Data:0

===其他的域控制器和客户端===
Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type
Key Name: Type
Type: REG_SZ(String Value)
Data: NT5DS

Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
Key Name: AnnounceFlags
Type: REG_DWORD (DWORD Value )
Data: 0xa

之后,使用命令 net stop w32time && net start w32time 重新启动时间服务器。

0x1 为 NtpServer的Flag位,表示启用SpecialInterval。 它将会等待SpecialPollInterval 内设置的时间间隔再和时间源同步。

SpecialPollInterval
这个值指定了特定的取样时间间隔,当NtpServer值的SpecialInterval 0x1 标志设置后 (所以SpecialPollInterval只在时间同步方式为NTP时才有效,简单来讲,就是在PDC上此值才有意义),W32Time用这个时间间隔进行取样,单位为秒。默认值为3600秒。

Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
Key Name: NtpServer
Type: REG_SZ(String Value)
Data: Peers (time.windows.com,0x9)

NTP server键值中,timeserver,0x9的含义,有如下解释:
0x9其实是两种标识的组合,即0x1和0x8。在w32time中,共有4种基础标识。
0x1 specialinterval
0x2 useasfallbackonly
0x4 symmatricactive
0x8 client

具体可以参考这个文章: Parameters\NtpServer

总结:一般如果我们的环境中没有出现时间同步问题的情况下不建议修改对应的值,保持默认的就可以。一般如果有时间跳变或者精度问题,才可能要调整这两个值。请问我们的环境是否出现了什么问题。我们是觉得时间同步精度不够还是什么其他原因需要去自定义这两个参数呢?

问题2: 还有我查看了客户端事件查看器并不是每一次到了间隔时间都会记录时间同步,一天之内只有2次或1次甚至没有记录。不知道该事件日志记录的原理是什么,想请高手指点一下,谢谢!

MaxPollInterval
这个值指定了在使用NT5DS同步机制时(简单的说就是按照域的结构和DC做时间同步),最大的时间取样时间间隔,单位为2的次方秒。 域控制器的默认值为为10(1024秒) ,域成员的默认值为15(32768秒),没有加入域的机器的默认值为15(32768秒)。如果当前值为F,即32768秒。

MinPollInterval
这个值指定了在使用NT5DS同步机制时(简单的说就是按照域的结构和DC做时间同步),最小的时间取样时间间隔,单位为2的次方秒。 域控制器的默认值为为6(64秒) ,域成员的默认值为10(1024秒),没有加入域的机器的默认值为10(1024秒)。如果当前值为A,即1024秒。

LargePhaseOffset (HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config\LargePhaseOffset):
当时间差小于LargePhaseOffset时,认为是同步的,默认值为5秒。

MaxAllowedPhaseOffset (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxAllowedPhaseOffset):
当时间差大于LargePhaseOffset时,且当时间差超过MaxAllowedPhaseOffset这个值,则W32Time将直接将时间一次性修改正确;
当时间差大于LargePhaseOffset时,且当时间差小于MaxAllowedPhaseOffset这个值,则以渐进式的方式进行时间修改,直到时间正确为止。

总结:如果每次到了时间间隔确实不一定会记录时间同步,到了间隔时间会进行时间取样,如果没有超过阈值,就不需要同步,那么不同步就不会有记录。

不需要同步的情况:因为如果时间差小于LargePhaseOffset时, 认为是同步的,默认值为5秒。

需要同步的情况:
1. 只有每次到了时间间隔,当时间差大于LargePhaseOffset时,且当时间差超过MaxAllowedPhaseOffset这个值,则W32Time将直接将时间一次性修改正确;

REF: https://social.microsoft.com/Forums/ar-SA/17208190-0f56-4dca-85c4-d04fc800ded9/35774326222010222495208692610238388332582116021516274936529235?forum=windowsserversystemzhchs
2. 当时间差大于LargePhaseOffset时,且当时间差小于MaxAllowedPhaseOffset这个值,则以渐进式的方式进行时间修改,直到时间正确为止。
才会记录时间同步。

温馨提示: 我们帖子中提到了在default domain policy对全域设置了时间同步参数,如果用GPO设置域内的时间同步机制,我们建议按照以下方法配置:

创建2个GPO对象,分别PDC的时间同步策略和除了PDC机器的时间同步策略,且分别应用给PDC仿真器和其他域控制器,成员服务器和工作站。

例如:
GPO1(设置了PDC的时间同步策略):应用给PDC仿真器
GPO2(设置了除了PDC机器的时间同步策略):应用给其他域控制器,成员服务器和工作站

具体可以参考以下文章:
Time Synchronization in Active Directory Forests

相似回答
大家正在搜