Linux服务器Chrony时间同步配置与校准的操作指南

 更新时间:2026年08月05日 09:06:02   作者:sysrootsa  
chrony 是 Network Time Protocol,也就是 NTP 网络时间协议 的一种实现,可以用来同步系统时间,也可以作为 NTP 服务端给其他机器提供时间服务,本文带你一步步用chrony同步内网NTP服务器,从检查网络连通性到写入硬件时钟RTC,需要的朋友可以参考下

Chrony 不是某个标准缩写,一般就作为软件套件名称使用,写作 chrony

它的作用可以理解为:

chrony 是 Linux 上用于时间同步的一套 NTP 实现。

官方对它的定义是:chrony 是 Network Time Protocol,也就是 NTP 网络时间协议 的一种实现,可以用来同步系统时间,也可以作为 NTP 服务端给其他机器提供时间服务。

一、背景说明

生产环境中,服务器时间不准确会影响日志排查、备份任务、监控告警、数据库审计等工作。本次操作用于将 Linux 服务器统一同步到公司内网 NTP 时间服务器,并在同步完成后写入硬件时钟 RTC。

说明:本文中的 IP 地址均为示例地址,实际操作时请替换为现场真实地址。

示例环境:

目标服务器IP:192.168.100.10
内网NTP服务器IP:192.168.100.1

二、检查当前系统时间

登录目标服务器后,先查看当前系统时间:

date

示例:

2026年 06月 23日 星期二 07:44:23 CST

如果发现服务器时间与实际时间存在明显偏差,例如快了或慢了几分钟,需要继续检查时间同步配置。

三、检查 NTP 服务器网络连通性

先确认目标服务器能否访问内网 NTP 服务器:

ping -c 4 192.168.100.1

正常结果类似:

64 bytes from 192.168.100.1: icmp_seq=1 ttl=63 time=0.100 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=63 time=0.095 ms
64 bytes from 192.168.100.1: icmp_seq=3 ttl=63 time=0.102 ms
64 bytes from 192.168.100.1: icmp_seq=4 ttl=63 time=0.098 ms

如果出现:

Destination Host Unreachable
100% packet loss

说明目标服务器到 NTP 服务器网络不可达,需要先检查网关、路由、防火墙、VLAN 或 NTP 服务器状态。

需要注意:

检查项协议/端口说明
ping 连通性测试ICMP 协议不使用 TCP/UDP 端口
NTP 时间同步UDP 123 端口Chrony/NTP 实际同步时间使用

也就是说,ping 只是基础网络连通性检查,不代表 NTP 服务一定正常。
如果网络策略较严格,需要确认目标服务器到 NTP 服务器的 UDP 123 端口 已放通。

四、检查时间同步服务

查看 chronyd 服务状态:

systemctl status chronyd --no-pager

正常应看到:

Active: active (running)

如果 chronyd 未启动,可以执行:

systemctl enable chronyd
systemctl start chronyd

五、查看当前 Chrony 配置

查看当前配置的时间源:

grep -nE '^\s*(server|pool)' /etc/chrony.conf

可能看到类似默认公网 NTP 源:

3:server 0.centos.pool.ntp.org iburst
4:server 1.centos.pool.ntp.org iburst
5:server 2.centos.pool.ntp.org iburst
6:server 3.centos.pool.ntp.org iburst

如果公司要求统一使用内网 NTP,建议将时间源统一调整为公司内网 NTP 服务器。

六、备份配置文件

修改前先备份:

cp -a /etc/chrony.conf /etc/chrony.conf.bak.$(date +%F_%H%M%S)

确认备份文件:

ls -lh /etc/chrony.conf.bak*

七、配置内网 NTP 服务器

编辑配置文件:

vim /etc/chrony.conf

将原有公网 NTP 源注释掉:

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

新增公司内网 NTP 服务器:

server 192.168.100.1 iburst prefer

参数说明:

