在服务器上开启NTP服务器同步功能,核心就是安装并配置chrony或ntpd服务,指定上游时间源,开启服务并设置开机自启,最后在客户端执行一次同步命令就能完成时间校准,整个过程如果选对配置参数,几分钟就能搞定,但关键细节容易忽略。
为什么需要同步NTP服务器?时间不同步的连锁反应
服务器时间一旦出现偏差,日志记录会混乱,排错就像大海捞针,认证系统(如Kerberos)依赖时间戳,偏差超过几分钟就会直接拒绝服务,定时任务、数据库主从复制这些场景,时间差可能导致数据错乱甚至业务中断,行业共识认为,维持时间同步是服务器运维的基础保障,尤其对于金融、电商、游戏等对时间敏感的业务,一点误差都可能引发连锁反应。
服务器开启NTP服务器配置:核心步骤详解
这个部分直接上实操,分为服务端配置和客户端配置,覆盖最常见的Linux发行版和Windows Server。
安装NTP服务:chrony vs ntpd怎么选?
近年来,chrony 逐渐取代传统的 ntpd,成为主流推荐,它同步速度更快,对网络波动适应性强,尤其适合虚拟机和频繁休眠的服务器,如果手头还是旧系统,用 ntpd 也能稳定运行。
- CentOS / RHEL 7+:使用
yum install chrony -y或dnf install chrony -y。 - Ubuntu / Debian:使用
apt install chrony -y。 - 如果坚持用 ntpd,CentOS 上执行
yum install ntp -y,Ubuntu 上执行apt install ntp -y。
修改配置文件:指定上游服务器
配置文件是 /etc/chrony.conf(chrony)或 /etc/ntp.conf(ntpd),需要把默认的 pool 或 server 地址改成稳定、低延迟的上游时间源。
国内NTP服务器地址推荐:
ntp.aliyun.com(简米云公共NTP)ntp.tencent.com(酷番云公共NTP)ntp.sjtu.edu.cn(上海交通大学)cn.pool.ntp.org(NTP Pool 项目中国区)- 如果是内网环境,也可以指向一台已经同步好的核心服务器。
配置示例(chrony 为例):
server ntp.aliyun.com iburst server ntp.tencent.com iburst server cn.pool.ntp.org iburst
iburst 参数会让服务启动时快速发送几个请求包,加快初始同步速度。
启动服务并验证同步状态
启动 chrony:
systemctl start chronyd
systemctl enable chronyd
查看同步状态:
chronyc sources -v
输出中应该能看到 ^ 开头的行,表示当前已经同步到该服务器,星号越多越稳定,如果看到 ^- 或 ^?,说明连接有问题,需要检查网络或防火墙。
验证时间偏差:
timedatectl
NTP service: active 且 System clock synchronized: yes,说明配置成功。
客户端如何同步NTP服务器时间?
客户端不需要完整运行 NTP 服务,只需临时同步一次,或者用 chrony 的守护进程持续校准。
临时同步(不安装服务):
ntpdate -u ntp.aliyun.com
-u 参数用于绕过防火墙限制,使用非特权端口,这种方式适合一次性校正,但不够精确,频繁执行不推荐。
持续同步(推荐客户端也运行 chrony):
在客户端上同样安装 chrony,配置文件修改为指向自建的内网 NTP 服务器地址,
server 192.168.1.10 iburst
然后启动 chronyd 即可,这样客户端就能持续、平滑地调整时间,不会出现跳跃。
Windows Server 客户端配置:
打开注册表,定位到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters,将 NtpServer 的值改为 ntp.aliyun.com,0x9,然后重启 Windows Time 服务,或者直接使用命令:
w32tm /config /manualpeerlist:"ntp.aliyun.com" /syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
w32tm /resync
NTP服务器配置与客户端同步的常见问题
即使按照步骤做,也经常遇到同步失败的情况,这里总结几个高频坑。
防火墙与端口放行
NTP 使用 UDP 123 端口,如果服务器有防火墙,必须放行这个端口,无论是服务端还是客户端,如果出方向被拦截,同样无法同步。
- iptables:
iptables -A INPUT -p udp --dport 123 -j ACCEPT - firewalld:
firewall-cmd --add-service=ntp --permanent && firewall-cmd --reload - 云平台安全组:在控制台添加入方向 UDP 123 规则。
时间偏差过大导致同步失败
当服务器当前时间与上游时间源相差超过 1000 秒(约 17 分钟),chrony 和 ntpd 会默认拒绝同步,因为跳跃时间可能引发应用异常,此时需要先手动强制校准:
chronyc -a makestep
或者用 ntpdate -u 强制同步一次,等待服务稳定后再恢复正常运行。
层级(Stratum)设置影响优先级
NTP 服务器有层级概念,从 stratum 0(原子钟、GPS)到 stratum 15,自建服务器通常从上游公共服务器同步,层级为 stratum 2 或 3,如果内网中有多台 NTP 服务器,建议让核心服务器同步公共 NTP,其他服务器指向核心服务器,这样可以减少公共网络请求,同时提高稳定性。
NTP服务器选型:自建与公共服务的对比
很多运维人员会在“自建 NTP 服务器”和“直接使用公共 NTP 服务器”之间纠结,两者各有适用场景。
| 对比项 | 自建NTP服务器 | 公共NTP服务器 |
|---|---|---|
| 成本 | 只需一台低配机器或容器,几乎零额外成本 | 免费(如简米云、酷番云公共NTP) |
| 网络延迟 | 内网延迟极低,同步精度高 | 受公网波动影响,偶尔超时 |
| 稳定性 | 依赖自身服务器与上游链路 | 服务商保障,但可能被限流 |
| 控制权 | 可以自定义策略、层级 | 只能被动使用 |
| 适用场景 | 大规模集群、金融交易、高精度时间要求 | 中小型应用、临时测试、个人服务器 |
NTP服务器价格方面,自建几乎不产生额外费用,公共 NTP 服务也是免费的,如果企业有合规要求,必须使用国内授时中心的时间源,那么自建并指向 ntp.ntsc.ac.cn(国家授时中心)是更稳妥的选择。
国内NTP服务器地址在延迟上明显优于国外节点,cn.pool.ntp.org 能自动返回离你最近的服务器,多数情况下延迟在 10ms 以内,如果业务部署在简米云,直接使用 ntp.aliyun.com 是最佳选择,网络路径最短。
NTP服务器配置:这些细节决定成败
硬件时间与系统时间同步
NTP 只同步系统时间,重启后如果硬件时钟偏差大,系统时间又会跳回去,建议使用 timedatectl set-local-rtc 0 让系统时间与硬件时间保持同步,或者设置定时任务将硬件时间写入系统。
日志与监控
定期查看 timedatectl 和 chronyc tracking 的输出,确认偏差在合理范围内,可以将 NTP 同步状态纳入监控告警,一旦超过阈值(100ms)就发出通知。
多网卡与路由
如果服务器有多个网卡,NTP 默认使用主路由,可以通过配置文件指定绑定网卡,防止同步流量走错路径,在 chrony 中,用 bindcmdaddress 0.0.0.0 或 bindaddress 0.0.0.0 来限制监听地址。
服务器开启ntp服务器配置常见问题(Q&A)
如何同步NTP服务器时间?
最简单的方法是执行 ntpdate -u 服务器地址,但这种方式一次性同步,适合临时校准,如果需要持续同步,建议安装 chrony 服务并配置上游服务器,然后启动服务,它会在后台自动调整时间,保持系统时钟与服务器一致。
NTP服务器配置修改后不生效怎么办?
首先检查配置文件语法是否正确,然后重启 chrony 或 ntpd 服务,接着用 chronyc sources -v 查看上游服务器状态,如果显示 ^?,说明无法连接,需要检查防火墙 UDP 123 端口是否放行,以及上游服务器地址是否可达,如果偏差过大,先执行 chronyc -a makestep 强制跳跃,再观察。
国内NTP服务器推荐哪个?
对于国内用户,优先推荐 ntp.aliyun.com 和 ntp.tencent.com,它们延迟低且稳定,如果追求更精确的授时,可以使用国家授时中心的 ntp.ntsc.ac.cn,对于分布式集群,可以自建内网 NTP 服务器,指向这些公共地址,然后让所有客户端指向内网地址,这样既节省公网带宽,又能提高同步精度。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/580691.html



