微信优化

weixinyouhua

chrony配置怎么设置,如何同步系统时间,chrony配置文件详解

2026-09-06 22:33:09

chrony配置的核心答案是:修改/etc/chrony.conf文件,配置server或pool指定时间源,通过allow/deny控制访问权限,设置makestep让系统时间快速同步,最后重启chronyd服务并验证。这篇文章将用最直接的方式,带你从零开始玩转chrony时间同步,覆盖配置文件解读、常见场景实测和坑位避雷,保证你看完能直接上手。

为什么大家都在从NTP迁移到chrony:chrony和ntp区别到底在哪

很多老运维习惯用ntpd守护进程,但近年新装的操作系统默认都带chrony,这是有原因的,业内专家指出,chrony在性能、精度和适应性上全面超越老牌NTP服务,尤其适合现代云计算和虚拟化环境。

chrony的核心优势体现在三个层面:

  • 同步速度:系统启动后,chrony可以在十几秒内完成初步时间校准,而ntpd往往需要几分钟到几十分钟的稳定过程,这对服务器快速上线很重要。
  • 网络适应性:chrony支持“时间漂移率”的持续追踪,即使网络断开半小时,恢复后也能快速补偿误差,而ntpd在长时间断网后,往往需要手动干预。
  • 时钟硬件处理:chrony对服务器硬件时钟的温度漂移、老化效应有更智能的补偿算法,在虚拟机频繁迁移的场景下,chrony的适应性尤其明显。

从配置复杂度看,chrony.conf的语法比ntp.conf更简洁,多数情况下,你只需要写几行server指令就能跑起来,统计显示,国内大部分企业在2026年后新建的Linux服务器,默认初始化的时间同步工具就是chrony。

如果你追求的是毫秒级精度、频繁重启的虚拟机、或者需要在内网搭建时间源,chrony几乎是不二选择,如果你还在用老代码维护老机器,ntpd也并非不能用,但新项目建议直接上chrony。

chrony怎么配置:一份可以直接抄的实战手册

以下配置基于CentOS 7/8、Rocky Linux、Ubuntu 20.04+等主流发行版,操作路径通用,为了满足不同场景,我拆成三步走。

第一步:安装与启动chrony服务

大多数系统默认已安装,未安装时手动操作:

# Debian/Ubuntu
apt install chrony -y
# RHEL/CentOS/Rocky
yum install chrony -y

安装后启动并设为开机自启:

systemctl enable --now chronyd

这里注意,chrony的服务名是chronyd,配置文件是/etc/chrony.conf,别搞混。

第二步:编辑chrony配置文件从简单到进阶

这一节是核心中的核心,打开文件后,默认有几行注释模板,我们按需修改,配置的核心就三件事:用什么源、允不允许别人来同步、时间拉偏了怎么校正。

配置时间源(server/pool/peer)

最常用的是server指令,指向上游NTP服务器:

# 国内常用公共NTP源(公共DNS/简米云)
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp.tencent.com iburst
# 或者使用pool批量指定(适合自动发现多个源)
pool 2.centos.pool.ntp.org iburst

chrony配置怎么设置,如何同步系统时间,chrony配置文件详解

iburst参数的含义是:前四次同步请求快速连发,让初次同步更快收敛,这个参数强烈建议加上,你还可以配置本地硬件时钟作为最后防线:

# 允许使用本地时钟作为后备时间源
local stratum 10

设置允许同步的网段

如果你只做客户端,不对外提供服务,这步可跳过,如果要当内网时间服务器,必须加:

# 允许192.168.1.0/24网段的机器来同步
allow 192.168.1.0/24
# 禁止某个网段
deny 192.168.2.0/24

时间跳跃矫正策略makestep指令

这是最关键但常被忽略的配置,它控制当系统时间与服务器时间偏差很大时,是“一步跳变”还是“缓慢微调”。

# 设置在后三次同步中,如果偏差超过1秒,直接步进校正
makestep 1 3

多数情况下,服务器刚开机时CMOS电池可能走时不准,偏差几十秒到几分钟都不奇怪,如果没有makestep,chrony会花很长时间慢慢调,导致日志时间戳错误、服务启动异常,有了这个参数,前三次同步只要偏差超过1秒就直接跳变,等于快速启动校准。

企业内部环境建议改成更激进的参数:

makestep 0.1 1

含义是只要有0.1秒偏差,第一次同步就校正,这保证关键业务系统的时间精度。

其他高频参数

# 设置chrony上层源的时间评估窗口(默认值够用,可不动)
# minpoll 4
# maxpoll 6
# 日志轮转策略
logdir /var/log/chrony

第三步:验证与服务重启

保存配置后,重启服务并验证状态:

systemctl restart chronyd
systemctl status chronyd

内网环境chrony时间同步配置:企业局域网的黄金方案

生产环境最典型的场景是:内网机器无法访问外网,需要一台服务器做时间源头,其他机器都指向它,这个场景用chrony配置非常简单。

假设我们有一台内网服务器192.168.3.10,它能访问公网,作为整个内网的时间根。

主时间服务器(192.168.3.10)配置:

# /etc/chrony.conf 核心内容
server ntp.aliyun.com iburst
allow 192.168.0.0/16
local stratum 10
makestep 1 3

allow指令让内网机器能访问本机的udp 123端口,local stratum 10的意思是,即使公网断了,这台机器也可以用本地时钟继续为内网提供时间。

内网客户端配置(其他所有机器):

# /etc/chrony.conf
server 192.168.3.10 iburst
# 注释掉所有其他server/pool行

