代码改变世界

Windows服务器时间不同步问题

2017-03-24 08:14  Dorisoy  阅读(3253)  评论(0编辑  收藏  举报

一台域内的服务器时间不停地被修改,我先向用户收集了一些信息

只有这一台出现此问题,其他服务器均为正常(补充一下,问题快解决完的时候用户告诉我一个重要的消息,就是时间被修改了一段时间后自动会被修改回去)

系统版本\服务器用途(考虑是否有软件会造成此问题)\日志信息\是否为虚拟机

1.系统版本是Server 2008 数据中心版

2.用途就是一台做图的服务器

3.日志信息如下图,这个日志是系统日志,事件ID为1,时间从2016-7-21 00:50:59 被改为

2016-07-21 08:32:31

4.是Vmware虚拟机

 

wKiom1eu4VqzJwkMAAEoVenQh48520.png

 

= = 第一天

1)确定服务器的时间服务是否为正常启动

 

wKiom1eu4vazYfXOAADwk3yClcY287.png

 

2)查看虚拟机是否和Esxi主机进行了时间同步,没有勾选的话不会和Esxi主机进行时间同步

 

wKiom1eu45CThFUBAAGlyAhp2xk403.png

 

3)因为用户的并不是管理域的,我让用户询问了一下DC的IP地址,然后使用net time进行时间同步

之前处理过一个问题也是时间不同步,使用了net time后就好了,net time \\ip或者计算机名称 /set即可,会立马同步时间

= = 第二天

1)第二天用户告诉我时间又被更改了,结合上次的时间更改间隔,其实时间更改是具有规律性的,每7小时41分钟左右就会进行更改

2)其实net time这条命令非常的鸡肋!想要更好地解决方法还需要借助w32tm命令

在这台服务器上运行命令,查看此机的NTP服务器列表

w32tm /query/peers

然后修改NTP服务器列表(双引号中用空格分开)引号中的服务器填写PDC服务器的FQDN

w32tm /config /update/manualpeerlist:"SERVER1-FQDN SERVER2-FQND"(这里我设置的是10.138.207.22,FQDN我不能说...)

3)运行如下命令,开启debuglog。

w32tm/debug /enable /file:c:\w32time.log /size:10000000 /entries:0-116

Debug日志可以查看到服务器到底从哪里同步的时间

 

wKioL1eu5_mAY01dAAANcunxQ7c510.png

 

另外,如果要更改Debug日志路径的话,可以更改注册表的值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

= = 第三天

1)时间接着又被修改,之前开启的Debug日志这时候便起到了作用,打开Debug日志后,找啊找,找到三个IP地址

10.142.10.33 新加坡的一台域控

10.138.207.26 北京的一台域控

10.138.164.167本机IP

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters下NtpServer的值是time.windows.com,可能是这个值造成的问题吧,将它改为34(切记这里输入34的FQDN)

2)将此目录下的注册表导出

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\

进行分析,黄色部分标明的地方全部改为0(就是不生效的意思),系统默认是启用读取虚拟机时间的所以需要将其关闭,必须重启计算机才生效,VMICTimeProvider(虚拟机时间提供源)

 

wKiom1eu6lyh0JtxAABlgL9S87g886.png

 

3)使用w32tm /query /configuration 命令查看配置

[TimeProviders]

NtpClient (Local)

DllName:C:\Windows\system32\w32time.dll (Local)

Enabled: 1 (Local)

InputProvider: 1(Local)

CrossSiteSyncFlags:2 (Local)

AllowNonstandardModeCombinations:1 (Local)

ResolvePeerBackoffMinutes:15 (Local)

ResolvePeerBackoffMaxTimes:7 (Local)

CompatibilityFlags:2147483648 (Local)

EventLogFlags: 1(Local)

LargeSampleSkew: 3(Local)

SpecialPollInterval:3600 (Local)

Type: NT5DS(Local)

NtpServer: (Undefined or NotUsed)竟然没有NTP Server,正常情况下这里会显示我们手动指定的PDC

之前设置的无效了?这个我们需要使用w32tm命令就行设置

= = 第四天

1)接着分析Debug日志,从日志信息中可以看到服务器有两个时间同步源

两个源分别是10.138.207.22 另一个10.142.10.33(新加坡域控)

 

wKiom1eu8G6TizHsAAAffZsBxvQ368.png
wKioL1eu8KGzdrJVAAAclqSwB7s358.png

 

2)10.142.10.33并不是PDC,理论上客户端不应该和它进行时间同步,因为都没有手动指定10.33

10.138.207.22,这是我们之前一直指定的时间同步源,于是让用户找人在207.22上运行了netdom query fsmo 查看PDC是否为207.22,结果PDC是10.34,34也是一台新加坡的域控也是PDC,207.22和10.33是一个子域

3)时间一直被修改的原因:因为我们设置的时间源是207.22,所以他会向207.22进行同步,但是10.34是我们子域中的PDC主机,域客户端默认都会向PDC进行时间同步

= = 最终解决

1)难道之前设置34为NTPServer没有生效吗(设置NTPServer)

1.w32tm /config/manualpeerlist:PDCFQDN /syncfromflags:manual/reliable:yes /update

2.net stop w32time & net start w32time (重启服务)

2)查看注册表下值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters ,看到值已经修改为了PDC的FQDN

 

wKiom1eu9_TQXli8AACAeAvzvbQ680.png

 

3)经过几天观察,用户反馈最近几天没有时间被修改的日志,问题得以解决

= = 总结

1)w32tm /query/peers 查看NTP服务器列表

2)netdom query fsmo 确认PDC主机是哪台服务器

3)w32tm /config/manualpeerlist:PDCFQDN /syncfromflags:manual /reliable:yes /update

修改时间同步源

4)w32tm/debug /enable /file:c:\w32time.log /size:10000000 /entries:0-116(开启时间Debug)

5)这次问题解决的难点在于系统莫名其妙的有两个时间同步源,所以有时候时间被更改了,一段时间后又发现时间恢复了正常,这时候输入上条命令将PDC设置为NtpServer后重新启动w32time服务

如果出现了时间不同步问题,按照以上几点进行排查,相信问题可以得到解决