chrony 配置

温馨提醒

部署 chrony 服务端

  • 安装

    1
    2
    3
    4
    5
    6
    
    # CentOS/RHEL
    yum install chrony
    
    # Ubuntu/Debian
    apt update
    apt install chrony
  • 配置

    vim /etc/chrony.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    # minpoll 4:最小轮询间隔是 2⁴ 秒 = 16 秒
    # maxpoll 10:最大轮询间隔是 2¹⁰ 秒 = 1024 秒
    # iburst:启动时快速发送一组 NTP 请求包(默认4个),更快获得同步结果
    # 表示 chronyd 会在 16 到 1024 秒之间动态调整与上游的同步间隔
    server ntp.ntsc.ac.cn minpoll 4 maxpoll 10 iburst
    server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
    
    allow 192.168.1.0/24 	# 允许所有网段访问
    
    deny all;
    
    # 当本地机器无法连接到任何上游 NTP 服务器时,将使用本地时钟作为时间源,指定了本地时钟的“阶层”,数值越大越不可靠
    local stratum 10
    
    # 指定日志路径
    logdir /var/log/chrony
  • 启动服务

    1
    
    systemctl enable --now chronyd
  • 开放 NTP 端口(UDP:123)

    1
    2
    3
    4
    5
    6
    
    # CentOS/RHEL
    firewall-cmd --add-service=ntp --permanent
    firewall-cmd --reload
    
    # Ubuntu/Debian
    ufw allow 123/udp
  • 手动同步时间

    1
    
    chronyc makestep

    当系统返回 200 ok 时,表示 chrony 服务已手动同步完成

部署客户端

  • 安装 chrony 包

    1
    
    yum install chrony
  • 配置

    vim /etc/chrony.conf

    1
    2
    3
    4
    5
    6
    
    # 添加 chrony 服务端
    server 192.168.1.1 iburst
    
    # 记录 drift 文件
    driftfile /var/lib/chrony/drift
    logdir /var/log/chrony
  • 启动服务

    1
    
    systemctl enable --now chronyd

验证同步状态

  • 显示本地机器与时间源同步的整体状态

    chronyc tracking

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    # 输出
    Reference ID    : CB6B0658 (192.168.1.1)					# 当前同步的上游服务器 IP
    Stratum         : 3											# 阶层,数字越小越接近标准时间
    Ref time (UTC)  : Mon May 12 08:57:42 2025
    System time     : 0.000278988 seconds slow of NTP time		# 系统当前与 NTP 服务器的时间差
    Last offset     : -0.001049707 seconds
    RMS offset      : 0.001369402 seconds
    Frequency       : 15.327 ppm slow							# 本机硬件时钟与真实时间之间的偏差
    Residual freq   : +2.504 ppm
    Skew            : 6.348 ppm
    Root delay      : 0.052412711 seconds
    Root dispersion : 0.002118363 seconds
    Update interval : 64.3 seconds
    Leap status     : Normal									# 是否准备插入/删除闰秒(Normal 表示正常)
  • 列出所有可用的时间源及详细状态

    chronyc -n sources -v

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    # 输出
      .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
     / .- Source state '*' = current best, '+' = combined, '-' = not combined,
    | /             'x' = may be in error, '~' = too variable, '?' = unusable.
    ||                                                 .- xxxx [ yyyy ] +/- zzzz
    ||      Reachability register (octal) -.           |  xxxx = adjusted offset,
    ||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
    ||                                \     |          |  zzzz = estimated error.
    ||                                 |    |           \
    MS Name/IP address         Stratum Poll Reach LastRx Last sample               
    ===============================================================================
    ^* 192.168.1.1                  0   8   377     -     +0ns[   +0ns] +/-    0ns
    
    MS:
    	^*:表示当前正在使用的主服务器
    	^+:表示候选时间源
    	^-:表示已连接但未选为同步源
    	^?:表示不可用
    
    Name/IP:时间源地址
    Stratum:阶层
    Poll:轮询间隔
    Reach:表示最近 8 次通信的成功位图(八进制 377 表示全部成功)
    LastRx:上一次收到响应的时间(秒)
    Last sample:最后一次采样时间差(括号内为修正值),后面的 +/- 是误差范围
  • 显示每个时间源的性能统计数据,如偏差、漂移等,用于分析同步质量

    chronyc sourcestats -v

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    # 输出
    Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
    ===============================================================================
    192.168.1.1                 8   4   256    -0.012     0.123     -10us    3us
    
    
    NP:样本总数
    NR:有效样本数
    Span:覆盖的时间范围(秒)
    Frequency:服务器频率误差估计(ppm)
    Freq Skew:频率漂移估计(ppm)
    Offset:本机时间与该源的平均时间偏移
    Std Dev:偏移的标准差(数值越小越稳定)
  • 查看当前系统时区

    timedatectl status

  • 设置系统时区

    timedatectl set-timezone Asia/Shanghai

公共授时服务器

  • 中国

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    # 国家授时中心
    ntp.ntsc.ac.cn
    
    # 中国 NTP 快速授时服务
    cn.ntp.org.cn
    
    # 教育网
    edu.ntp.org.cn
    
    # 香港地区
    hk.ntp.org.cn
    
    # 香港天文台公共 NTP 服务器
    stdtime.gov.hk
    
    # 澳门地球气象局公共 NTP 服务器
    time.smg.gov.mo
    
    # 台湾地区
    tw.ntp.org.cn
  • 日本

    1
    2
    3
    4
    
    jp.ntp.org.cn
    
    # 日本国家信息通信技术研究所
    ntp.nict.jp
  • 韩国

    1
    
    kr.ntp.org.cn
  • 新加坡

    1
    
    sgp.ntp.org.cn
  • 美国

    1
    
    us.ntp.org.cn
  • 德国

    1
    
    de.ntp.org.cn
  • 印度尼西亚

    1
    
    ina.ntp.org.cn
  • 国际 NTP 快速授时服务

    1
    
    pool.ntp.org
  • 阿里云公共 NTP 服务器

    1
    
    ntp.aliyun.com
  • 腾讯云公共 NTP 服务器

    1
    
    ntp.tencent.com
  • 谷歌公共 NTP 服务器

    1
    2
    3
    
    time1.google.com
    time2.google.com
    time3.google.com