故障现象:
所有华为的交换机满屏的警告日志 Reason=Clock selection failed – No selectable clock ,clock status: unsynchronized
处理过程:
1、查华为知识库,有一篇类似的故障:http://support.huawei.com/enterprise/KnowledgebaseReadAction.action?contentId=KB1000063521,抓包的结果也一样为收到的NTP报文的rdsp值超过1秒(我的为3200ms),根据RFC1305规定, 最大的同步距离是1秒,距离的计算公式包含peer.rootdispersion的值,所以一旦rdsp达到1000ms,超过了1秒这个阈值,所以本设备收到报文后认为报文非法并丢弃。
该KB的处理方法是将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config\LocalClockDispersion 的值由10改为0,改完后在cmd窗口执行命令"w32tm /config /update"来重启时间服务。
使用后仍无效。
2、查询微软KB库,配置 Windows 时间服务以使用外部时间源,配置方法如下:https://support.microsoft.com/zh-cn/kb/816042,NTP Server设置为cn.pool.ntp.org,测试可用,配置完成后故障未能排除。
3、使用gpedit组策略配置-计算机配置–管理模板–windows时间服务,配置完成后问题仍然存在。
故障原因:
收到的NTP报文的rdsp值超过1秒(我的为3200ms),根据RFC1305规定, 最大的同步距离是1秒,距离的计算公式包含peer.rootdispersion的值,一旦rdsp超过1000ms,超过了1秒这个阈值,设备收到报文后认为报文非法并丢弃。
处理方法:
ntp-service max-distance 10
附:交换机NTP配置
ntp-service ipv6 server disable (可选)
ntp-service max-distance 10 (可选,rdsp问题时进行调整)
ntp-service unicast-server x.x.x.x (必选)
检查配置结果
—————————分割线—————————————-
次日进行检查,发现日志又出现昨天同样的问题。
处理过程:
1、检查交换机配置,昨天的配置正常,使用display ntp-service trace 检查日志同步路径,发现错误。
2、在PDC上使用w32tm /query /source查看外部数据源,发现指现本地CMS。
3、在PDC上使用w32tm /query /configuration检查NTP配置,发现NTP同步类型为NoSync。
4、使用gpedit.msc,在“配置Windows NTP 客户端”将type改为NTP。
5、使用gpupdate /force 刷新组策略。
6、再次使用命令w32tm /query /source查看时间源W,发现时间源正常,使用w32tm /monitor /domain:xxx.com查看域内同步情况,发现同步正常。
7、在交换机使用display ntp-service status,发现时间同步状态回复。
8、在PDC上使用net stop w32time &net start w32time 重启w32time服务,使用w32tm /query /configuration查看配置,发现配置的NTP同步类型又变为NoSync,在交换机上使用display ntp-service status检查,发现状态变为unsynchronized。
9、清空PDC上NTP配置(net stop w32time & w32tm /unregister & w32tm /register & net start w32time),重新使用注册表方式配置NTP(https://support.microsoft.com/zh-cn/kb/816042),使用"w32tm /config /update"更新NTP配置(组策略会自动配置相应参数)。
10、使用net stop w32time && net start w32time重启NTP服务,使用w32tm /query /configuration查看配置未变化,查看组策略配置参数正常,使用w32tm /query /source却发现时间同步源又变成了Local CMOS Clock。
11、在组策略修改“配置Windows NTP 客户端”任意参数,应用后再改回来,使用w32tm /query /source发现时间同步源变为设置的外部时间源,交换机状态也变为正常,但重启服务器后变重现步骤10的状态。
12、使用https://blogs.technet.microsoft.com/nepapfe/2013/03/01/its-simple-time-configuration-in-active-directory/重新配置时间服务器,只要重启服务器,会立即恢复到步骤10的状态。
13、再次清空配置,使用步骤12的方法重新配置,问题解决。
解决步骤:
1、使用WMI筛选出PDC,不让PDC应用次组策略。在PDC上输入gpmc.msc打开组策略编辑器,单击WMI筛选器,右建新建,新建查询:Select * from Win32_ComputerSystem where DomainRole = 5,将WMI筛选链接到Domain Controllers Policy。
2、刷新组策略,重启w32tm服务,或直接重启服务器。
3、将gpedit.msc本地组策略里的“计算机配置——管理模板——系统——windows时间恢复为未配置。
4、使用net stop w32time & w32tm /unregister & w32tm /register & net start w32time恢复注册表默认数值。
5、管理员命令行输入:w32tm /config /manualpeerlist:cn.pool.ntp.org/syncfromflags:manual /reliable:yes /update 配置时间服务器,manualpeerlist:后的参数可更换为自己的时钟服务器。
6、执行成功后,再次重启w32tm服务(net stop w32time && net start w32time)。
7、使用W32tm /query /status ,w32tm /query /source ,w32tm /monitor /domain:xxx.com等命令检查正常。
8、在交换机使用命令dis ntp-service statusdis ntp-service trace查看无报错,而且rdsp的值也恢复在1000ms以内,这意味着前一天针对这个故障做的动作完全没有必要。
9、终级验证,重启PDC服务器,重复步骤6和7,确认问题解决。