Aching Notes

技术笔记、折腾记录和长期项目整理

NTP/chrony 在内网环境里怎么稳定落地

目标

内网时间同步最常见的问题不是“没有 NTP”,而是:

  • 客户端没统一
  • 上游源不稳定
  • 同步了但没人验收

我现在的落地方式是:一台内网时间源 + 所有客户端统一指向它。

服务端配置

服务端只保留最少配置。

pool pool.ntp.org iburst
allow 192.168.0.0/16
local stratum 10
makestep 1.0 3
rtcsync

如果是完全离线环境,就把外部 pool 换成你自己的上游或本地授时设备。

客户端配置

客户端配置也尽量统一,别一台机器一个写法。

server ntp.local iburst prefer
makestep 1.0 3
rtcsync

改完重启:

systemctl restart chronyd
systemctl enable chronyd

验证不能省

我会固定看这三条:

chronyc sources -v
chronyc tracking
timedatectl status

重点看:

  • 是否已经同步
  • 当前源是谁
  • 偏移是否在可接受范围

定时检查怎么做

如果这套东西要长期跑,就把验收也做成脚本。

#!/usr/bin/env bash
set -euo pipefail

host="${1:-localhost}"
ssh "$host" 'chronyc tracking; chronyc sources -v; timedatectl status'   | tee "/var/log/timecheck/$(date +%F)-${host}.log"

常见踩坑

1. 防火墙没开

NTP 端口没放行,客户端看着配置对,实际根本打不到源。

2. 宿主机时间差太大

初次同步要允许 makestep,否则可能卡很久。

3. 虚拟机和容器混着看

虚拟化环境里,宿主机和客体的时间链路要分开排查,不要混成一条。

这篇能写的实战点

真正能写的是:

  • 服务端怎么收口
  • 客户端怎么批量落
  • 验证怎么做成定时任务
  • 偏移异常怎么观察

这比单纯讲 chrony 原理更有用。


已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注