目标
内网时间同步最常见的问题不是“没有 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 原理更有用。
发表回复