不能直接用ntpd搭建本地时间服务器,因其与centos 7默认的chronyd争抢udp 123端口,且无外网时无法自举为stratum 1源,需显式配置fudge+server才可能生效但易失败;推荐使用chronyd,只需注释默认server、添加server 127.127.1.0 iburst、fudge 127.127.1.0 stratum 10、allow网段,并开放udp 123端口。

为什么不能直接用 ntpd 搭建本地时间服务器
CentOS 7 默认启用 chronyd,且 ntpd 和 chronyd 会争抢 UDP 123 端口。强行启动 ntpd 前不关闭 chronyd,会导致服务启动失败或监听异常——常见现象是 netstat -ulnp | grep :123 查不到任何进程。
更关键的是:ntpd 在无外网时无法自举为 stratum 1 时间源,它默认拒绝向客户端提供服务(除非显式配置 fudge + server 127.127.1.0),而该配置在 CentOS 7 上容易因权限或语法问题失效。
- 不要用
ntpdate:已废弃,仅能阶跃校准,不能作为服务运行 - 不要手动改
/etc/ntp.conf后硬启ntpd:兼容性差,systemd 下易被 kill - 不要跳过防火墙检查:UDP 123 端口必须放行,否则客户端连接超时
用 chronyd 配置内网时间服务器的最小必要操作
Chrony 原生支持离线自举,且配置简洁、启动稳定,是 CentOS 7 内网时间服务器的唯一推荐方案。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
- 确保 chrony 已安装:
sudo yum install chrony -y - 编辑
/etc/chrony.conf,注释掉所有默认server行,添加以下三行:
server 127.127.1.0 iburst fudge 127.127.1.0 stratum 10 allow 192.168.0.0/16
stratum 10 表示本机作为低优先级但可用的本地时间源;allow 必须写,否则 chronyd 不监听外部请求sudo systemctl restart chronyd
sudo ss -uln | grep :123 应看到 *:123 绑定在 0.0.0.0 或具体内网 IP 上客户端如何正确指向这台本地服务器
客户端不需要装额外包,只需改自己的 /etc/chrony.conf,其他保持默认即可。
- 删掉或注释全部原有
server行 - 添加一行:
server 192.168.200.100 iburst(把 IP 换成你服务端的实际内网地址) - 重启客户端
chronyd:sudo systemctl restart chronyd - 检查是否连上:
chronyc sources -v输出中,服务端 IP 前应有^*标记;chronyc tracking中Reference ID应显示该 IP - 若长时间显示
^?或127.0.0.1,大概率是服务端没开allow,或客户端防火墙阻断了 UDP 123
硬件时钟和时区不是可选项,而是同步前提
即使 chronyd 同步成功,如果系统时区错误或硬件时钟漂移严重,日志、定时任务、SSL 证书仍可能出错。
- 设对时区:
sudo timedatectl set-timezone Asia/Shanghai - 确认硬件时钟与系统时间一致:
sudo hwclock --systohc(尤其在首次配置或重装后) - 检查是否启用硬件时钟同步:
timedatectl status中RTC in local TZ应为no(推荐 UTC 模式) - 若服务端长期离线,建议每月手动执行一次
sudo chronyc makestep强制修正 >1 秒偏差,避免 drift 积累过大
最关键的细节永远藏在 allow 和 stratum 这两个配置项里:漏掉前者,服务端静默拒绝连接;设错后者,客户端会因层级过高(stratum 0)或过低(stratum 16+)而忽略该源。










