Linux时间同步chrony:Linux服务器chrony

Linux时间同步chrony:Linux服务器chrony

为什么需要chrony?


Linux服务器如果时间不准,会直接导致日志错乱、证书验证失败、数据库事务异常等问题。chrony 是新一代时间同步服务,比传统ntpd更精准、启动更快、在网络抖动时表现更好。

目前主流的 CentOS 8+、Ubuntu 20.04+ 以及 Debian 10+ 都默认推荐 chrony。

本文全程以 CentOS 7/8 和 Ubuntu 22.04 为例,零基础也能照着做。


第一步:安装并启动chrony


1.1 安装命令



  • CentOS / RHELyum install chrony -y(CentOS 7)或 dnf install chrony -y(CentOS 8+)

  • Ubuntu / Debianapt install chrony -y


安装完成后检查状态:


systemctl status chronyd

如果未启动,执行 systemctl start chronyd 并设置开机自启:


systemctl enable chronyd

1.2 配置文件位置


主配置文件:/etc/chrony.conf(部分旧版本是 /etc/chrony/chrony.conf)。

修改前建议备份:cp /etc/chrony.conf /etc/chrony.conf.bak


第二步:配置时间源(NTP服务器)


2.1 默认配置说明


打开配置文件,你可能会看到类似这样的行:


pool 2.centos.pool.ntp.org iburst

pool 代表从一组服务器自动选择;iburst 表示启动时快速发送多个请求以加速同步。


2.2 修改为国内常用NTP服务器


对于大陆用户,推荐使用阿里云或腾讯云的NTP服务器,网速快且稳定。

将配置中的 pool 或 server 行替换为:


server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst

也可以添加多个以作冗余。

如果是内部网络,可以指向自己的NTP服务器。


2.3 允许客户端同步(服务端配置)


如果你想让这个服务器作为内网的NTP源,需要在配置中添加允许客户端的网段:


allow 192.168.1.0/24

默认 chrony 只监听本地,如果要对外同步,还需确认防火墙已放行UDP 123端口(见避坑部分)。


第三步:重启服务并验证时间同步状态


3.1 应用配置


保存配置文件后重启 chronyd:


systemctl restart chronyd

3.2 查看同步状态


使用 chronyc 命令检查:


chronyc sources -v

输出中 ^* 表示当前正在同步的服务器(星号标记为最优源),如果看到 ^? 表示同步失败。

更详细的跟踪信息:


chronyc tracking

重点关注 Last offset(上次偏差)和 Leap status(应显示 Normal)。


3.3 手动强制同步(可选)


chronyc -a makestep

注意:如果时间偏差过大(超过配置的阈值),makestep 会立即调整时间,适合初始同步。


第四步:高频问题与避坑指南


4.1 防火墙未放行UDP 123端口



  • 防火墙拦截:chrony使用UDP 123端口。检查是否放行:


firewall-cmd --list-ports

添加规则:


firewall-cmd --add-port=123/udp --permanent
firewall-cmd --reload

如果是宝塔面板,在“安全”页面添加放行端口 123(UDP)。


4.2 SELinux导致无法连接


SELinux 可能阻止 chrony 访问网络时间源。

临时关闭(不推荐生产):setenforce 0,永久关闭需修改 /etc/selinux/config

建议保留 SELinux 启用,设置 chrony 域为 chronyd_t 并放行:


setsebool -P chronyd_connect_any on

4.3 时区设置错误


时间同步只保证UTC时间正确,但系统显示的时间可能因为时区不对而“看着不对”。

检查时区:


timedatectl list-timezones | grep Shanghai
timedatectl set-timezone Asia/Shanghai

4.4 chrony客户端无法同步服务端



  • 客户端配置:同前文,将 server 指向服务端IP,如 server 192.168.1.10 iburst

  • 确保服务端的 allow 行包含客户端网段。

  • 检查双方防火墙是否放行UDP 123。

  • 使用 chronyc sources -v 查看客户端是否能收到响应。


第五步:效果验证与日常检查


时间同步稳定后,建议定期执行以下检查:


chronyc tracking | grep -E "(Ref time|Stratum|Last offset)"

理想情况下 Last offset 应在 ±0.01 秒以内。

如果想看更详细的历史:


chronyc sourcestats -v

最后,确认系统时间已同步:


date

与标准时间(例如手机或阿里云NTP项目)对比即可。


如果你正在配置 Linux时间同步chrony,建议先按本文步骤完整执行,再根据自己的网络环境微调服务器列表;

遇到异常时优先检查防火墙、SELinux 和 allow 配置。

熟练之后,之后还可以将 chrony 配置纳入自动化运维工具(如 Ansible)中统一管理。

分享到:
上一篇
WordPress企业官网制作:手把手搭建WordPress
下一篇
Docker部署Kibana日志分析:零基础用Docker快
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意