Chrony:通用-替换国内 NTP 源进行时间同步


一、 常用国内 NTP 服务器

不同 Linux 发行版的 Chrony 配置文件路径并不统一(如 CentOS 位于 /etc/chrony.conf,而 Ubuntu 位于 /etc/chrony/chrony.conf),且默认时间源的写法各异(poolserver,后缀带 iburst)。

选择几个不同的服务器作为时间源可以提高可靠性。以下是常用的国内 NTP 服务器 :

提供商 服务器地址 说明
阿里云 ntp.aliyun.com ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com 阿里云提供的公共NTP服务,稳定可靠。
腾讯云 ntp.tencent.com time1.cloud.tencent.com time2.cloud.tencent.com time3.cloud.tencent.com time4.cloud.tencent.com time5.cloud.tencent.com 腾讯云提供的公共NTP服务。
国家授时中心 ntp.ntsc.ac.cn 210.72.145.44 中国科学院国家授时中心提供的权威时间服务。
教育网 cn.pool.ntp.org s1a.time.edu.cn s1b.time.edu.cn (清华大学) s1c.time.edu.cn (北京大学) s1d.time.edu.cn (东南大学) 覆盖中国教育网的NTP服务器池。
云服务商 各大云服务商(如华为云、百度智能云等)通常也提供内网或公网NTP服务 如果你的服务器部署在公有云上,优先使用云服务商提供的NTP服务,通常性能和稳定性最佳。

二、 一键替换脚本

将以下代码直接复制到 Shell 终端中执行即可。脚本会自动完成备份、注释旧源、追加国内源、重启服务的全过程。

bash 复制代码
# 1. 自动识别配置文件路径 (兼容 CentOS/RHEL 和 Debian/Ubuntu)
CHRONY_CONF="/etc/chrony.conf"
[ ! -f "$CHRONY_CONF" ] && CHRONY_CONF="/etc/chrony/chrony.conf"

# 2. 备份配置文件 (带时间戳,确保安全)
cp "$CHRONY_CONF" "${CHRONY_CONF}.bak_$(date +%Y%m%d_%H%M%S)"

# 3. 注释旧源 (正则匹配: 行首无# + 含pool/ntp + 结尾是iburst)
sed -i -E '/^[^#].*(pool|ntp).*iburst$/s/^/# /' "$CHRONY_CONF"

# 4. 追加新源 (如果不存在则追加,防止重复)
if ! grep -q "server ntp.aliyun.com iburst" "$CHRONY_CONF"; then
  cat >> "$CHRONY_CONF" << EOF
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
pool cn.pool.ntp.org iburst
server 210.72.145.44 iburst
server time1.cloud.tencent.com iburst
EOF
fi

# 5. 重启服务并生效
systemctl restart chronyd && systemctl enable chronyd && echo "✅ 已替换为国内源并重启服务"

脚本核心逻辑解析

  • 正则匹配 /^[^#].*(pool|ntp).*iburst$/
    • ^[^#]:排除以 # 开头的已注释行,防止重复注释。
    • .*(pool|ntp).*:同时匹配包含 poolntp 关键字的行,顺序不限。
    • iburst$:强制匹配行尾,确保只处理带 iburst 参数的时间源。
  • 配置源选择 :优先使用阿里云和多节点的 .pool.ntp.org,配合国家授时中心 IP,确保高可用性。

三、 踩坑指南:服务启动失败排查

执行上述脚本后,若出现 Job for chronyd.service failed 错误,通常不是配置语法错误,而是环境冲突。请按以下顺序排查。

1. 端口冲突(最常见)

若系统曾安装过 ntp 服务,它会占用 UDP 123 端口。

检查:

bash 复制代码
ss -lunp | grep 123

解决: 停止并禁用 ntpd

bash 复制代码
systemctl stop ntpd
systemctl disable ntpd
systemctl start chronyd

2. DHCP 动态配置冲突

AlmaLinux/CentOS 默认启用 sourcedir /run/chrony-dhcp,若 DHCP 下发的配置异常,会导致服务崩溃。

解决: 编辑配置文件注释该行。

bash 复制代码
sed -i 's/^sourcedir/#sourcedir/' /etc/chrony.conf
systemctl restart chronyd

3. 不可见字符编码错误

直接复制粘贴配置时,可能混入特殊字符。

解决: 删除手动添加的行,使用脚本自动追加,或使用 sed 命令清理文件末尾重新写入。

四、 验证同步状态

配置完成后,必须确认时间源已生效。重点关注输出中的 ^* 符号。

命令:

bash 复制代码
chronyc sources -v

成功输出示例:

复制代码
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp.aliyun.com                2   6   377    25   -2345us[ -2345us] +/-   38ms
^+ ntp1.aliyun.com               2   6   377    26    +456us[  +456us] +/-   42ms
  • ^*:当前正在同步的主源。
  • ^+:备用源。

查看系统时间状态:

bash 复制代码
timedatectl

确保输出包含 System clock synchronized: yes

相关推荐
tedcloud1232 小时前
Supermemory部署教程:打造Agent记忆与RAG环境
服务器·人工智能·学习·自动化·powerpoint
凡人叶枫2 小时前
Effective C++ 条款15:在资源管理类中提供对原始资源的访问
linux·开发语言·c++·stm32·单片机
c238563 小时前
Vim 高阶实操技巧篇
linux·编辑器·vim
m0_737302583 小时前
读懂OpenClaw:重塑人机交互的开源AI智能体
服务器
Web极客码3 小时前
使用人工智能翻译WordPress网站
服务器·人工智能·wordpress
IPDEEP全球代理3 小时前
静态住宅ip哪家好?2026年静态住宅ip测评
运维·服务器·网络
哆啦A梦15883 小时前
服务器基础知识
运维·服务器
PixelBai3 小时前
JSON差异比较集成指南与工作流自动化
运维·自动化·json
大树883 小时前
本周液冷三件事 #2|Vera Rubin 227kW 全液冷量产 · 34 省 PUE 政策汇编 · 光模块也要液冷了
大数据·服务器·人工智能
Plastic garden3 小时前
Linux下rsync + inotify 实时文件同步方案
linux·运维·服务器