跳过正文
  1. Post/

网络时间协议及国内常用NTP服务器

··3893 字·8 分钟·

本文同步自 WordPress 主站: 阅读原文

024812
作者
024812

I’d tell you a joke about NTP but I don’t have the time

1. 什么是 NTP
#

网络时间协议(Network Time Protocol,简称NTP)是一种用于同步计算机系统时间的网络协议。它通过与时间服务器通信,确保设备的时间与标准时间(如UTC)保持一致。NTP在企业IT环境中至关重要,尤其是在分布式系统、日志记录、安全认证和交易处理等领域,时间同步直接影响系统的可靠性和安全性。

NTP采用分层结构,分为多个Stratum级别。Stratum 1是直接连接到高精度时间源(如GPS或原子钟)的服务器,而Stratum 2及以下则从上一级服务器同步时间。通常,普通设备会连接到Stratum 2或Stratum 3服务器以获取时间。

  • NTP 协议自 1985 年诞生,目前主流为 NTPv4(RFC 5905,2010 年批准),至今仍广泛使用(包括在严格的 Linux、BSD、NetBSD、macOS 系统)
  • 2020 年发布的 Network Time Security (NTS, RFC 8915),为 NTP 增加了用 TLS 握手+AEAD 扩展字段的认证能力,已逐步纳入 Red Hat、Debian、FreeBSD 等发行版预设配置中
  • 2019年以来,Linux 系统推荐使用 Chrony(Chronyd ≥ 4.x) 替代传统 ntpd,因其对低带宽链路、虚拟机而言能更快收敛,更好处理时钟抖动问题,且支持硬件时间戳、更稳定地与 NTS 集成

2. 北京时间的源头 —— 授时链条全景图
#

国家授时中心──中国科学院(NTSC / CAS) 
多边卫星补时系统(多 GNSS,包括北斗、GPS) 
Stratum‑1 公共 NTP 和云服务商 + 校内教育网 Server
  • 中科院国家授时中心(NTSC)自 2018 年将 ntp.ntsc.ac.cn 纳入试运行服务,是最权威的国家标准时间来源,但带宽有限,不建议用作大规模校内站点使用,仅供小规模信任环境参考
  • China NTP‑Pool (cn.pool.ntp.org,与 Pool‑NTP 项目同步)依用户地理位置和延迟自动匹配可用服务器,是最稳定的高容量选择
  • 主流云厂商(国内公网服务器)
    • 阿里云 NTP:统一为 ntp.aliyun.com(由多个 CNAME alias 指向 time.pool.aliyun.com)
    • 腾讯云 NTP:time1.cloud.tencent.com … time5.cloud.tencent.com(一共五台 IPv4)
  • 教育网内常见高校备选(推荐使用 edu.ntp.org.cn 快速域名,自动封装教育网 IP)。

3. 中国常用的NTP服务器(2026年核验)
#

由于网络环境和政策原因,中国境内的设备通常需要使用本地或可访问的NTP服务器。以下是2026年核验推荐的常用NTP服务器列表,这些服务器经过广泛使用和验证,具有较高的可靠性和稳定性:

  1. ntp.aliyun.com
    由阿里云提供,适合中国大陆用户,延迟低,稳定性高。阿里云的NTP服务支持大规模设备同步,广泛应用于企业环境。
  2. time.windows.com
    微软提供的NTP服务器,虽然服务器位于海外,但在中国部分地区仍可访问,适合混合云环境下的Windows设备。
  3. ntp.tencent.com
    腾讯云提供的NTP服务,覆盖中国大陆多个地区,适合腾讯云用户或其他需要低延迟同步的场景。
  4. cn.pool.ntp.org
    这是NTP池项目的一部分,专门为中国用户提供服务。通过DNS解析,自动选择距离最近的服务器,适合跨区域部署的设备。
  5. time.apple.com
    苹果提供的NTP服务器,适合macOS和iOS设备用户,在中国部分地区可访问。

注意事项:

  • 由于网络防火墙(GFW)的影响,部分海外NTP服务器(如pool.ntp.org的某些节点)可能在中国大陆无法访问,建议优先选择国内服务商的NTP服务器。
  • 建议配置多个NTP服务器地址以提高冗余性,避免单一服务器不可用导致同步失败。
  • 对于企业环境,建议在内部部署NTP服务器(如使用Stratum 1设备或从云服务同步),以减少对公共服务器的依赖并提高安全性。

