chronyd是RHEL 8+/CentOS 8+、Ubuntu 20.04+等主流发行版默认且应优先使用的时间同步服务,ntpd已被弃用;需通过rpm或dpkg确认chrony安装状态,禁用ntpd,配置仅指向内网NTP服务器,启用allow网段、开放UDP 123端口并验证chronyc tracking与sources -v结果。

chronyd 是你现在该用的服务,不是 ntpd
RHEL 8+/CentOS 8+、Ubuntu 20.04+ 等主流发行版已默认弃用 ntpd,强行启用会导致 systemctl start ntpd 静默失败,或 ntpq -p 报错 Connection refused。先确认当前系统实际在跑什么:
- 查
chrony是否已安装:rpm -q chrony(RHEL/CentOS)或dpkg -l | grep chrony(Debian/Ubuntu) - 查
ntpd是否还在运行:systemctl is-active ntpd—— 若返回active,立刻执行systemctl disable --now ntpd -
chronyc tracking能用但ntpq -p报错,基本说明chronyd已接管时间同步
客户端:只连内网 NTP 服务器,别混公网源
编辑 /etc/chrony.conf,确保只有一行有效 server 指令,例如:
server 192.168.100.10 iburst
其他所有 server 行(尤其是 pool.ntp.org 类公网源)必须删除或注释掉。混用公网与内网源会导致时钟漂移,chronyd 会尝试“仲裁”,反而无法稳定锁定目标服务器。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
iburst参数必须保留,它让首次连接时发 8 个包加速建立同步 - 改完配置后执行
systemctl restart chronyd - 立即验证:
chronyc tracking中System time显示OK才算初步成功;chronyc sources -v输出里目标 IP 前有*表示正在使用该源
服务器端:允许网段 + 解绑 loopback
若你要把本机设为集群内的时间服务器,关键不是“服务开了没”,而是“客户端能不能连上并信任你”:
- 在
/etc/chrony.conf中添加允许访问的网段,格式严格:allow 192.168.100.0/24(不能写成mask 255.255.255.0) - 检查是否有
bindaddress或bindcmdaddress配置 —— 若值为127.0.0.1,必须删掉或改为0.0.0.0,否则外部请求收不到 - 硬件时钟写入必须开启:RHEL/CentOS 编辑
/etc/sysconfig/chronyd,Debian/Ubuntu 编辑/etc/default/chrony,设SYNC_HWCLOCK=yes - UDP 123 端口必须开放:
firewall-cmd --permanent --add-port=123/udp && firewall-cmd --reload(RHEL/CentOS);Ubuntu 用ufw allow 123/udp
验证时别信 timedatectl status 的 yes
timedatectl status 显示 System clock synchronized: yes ≠ 实际已同步到你指定的服务器。它只反映 systemd-timesyncd 或 chrony 的“自认为同步”状态,不校验源是否是你配的那台。
- 真正可信的验证命令只有两个:
chronyc tracking(看Offset和Skew)、chronyc sources -v(看*和^标记) - 常见卡点:防火墙没开 123/udp、
allow网段写错掩码格式、bindaddress锁死在本地、客户端和服务端时区虽不影响 UTC 同步,但若误设为非 UTC,hwclock --systohc可能写错硬件时钟