客户端配置完后,重启chronyd,然后运行chronyc sources -v

chrony配置怎么设置,如何同步系统时间,chrony配置文件详解

查看时间源状态,第一行会显示^(表示当前已同步成功)。

实际测试中,内网通过chrony同步的精度通常在1至1毫秒之间,远优于公网同步的几十毫秒,这个方案也常被用于金融交易系统、日志审计集群、分布式数据库等需要高精度时间戳的场景,如果你有堡垒机、跳板机集群需要时间统一,这个模板可以直接套用。

chrony配置文件参数详解:彻底读懂每一行的含义

网上很多教程只教你抄配置,不解释参数含义,出了问题就抓瞎,这里把最重要的几个参数给你彻底讲透。

参数名 作用 常见取值 备注
server 指定单次同步服务器 server 域名 iburst 可填多个,建议2-4个
pool 指定多个服务器池 pool 域名 iburst 自动发现同一池内多台服务器
local stratum 本地时钟作为后备源 local stratum 10 无外网时让本机仍能对外提供时间
allow / deny 访问控制 allow 192.168.1.0/24 默认只允许本机访问
makestep 时间跳跃策略 makestep 1 3 偏差超过1秒,前3次同步直接跳变
rtcsync 内核RTC自动同步 rtcsync 开启后内核每11分钟同步硬件时钟
logdir 日志目录 logdir /var/log/chrony 按需修改路径

还有一个参数必须说明,那就是rtcsync,在很多发行版的默认配置里,这一行是注释掉的,它的作用是让内核周期性把系统时间写回硬件时钟(CMOS), 防止重启后时间又丢了,建议在物理机上开启它:

rtcsync

在虚拟机环境,由于硬件时钟由宿主机虚拟化提供,这个参数重要性稍低,但加上也无妨。

常见的chrony故障排查:三大高频坑位解决思路

配置不生效时,通常不是参数写错,而是几个隐蔽坑位,逐个排查你就能快速定位。

排查1:服务已经启动但状态一直显示“Unsynchronized”

用chronyc tracking查看当前状态,如果显示Leap status为Unsynchronized,表示还没同步成功,常见原因:

  • 防火墙拦了udp 123端口,放行命令:firewall-cmd --add-service=ntp --permanent
  • 上游时间源无法连通,用chronyc sources -v查看是否有符号,有则表示该源不可达。
  • SELinux拦截,检查/var/log/chrony目录下日志的Permission denied问题。

排查2:时钟同步后时间跳跃不生效

如果是刚刚修改配置文件,用chronyc makestep强制手动步进一次,再观察是否恢复,如果频繁出现时间跳跃,说明硬件时钟老化严重,考虑更换主板电池或者依赖NTP源做长期微调。

chrony配置怎么设置,如何同步系统时间,chrony配置文件详解

排查3:内网客户端同步失败

客户端如果显示^?,先测试服务端端口是否可达:

telnet 192.168.3.10 123

如果端口通,检查服务端allow配置是否覆盖了客户端网段,注意,allow后配置的掩码是CIDR格式,不允许写255.255.255.0这种写法。

chrony配置的日常维护与监控

配置完成不代表一劳永逸,建议把以下命令加入日常运维巡检清单:

  • chronyc tracking:查看系统当前时间偏差、同步源、漂移率。
  • chronyc sources -v:查看上游服务器状态,每一行开头的字符表识意义为:^为当前同步源,^+为可作为备用的源,^?为连接失败。
  • chronyc sourcestats -v:查看每个时间源的统计资料,包括延迟和抖动。
  • chronyc ntpdata:查看服务器间NTP会话详情,适合深度调优。

用crontab定期将上述输出追加到日志文件,可以形成长期时间质量报表,方便在系统异常时回溯。

chrony配置真正需要记住的核心就三句话:挑好时间源、写好makestep、配好allow网段。把这三件事做好,百分之九十的服务器时间同步问题都能解决,它比NTP配置更简洁、同步更快、容错能力更强,是当前Linux运维时间同步的最优解。

关于chrony配置的常见问题解答

问:chrony配置文件和NTP配置文件可以共存吗?chrony的优先级如何?

chrony的配置文件是/etc/chrony.conf,与NTP的/etc/ntp.conf互不兼容,不能直接混用,两种服务不能同时运行在同一端口,安装chrony后,ntpd服务通常会被自动禁用,如果手动切换,必须先停掉ntpd再启动chronyd,否则会报端口冲突错误。

问:在内网没有外部网络的情况下,如何保证时间尽量准确?

这是企业内网最常见的场景,如果没有GPS或者北斗授时设备,只能依靠服务器的硬件时钟,在配置中启用local stratum,让本机作为时间源对外提供服务,然后设置rtcsync让硬件时钟每11分钟同步一次系统时间,要定期(例如每周)人工或通过运维系统校准该根服务器的时钟,行业共识认为,在没有外部授时源的纯内网环境中,时间精度只能维持在秒级水平,不建议用于对时间极度敏感的交易系统,有条件的公司可以安装NTP专用授时硬件(如北斗GPS双模授时服务器),通过网口接入交换机,精度可达微秒级。

问:为什么我配置了server指令,但系统时间一直没有变化?

先检查偏差量,用chronyc tracking查看System time字段的绝对值,如果偏差在几毫秒以内,chrony会认为已经处于同步状态,不需要大幅调整,如果偏差超过1秒,再检查makestep参数是否生效,偏差过大时chrony会默认拒绝调整,最后检查chrony.log日志,看是否有Net change回执,如果没有,通常是UDP 123端口被防火墙策略拦截。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待