参数说明
server指定时间同步服务器
iburst服务启动后快速同步
prefer优先使用该时间源

也可以使用命令方式添加:

grep -q '^server 192.168.100.1' /etc/chrony.conf || sed -i '3iserver 192.168.100.1 iburst prefer' /etc/chrony.conf

如需批量注释默认公网源,可执行:

sed -i -E 's/^(server[[:space:]]+[0-3]\.centos\.pool\.ntp\.org[[:space:]]+iburst)/#\1/' /etc/chrony.conf

八、检查配置结果

执行:

grep -nE '^\s*(server|pool)|^#server' /etc/chrony.conf

正常结果示例:

3:server 192.168.100.1 iburst prefer
4:#server 0.centos.pool.ntp.org iburst
5:#server 1.centos.pool.ntp.org iburst
6:#server 2.centos.pool.ntp.org iburst
7:#server 3.centos.pool.ntp.org iburst

确认只有内网 NTP 服务器处于启用状态。

九、重启 Chrony 服务

执行:

systemctl restart chronyd

查看服务状态:

systemctl status chronyd --no-pager

确认状态为:

Active: active (running)

十、验证是否同步成功

查看当前时间同步源:

chronyc sources -n -v

正常结果应类似:

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.100.1                 3   6    37     8   +1083ns[ +163us] +/- 143ms

重点看第一列:

标识含义
^*当前正在使用的时间源
^?配置了但不可达
^x时间源异常

如果看到:

^* 192.168.100.1

说明当前服务器已经成功使用内网 NTP 服务器同步时间。

十一、查看整体同步状态

执行:

chronyc tracking

正常结果示例:

Reference ID    : C0A86401 (192.168.100.1)
Stratum         : 4
System time     : 0.000034372 seconds fast of NTP time
Last offset     : +0.000162035 seconds
Leap status     : Normal

如果 System time 只差毫秒或微秒级,说明时间已经基本同步。

再执行:

timedatectl

重点确认:

NTP enabled: yes
NTP synchronized: yes

十二、时间偏差较大时手动校准

如果服务器时间快了或慢了几十秒、几分钟,在确认 NTP 源正常后,可以执行:

chronyc makestep

然后再次检查:

date
chronyc tracking
timedatectl

如果日志中出现类似内容:

System clock wrong by -129 seconds, adjustment started
System clock was stepped by -129 seconds

说明系统时间已经被校准。

十三、写入硬件时钟 RTC

配置里有这一行的话:

rtcsync

正常是自动写入 RTC

NTP/chrony 同步系统时间
        ↓
系统时间稳定后
        ↓
自动同步到硬件时钟 RTC

是否需要手动写入RTC最简单判断

执行:

timedatectl

看到下面这样就正常:

System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Universal time 和 RTC time 基本一致

若不一致,再手动写入:

系统时间校准完成后,建议将当前正确的系统时间写入硬件时钟:

hwclock --systohc

查看硬件时钟:

hwclock --show

这样可以避免服务器重启后,又从错误的硬件时间起步。

系统时间与硬件时钟区别如下:

类型查看命令作用
系统时间dateLinux 当前运行时使用的时间
NTP 时间chronyc tracking 网络时间源提供的标准时间
硬件时钟 RTChwclock --show服务器关机或重启后保留的底层时间

十四、最终验证

最后统一执行:

date
chronyc sources -n -v
chronyc tracking
timedatectl
hwclock --show

确认以下结果:

^* 192.168.100.1
NTP synchronized: yes
System time 偏差为毫秒或微秒级

如果以上结果正常,说明服务器时间同步配置完成。

十五、操作总结

本次时间同步处理流程如下:

1. 查看当前系统时间
2. ping 测试内网 NTP 服务器基础连通性
3. 确认 NTP 使用 UDP 123 端口
4. 检查 chronyd 服务状态
5. 备份 /etc/chrony.conf
6. 配置内网 NTP 服务器
7. 注释原公网 NTP 源
8. 重启 chronyd 服务
9. 使用 chronyc sources 验证当前时间源
10. 使用 chronyc tracking 查看时间偏差
11. 必要时执行 chronyc makestep 手动校准
12. 使用 hwclock --systohc 写入硬件时钟 RTC