3.1 国内 NTP 服务器速查对比表
#

服务商

服务器地址

运营商

适用场景

NTS/IPv6支持

备注

阿里云

ntp.aliyun.com

阿里云

企业内网、云服务器

仅IPv4 / 无NTS

CNAME 指向 time.pool.aliyun.com

腾讯云

time1 ~ time5.cloud.tencent.com

腾讯云

腾讯云用户

仅IPv4 / 无NTS

五台 IPv4

NTP Pool

cn.pool.ntp.org

社区

跨区域部署

双栈 / 无NTS

DNS 就近匹配

微软

time.windows.com

微软

Windows 混合云

双栈 / 无NTS

海外节点,国内部分可达

苹果

time.apple.com

Apple

macOS / iOS

双栈 / 无NTS

国内部分可达

国家授时中心

ntp.ntsc.ac.cn

中科院

小规模信任环境

部分双栈 / 无NTS

Stratum-1,无负载均衡

**选型建议:**个人用户优先 cn.pool.ntp.org;企业内网优先 ntp.aliyun.com + time1.cloud.tencent.com 双源冗余;Windows 设备可额外保留 time.windows.com 作为第三源。

4. 客户端配置推荐(Chrony × Windows W32Time)
#

✅ Linux(Chrony)
#

Debian / RHEL 10 以上系统默认使用 Chrony,可编辑 /etc/chrony.conf

server ntp.aliyun.com iburst maxpoll 10 minpoll 6
server cn.pool.ntp.org iburst
server ntp.tencent.com iburst
driftfile /var/lib/chrony/drift

# 如果 NTS 可用,则添加报文项:
# server time.aliyun.com iburst nts
  • iburst 可加速启动时同步收敛;
  • minpoll/maxpoll 控制探测间隔(min 64 秒,max 1024 秒)
  • 如将服务器支持 NTS(且你信任该厂商),可启用 nts 关键字并设置 ntsdumpdir /var/lib/chrony/

安装后:

sudo systemctl enable chronyd
sudo systemctl start chronyd
chronyc sources -v
chronyc tracking

✅ Windows(自带 W32Time 修改服务器)
#

  • Windows 10 / 11 修改注册表或通过 PowerShell 设置 public server:
w32tm /config /manualpeerlist:"ntp.aliyun.com pool.ntp.org" /syncfromflags:manual /update
w32tm /resync
  • 注意 Windows 的时钟服务不支持 NTS,也没有 iburst,因此不适合对高精度要求的 ECS/VPS。

4.1 验证同步状态
#

配置完成后,建议验证时间同步是否正常工作:

Linux(Chrony)验证
#

chronyc sources -v      # 查看时间源列表和状态
chronyc tracking         # 查看系统时钟偏移量
chronyc makestep         # 如果偏移过大,手动步进校正

Windows 验证
#

w32tm /query /status     # 查看当前时间源和偏移
w32tm /resync            # 强制重新同步
w32tm /stripchart /computer:ntp.aliyun.com /samples:5  # 连续采样 5 次查看延迟
  • 正常状态:偏移量应在 ±100ms 以内;如果持续超过 1s,说明网络或服务器异常。
  • 如果 chronyc sources 显示所有源都是 .(未选中),说明防火墙可能屏蔽了 UDP 123 端口。
  • Windows 下如果 w32tm /query /status 返回 “未同步”,检查 Windows Time 服务是否运行:net start w32time

4.2 排障指南(Troubleshooting)
#

  • Chrony 端口被墙:如果在执行 chronyc sources -v 时,所有的源状态列(State)都显示为 ?(Unreachable),可能是由于防火墙拦截了 UDP 123 端口。解决方法:检查并放行出站规则中的 UDP 123 端口;若是云服务器,请同时检查安全组设置。
  • Windows Time 服务报错:如果在 Windows 中执行 w32tm /query /status 提示“时间服务未运行”或“访问被拒绝”,通常是因为服务处于手动或禁用状态。解决方法:以管理员身份运行 PowerShell,执行 net start w32time 启动服务,并将服务设置为自动启动 Set-Service w32time -StartupType Automatic
  • 时间跳变过大导致同步失败:当系统时间与真实时间相差过大(例如硬件电池耗尽导致回到1970年)时,部分NTP客户端出于保护机制会拒绝同步。解决方法:对于 Linux,可先使用 chronyc makestep 强行步进一次,或使用 date -s "YYYY-MM-DD HH:MM:SS" 先手动将时间设为接近真实的时间后再开启服务。

