应使用 chronyd 而非 ntpd,因 RHEL 8+/CentOS 8+、Ubuntu 20.04+ 已默认弃用 ntpd;可通过 rpm -q chrony 或 dpkg -l | grep chrony 确认安装,并用 systemctl is-active ntpd 检查是否运行,若 active 则需禁用并停用。

chronyd 是你现在该用的工具,不是 ntpd。RHEL 8+/CentOS 8+、Ubuntu 20.04+ 等主流发行版已默认弃用 ntpd,强行启用会导致 systemctl start ntpd 静默失败,或 ntpq -p 报错 Connection refused。
怎么确认自己该用 chrony 还是 ntpd
别猜,直接查系统实际在跑什么:
- 查
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 服务器(比如 192.168.100.10)
你只是想让本机向局域网里已有的时间源同步,别碰 server 行以外的配置,尤其别加 fudge 或改 stratum:
- 编辑
/etc/chrony.conf,确保有且仅有一行有效server:server 192.168.100.10 iburst(iburst加速首次同步) - 删掉或注释掉所有其他
server行(比如pool.ntp.org),混用公网和内网源会导致时间漂移 - 重启服务:
systemctl restart chronyd - 立刻验证:
chronyc tracking看System time是否为OK;chronyc sources -v看目标 IP 前是否有*(表示正在用)
服务器端:开放给内网设备同步的关键配置
把一台 Linux 当作局域网时间源,核心不是“开了没”,而是“能不能被客户端正确发现并信任”:
- 在
/etc/chrony.conf中添加允许网段,例如:allow 192.168.100.0/24(注意格式,不能写mask 255.255.255.0,chrony不认) - 确认
bindaddress或bindcmdaddress没锁定到127.0.0.1,否则外部请求收不到 - 硬件时钟写入必须开:
/etc/sysconfig/chronyd(RHEL/CentOS)或/etc/default/chrony(Debian/Ubuntu)中设SYNC_HWCLOCK=yes -
UDP 123端口必须开放,且防火墙放行:firewall-cmd --permanent --add-port=123/udp && firewall-cmd --reload
验证和排查常见卡点
timedatectl status 显示 System clock synchronized: yes ≠ 实际同步了,它只反映 systemd-timesyncd 或 chrony 的状态:
-
chronyc tracking中的Offset值超过 ±1s 就算异常,Skew持续 > 1000 表示频率漂移严重 -
chronyc sources -v输出里如果目标 IP 前是^?,说明客户端连不上,优先查防火墙和allow网段格式 - 很多问题出在
chronyd启动成功但没真正同步——chronyc makestep可强制立即校正大偏差(需在/etc/chrony.conf中先确保启用了makestep指令)
allow 网段写错一位、iburst 漏掉、SYNC_HWCLOCK 没开、UDP 123 没放行——任意一个都会导致“看起来正常,实则不同步”。


















