设置里点「立即同步」,Windows报「时钟同步失败」,Linux下chronyd一直卡在init状态。手机电脑的时间慢慢飘了几分钟,也和它有关。这类问题十有八九卡在端口上,先把结论放前面:ntp端口是UDP 123,客户端和服务器都用它。
ntp端口为什么是123
NTP协议只绑定UDP 123,请求和响应都走它,多数实现连客户端的源端口也固定用123。它没有TCP版本,防火墙规则里写成放行TCP 123等于白写。路由器上的NTP校时同样走123,改了NTP服务器没效果,多半是出口没放行这个UDP端口。
同步失败的排查顺序
Windows自带工具能直接测链路:
w32tm /stripchart /computer:ntp.aliyun.com /samples:3 /dataonly
有偏移输出说明链路和端口都通,一直超时就查两处:本机防火墙有没有拦Windows Time服务,公司出口设备有没有放行UDP 123。想确认本机123端口的占用情况,用netstat -ano配合findstr过滤。Linux这边用chronyc sources -v看上层源,带星号标记的才是在用的;临时手动校时用ntpdate加服务器地址,走的同样是123。企业里终端装了准入或防护软件时,UDP 123常被当成可疑流量拦下,白名单加上就好。
自建时间服务器的几个注意
- 域环境让客户端直接跟域控同步,别单独指公网地址
- 入站规则放行UDP 123时把范围限制在内网网段,别开成任意来源
- 上层时间源选近的,跨国源往返延迟大,校时误差反而高
- 服务器重启后确认w32time或chronyd是自动启动,别过几天又飘了
实际判断:公网设备用系统自带的同步功能加默认的ntp端口就够,同步失败先查本地防火墙,再找网管放行出口,别一上来就换同步软件。