一台域内的服务器时间不停地被修改,我先向用户收集了一些信息
只有这一台出现此问题,其他服务器均为正常(补充一下,问题快解决完的时候用户告诉我一个重要的消息,就是时间被修改了一段时间后自动会被修改回去)
系统版本\服务器用途(考虑是否有软件会造成此问题)\日志信息\是否为虚拟机
1.系统版本是Server 2008 数据中心版
2.用途就是一台做图的服务器
3.日志信息如下图,这个日志是系统日志,事件ID为1,时间从2016-7-21 00:50:59 被改为
2016-07-21 08:32:31
4.是Vmware虚拟机
5.注意了,是时间一直被修改,而且日志中的源也判断不出是谁修改了时间
= = 第一天
1)确定服务器的时间服务是否为正常启动
2)查看虚拟机是否和Esxi主机进行了时间同步,没有勾选的话不会和Esxi主机进行时间同步
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日志可以查看到服务器到底从哪里同步的时间
另外,如果要更改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(虚拟机时间提供源)
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(新加坡域控)
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
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服务
如果出现了时间不同步问题,按照以上几点进行排查,相信问题可以得到解决