完成以上操作后,服务器时间会统一同步到公司内网 NTP 服务器,日志、备份任务、监控告警等时间线也会更加准确。

以上就是Linux服务器Chrony时间同步配置与校准的操作指南的详细内容,更多关于Linux Chrony时间同步配置与校准的资料请关注脚本之家其它相关文章!

相关文章

  • php静态化页面 htaccess写法详解(htaccess怎么写?)

    php静态化页面 htaccess写法详解(htaccess怎么写?)

    如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了
    2012-02-02
  • Linux 下如何检查内存使用率

    Linux 下如何检查内存使用率

    这篇文章主要介绍了Linux 下如何检查内存使用率,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下
    2020-08-08
  • .htaccess文件写法之作用范围

    .htaccess文件写法之作用范围

    在htaccess写法详解一文中已经写过了htaccess文件一基本写法和语句原则,同时本文也不再阐述htaccess文件的作用之强大,今天只来讨论一下很多人都容易误解的一个地方,那就是.htaccess文件的作用范围
    2012-02-02
  • Linux 4.0 不再需要重启

    Linux 4.0 不再需要重启

    在大多数的服务器或者数据中心里,喜欢用linux的一个原因是你不需要频繁的进行重启操作。诚然,某些关键性的补丁必须要进行重启,但你也可以等到数月后再做此操作。现在,得益于 linux 内核的最新更新 你也许可以数年间都不用重启。
    2015-03-03
  • Centos7安装ElasticSearch 6.4.1入门教程详解

    Centos7安装ElasticSearch 6.4.1入门教程详解

    这篇文章主要介绍了Centos 7安装ElasticSearch 6.4.1入门教程详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 在CentOS7系统上编译安装MySQL 5.7.13步骤详解

    在CentOS7系统上编译安装MySQL 5.7.13步骤详解

    本篇文章主要介绍了在CentOS7系统上编译安装MySQL 5.7.13步骤详解,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

    Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

    Apache HTTP Server(简称 httpd)是 Linux 系统中最常用的 Web 服务器之一,本文将详细介绍如何在 Linux 系统中修改 httpd 的默认端口,并确保配置生效,感兴趣的可以了解下
    2025-06-06
  • Apache中利用mod_rewrite实现防盗链

    Apache中利用mod_rewrite实现防盗链

    自从上次在博客中推荐《you are my everything》以后,服务器的流量突然多了起来,有几次甚至导致了VPS的当机。后来经过分析:盗链这个MP3的网页包括诸如QQ空间、校内网空间、更有甚者还放到了Taobao小店、个人博客也有不少,全部作为了背景音乐,并且导致各种爬虫疯狂抓取这个文件。找到了问题原因就只有一个办法了,就是利用Apache的mod_rewrite模块把盗链行为拒之门外。
    2008-04-04
  • Linux下SFTP用户权限设置条件及实现命令

    Linux下SFTP用户权限设置条件及实现命令

    SFTP账号是基于SSH账号的,其拥有的权限是比较大的,今天主要教大家如何进行SFTP用户权限设置,感兴趣的你可不要错过了哈,希望本文知识可以帮助到你
    2013-02-02
  • 如何在Linux系统中进行CPU、内存、磁盘和网卡的性能测试?

    如何在Linux系统中进行CPU、内存、磁盘和网卡的性能测试?

    文章详细介绍了如何在Linux系统中进行CPU、内存、磁盘和网卡的性能测试,通过dd命令、fio工具和iostat工具等展示了CPU压力测试、内存使用情况、磁盘I/O性能以及网络流量监控的方法,同时,文章讨论了不同测试工具的使用参数和指标,提供了具体的命令行示例
    2026-02-02

最新评论