0aa8fe6
这次没有正文改动。
这是 linux/Linux 时间同步(chrony).md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
0aa8fe6
这次没有正文改动。
be5956e
@@ -0,0 +1,70 @@ +--- +tags: [时间同步, chrony, NTP] +order: 60 +--- + +# Linux 时间同步(chrony) + +## 场景 + +服务器时间偏了几分钟,日志对不上、证书校验失败、集群心跳异常。 + +## 前置条件 + +- root 权限 +- 知道内网 NTP 服务器地址(没有就先用公网的) +- 123/udp 能出去或者能到内网源 + +## 配置 + +```bash +# 安装 +dnf install -y chrony || apt install -y chrony + +# 指向内网源 +cat >/etc/chrony.conf <<'EOF' +server ntp1.corp.local iburst +server ntp2.corp.local iburst +driftfile /var/lib/chrony/drift +makestep 1.0 3 +rtcsync +logdir /var/log/chrony +EOF + +systemctl enable --now chronyd +``` + +`makestep 1.0 3` 的意思是:启动后的前三次同步允许直接跳时间,超过 1 秒就跳。 + +## 验证 + +```bash +chronyc sources -v # ^* 表示当前使用的源 +chronyc tracking # 看偏移量 +timedatectl status +date +``` + +`System clock synchronized: yes` 才算同步好。 + +## 回滚 + +```bash +systemctl disable --now chronyd +``` + +改成手动时间: + +```bash +timedatectl set-ntp false +timedatectl set-time "2026-10-18 18:00:00" +``` + +## 坑 + +- **虚拟机上别开 `rtcsync` 太频繁**,宿主机会把时间带偏。 +- 时间偏差太大时 chrony 默认会「慢慢追」,用 `makestep` 才会立刻跳。 +- 防火墙挡了 123/udp,`chronyc sources` 里全是 `?`。 +- 容器里同步时间没意义,应该同步宿主机。 +- 域环境里的 Linux 可以直接指向域控,不用单独维护 NTP。 +- 改完记得看 `timedatectl`,`NTP synchronized: no` 说明没生效。