Windows无法时间同步问题排查记录:非常冷门罕见问题
很久很久之前,那时候还没配置防火墙规则,但是又有设备暴露在公网,担心如果有设备被黑了内网容易出问题,就开始配置交换机 acl规则,结果看到交换机有个防dos攻击,想着没事启用了也行,万一有内网设备沦陷还能阻止dos攻击其他设备,然后。。。。。。。。本文纯记录贴,想要答案直接往后翻。
就发现windows无法时间同步了,这个我还不是当场就发现,是后面有次装windows虚拟机,发现时间一直不对,无法从互联网同步时间,一开始以为是公共ntp服务的问题,换了几个地址都不行,感到事情不对劲,一开始我就怀疑是防火墙规则的问题,但是吧,我看了下自己防火墙和交换机的配置,都没问题,我也不可能阻止ntp(网络时钟同步)服务,而且其他服务都正常,网络都连通,唯独windows的时间同步不行,又是一番排查。
这里就不打不说某些搜索引擎,收录的都是什么回答,牛头不对马嘴,不是让你下各种工具就是答非所问,一点有用的信息都没有。最后我也是自行排查出来,那时候chatgpt都还没有出来,虽然选择问ai也是牛头不对马嘴,只能说这个问题实在是太冷门了。
经过一番折腾,现在是知道了以下几个情况:(1)所有设备可以正常上网,只有ntp服务不可用,而且就windows会这样,手机软路由等设备时间同步正常。(2)系统等防火墙并没有直接阻止ntp规则且公共ntp服务都正常。
基于上述两点,我一开始是怀疑ntp的端口(udp 123)是不是被什么东西阻止了,于是我使用nmap工具对公共ntp的udp 123端口进行测试,发现是连通的,也就是说,从我本地是可以访问到公共udp 123端口,那就非常诡异了,既然能连通为什么就是无法同步时间呢?此时我就没抓包了(当然可能抓包也没结果),因为我猜测是windows自己的锅,毕竟非windows设备是正常的,甚至在windows上用nmap工具测试端口也是连通。那我决定,重装系统(当然是重装虚拟机),遇事不决就重装,结果不用想,没用。
此时我已经没办法了,因为很显然,我并不清楚到底是哪一部分出现了问题,那就只能进行最后的排查步骤,最小化系统,看到底是那部分出现了问题,先让自己的电脑连接手机热点,发现是可以同步,但是换到自己的网络就不行,那问题还是出现在自己网络上,可是为什么nmap可以测试通呢,难道是交换机的问题?但我仔细看了交换机的acl规则,没问题啊。既然如此,那就直接把主机接到路由器试试,欸嘿,可以同步了。
好了,那行在问题就在交换机配置上,可是我从头到尾看了遍,也没有发现有什么规则会阻止ntp服务啊,干脆一不做二不休,重置交换机。重置后就可以同步成功了,那问题到底在哪呢?我选择很傻瓜式的办法,按照我一开始的配置流程,每配置一部测试下是否能同步时间,结果就发现我启用了交换机下的dos攻击防护就会同步失败。经过实际测试,发现是“Blat Attack”规则的问题,关闭这个规则就可以正常同步了。
那现在就要解释下为什么会这样,这不是防止dos攻击吗,为什么会阻止了windows ntp服务,而且只阻止了windows,其他系统/服务不阻止呢?回到“Blat Attack”规则本身,这个规则是阻止源端口与目的端口相同的连接,什么意思呢,例如我从“192.168.1.2:123”访问“192.168.1.3:123”就会被阻止,因为源端口和目的端口都为123,就会误认为dos攻击,从而被交换机丢弃对应的数据包。但是通常来说,源端口和目的端口不太可能一致,例如大部分情况下应该是“192.168.1.2:456”访问“192.168.1.3:443”,但是在windows这,系统自带的ntp服务访问的时候源端口和目的端口是一致的,所以就被丢弃了.........至此排查完毕。
实际上这个问题不算冷门,在谷歌用“Blat Attack ntp”关键词搜索,就可以发现有几个相同问题,但是很显然,我一开始不知道是“Blat Attack”规则的问题,所以才排查了半天..........