5. 安全升级:NTS、闰秒处理及选型注意
#

NTS:NTP 的 TLS 加固方案
#

  • Network Time Security (RFC 8915) 提供经 TLS 握手的密钥协商机制(NTS-KE)+ AEAD 扩展字段验证,可抵抗中间人攻击与时钟重放欺骗。目前已有 Netnod、PTB、USNO 等时钟服务商开放 NTS;Chrony 客户端可启用 nts 模式与之通信;但在国内厂商如阿里、腾讯暂未公开支持 NTS,仍需监测未来动态。

闰秒与负闰秒:未来几年所面临的闰秒调整
#

  • 截至目前,已有 27 个 UTC 正方向插入闰秒,最近一次发生在 2016‑12‑31
  • 科学测算地球自 1990 年后旋转速度恢复加快,有可能在 2029 年出现 负闰秒 — 第一次让 UTC 减一秒以满足与天文 UT1 的差距约束
  • 谷歌、亚马逊、Meta 等云厂商自 2022 年起,采用 “闰秒 smear” 方式将“秒”平滑分布到 17 小时内,避免系统因瞬时倒退或跳跃而崩溃
  • 建议高容错业务部署考虑使用 Chrony 的渐变模式,通过 slew 平滑校正系统时间。

防护 NTP 放大攻击与 DoS
#

  • 若你所在网络开放 Stratum‑1 / Stratum‑2 服务器服务公网,务必在配置 ntpdchronyd 时加入:
restrict default ignore
restrict 127.0.0.1
restrict your.trusted.subnet mask 255.255.255.0 nomodify notrap
  • 并开启 iburst、降低响应频率,避免 UDP 反射(amplification)攻击。

6. 常见 FAQ & 实践建议
#

问:是否应该只用国家授时中心服务器?
答:不建议。中科院 ntp.ntsc.ac.cn 是 Stratum‑1 源,但无负载均衡且访问量有限,建议优先部署阿里云、腾讯云的高并发服务作为主用源。

问:我的设备只支持 IPv4,还要配置 IPv6 吗?
答:可选。中国多数公共 NTP 都支持双栈;IPv6 地址通常延迟略小,信息更对齐公网趋势。

问:能否 100% 拒绝 time.windows.com 之类的微软服务器?
答:可以。w32tm /manualpeerlist 配置后,只使用你的自选源。

问:时间同步正常,但系统时间仍然不准?
答:检查硬件时钟(RTC)是否偏差过大。Linux 下执行 hwclock --show;Windows 下检查 BIOS 时间。如果硬件时钟偏差超过 1 分钟,先执行 hwclock --systohc(Linux)或在 BIOS 中校正。

问:Chrony 和 ntpd 可以同时运行吗?
答:不可以。两者都会尝试控制同一个时钟设备,导致冲突。安装 Chrony 后应确保 ntpd 已完全停止并禁用:systemctl stop ntpd && systemctl disable ntpd

问:时间同步正常,但系统时间仍然不准?
答:检查硬件时钟(RTC)是否偏差过大。Linux 下执行 hwclock --show;Windows 下检查 BIOS 时间。如果硬件时钟偏差超过 1 分钟,先执行 hwclock --systohc(Linux)或在 BIOS 中校正。

问:Chrony 和 ntpd 可以同时运行吗?
答:不可以。两者都会尝试控制同一个时钟设备,导致冲突。安装 Chrony 后应确保 ntpd 已完全停止并禁用:systemctl stop ntpd && systemctl disable ntpd

问:未来是否会废除闰秒?
答:联合国时务总会已讨论 2035 年后停止添加闰秒。但目前 UTC 尚未取消该机制;国内系统仍按现行标准执行。


7. 参考资料与官方链接
#