很多人平时不会特意去管服务器的网络对时,只有碰到日志里时间戳错乱、集群认证莫名失败的时候,才察觉到时间偏差带来的各类故障。NTP协议就是专门用来处理时间同步的,依靠UDP 123端口向时间服务器获取标准时间,把本地主机时钟校正到世界协调时。国内可以直接选用的NTP源数量不少,配置操作本身不算复杂,下面整理好可用的服务器地址,同时介绍几种主流操作系统的配置办法。
国内可用的 NTP 服务器
国家授时中心是权威性最高的选择,域名ntp.ntsc.ac.cn,对应的IPv4地址为210.72.145.44,服务器部署在陕西临潼,适合对时间准确性、可信度要求高的场景。它还提供ntp1.ntsc.ac.cn到ntp3.ntsc.ac.cn多个节点,能够轮换使用。

各大云厂商提供的NTP源,在延迟和稳定性方面表现更好,得益于大量机房节点与充足带宽,可以承受短时间内的高并发访问。阿里云提供ntp.aliyun.com,外加ntp1.aliyun.com至ntp7.aliyun.com整套域名,ntp.aliyun.com作为主入口,自带负载均衡。腾讯云公网NTP地址为ntp.tencent.com以及ntp1.tencent.com到ntp5.tencent.com,旧的time.cloud.tencent.com系列地址依旧能够正常使用。华为云、百度云同样配有对应的NTP域名。如果你使用的是某家云厂商的服务器,优先选择厂商内网NTP地址,延迟能够压缩至毫秒级别。
教育网、科研网用户优先选用CERNET和CSTNET节点,ntp1.cernet.edu.cn、ntp1.cstnet.cn这类域名在教育网内部访问速度会更理想。国内公共NTP池节点是0.cn.pool.ntp.org到3.cn.pool.ntp.org,由全球分布式项目维护,自带负载均衡,适合作为备用时间源。
Linux 上的配置
目前大部分Linux发行版已经从ntpd切换到chrony。Ubuntu、Debian系统执行apt install chrony安装,CentOS、RHEL则使用yum install chrony或者dnf install chrony。
安装完成后编辑/etc/chrony.conf,注释掉默认的海外时间源,填入国内时间服务器。有两种写法,server用来指定单台服务器,pool指向一组服务器池,当池内某节点无法连通,chrony会自动切换其他节点。推荐使用pool配置,维护起来更省心:
pool ntp.aliyun.com iburst
pool ntp1.ntsc.ac.cn iburst
pool 0.cn.pool.ntp.org iburst
iburst参数的作用是首次建立连接时快速发送多组数据包,加快同步流程。修改配置后执行systemctl restart chronyd重启服务,再运行systemctl enable chronyd设置开机自动启动。验证同步状态执行chronyc sources -v,输出内容中带星号标记的行,就是当前正在使用的上游时间源。
如果系统依旧使用老旧ntpd服务,配置文件路径为/etc/ntp.conf,书写格式相近,添加server ntp.aliyun.com iburst这类配置行即可,重启服务命令为systemctl restart ntpd。
Windows 上的配置
Windows自带W32Time服务,默认指向time.windows.com,这个地址在国内经常出现同步失败或者延迟偏高的情况,替换成国内源后会改善很多。
图形界面操作直观简单:打开控制面板找到“日期和时间”,切换到“Internet 时间”标签页,点击“更改设置”,在服务器输入框填写ntp.aliyun.com或者ntp.ntsc.ac.cn,点击“立即更新”,提示同步成功就完成。如果需要管理大量服务器,建议通过组策略统一下发配置,不用逐台手动修改。
命令行方式可控性更强。以管理员权限打开命令提示符窗口:
w32tm /config /manualpeerlist:"ntp.aliyun.com,0x8 ntp.ntsc.ac.cn,0x8" /syncfromflags:manual /update
w32tm /resync
第一条命令配置手动上游服务器列表,0x8代表客户端模式,仅从上游获取时间,不对外提供时间服务。第二条命令立刻发起一次时间同步。查看同步状态使用w32tm /query /status,可以查看当前配置与最近一次同步结果。
macOS 上的配置
进入系统设置的通用板块,打开“日期与时间”,开启“自动设置时间和日期”,在服务器输入框填入国内NTP地址即可。系统默认使用time.apple.com,更换为ntp.aliyun.com之后,国内环境下同步速度会明显提升。
配好之后排一下故障
NTP协议基于UDP 123端口传输,和ping用到的ICMP协议相互独立。ping能够连通,不代表NTP可以正常通信,反过来也是一样。Windows检测UDP连通性,执行w32tm /stripchart /computer:ntp.aliyun.com /samples:5,能够返回时间偏差就说明链路正常。Linux环境可以用ntpdate -q ntp.aliyun.com或者chronyd -q 'server ntp.aliyun.com iburst'快速测试连通性。
防火墙是最常见的故障点。Linux使用firewalld放行命令firewall-cmd --add-service=ntp --permanent,接着执行--reload;ufw防火墙使用ufw allow 123/udp。如果在局域网内部搭建NTP服务器,服务端和客户端两端的123端口都要放行,仅单侧开放端口无法完成同步。
配置文件的低级错误也需要留意。server行的域名只要输错一个字符,同步就会失效;restrict规则限制过严,会直接拒绝客户端请求;修改配置之后没有重启服务,新参数不会生效。Windows手动配置NTP源时,/manualpeerlist后面务必加上,0x8,缺少该参数会造成同步策略不完整。
顺便检查服务运行状态。Windows执行sc query w32time确认服务处于运行状态,Linux执行systemctl status chronyd查看是否出现inactive。服务正常运行,但chronyc sources输出里没有带星号的源,说明上游NTP服务器无法访问,更换其他时间源重试。