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

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

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

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

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

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

2016-07-21 08:32:31

4.是Vmware虚拟机

5.注意了,是时间一直被修改,而且日志中的源也判断不出是谁修改了时间

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 /manualpeerlist:"SERVER1-FQDN SERVER2-FQND" /update(这里我设置的是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)这个是设置自己为时间服务器,如果你使用之前的w32tm命令设置NtpServer的话,他就会变成你设置的值


= = 第四天

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

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


wKiom1eu8G6TizHsAAAffZsBxvQ368.pngwKioL1eu8KGzdrJVAAAclqSwB7s358.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服务

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