Ubuntu上怎么设置时间同步?

文章导读
准确的时间保持是现代软件部署中不可或缺的一部分。没有它,您可能会遇到数据损坏、错误以及其他难以调试的问题。时间同步可以帮助确保日志按正确顺序记录,并且数据库更新得到适当应用。
📋 目录
  1. 引言
  2. 前提条件
  3. 导航基本时间命令
  4. 使用 timedatectl 控制 systemd-timesyncd
  5. 安装和配置 chrony
  6. 切换到 ntpd(传统选项)
  7. 比较 systemd-timesyncd、chrony 和 ntpd
  8. 常见错误和故障排除步骤
  9. 常见问题解答
  10. 结论
A A

引言

准确的时间保持是现代软件部署中不可或缺的一部分。没有它,您可能会遇到数据损坏、错误以及其他难以调试的问题。时间同步可以帮助确保日志按正确顺序记录,并且数据库更新得到适当应用。

Ubuntu 24.04 默认启用了内置的时间同步功能,使用 systemd-timesyncd(通常称为 timesyncd)。对于更高级或生产环境的使用场景,chrony 是一种现代替代方案,提供更高的准确性和可靠性。

在本文中,您将练习常见的时间相关命令,了解系统时钟和硬件时钟 (RTC) 如何协同工作,验证 Ubuntu 默认的 systemd-timesyncd 服务是否处于活动状态,并安装和配置 chrony 作为替代的网络时间同步服务。

关键要点

  • Ubuntu 使用 systemd-timesyncd 作为默认时间同步服务,提供了一种简单且轻量级的解决方案来维护准确的系统时间。
  • timedatectl 命令是管理时间设置的中心工具,可用于检查同步状态、配置时区以及启用或禁用 NTP 服务。
  • Linux 系统依赖硬件时钟 (RTC) 和内核系统时钟,RTC 在引导时提供初始时间,而系统时钟在运行时持续被校正。
  • 网络时间协议 (NTP) 服务如 timesyncdchrony 会逐步调整系统时钟以确保准确性,而不会引起突然变化从而干扰运行中的进程。
  • chrony 是比 timesyncd 更高级且可靠的替代方案,提供更高的准确性、更快的同步速度,以及对不稳定网络和虚拟化环境的更好处理。
  • 时区配置可以使用 timedatectldpkg-reconfigure tzdata 管理,系统通常将硬件时钟保持在 UTC,即使显示本地时间也是如此。
  • 一次只能运行一个时间同步服务,同时运行多个服务如 timesyncdchronyntpd 可能会导致冲突和不一致的系统时间。
  • 大多数时间同步问题可以使用 timedatectl、服务状态检查和网络验证来诊断,常见原因包括服务未激活、网络访问被阻止或设置配置错误。

前提条件

在开始本教程之前,您需要一台 Ubuntu 服务器,配备非 root 用户并启用 sudo 权限以及防火墙,如本 Ubuntu 初始服务器设置教程 中所述。

导航基本时间命令

要查看服务器上的时间,你可以使用 date 命令。任何用户都可以运行此命令来打印日期和时间:

  1. date

通常,你的服务器会生成默认 UTC 时区的输出。

Output
Mon Mar 23 06:00:45 UTC 2026

UTC 是 协调世界时,即零度经线的时间。虽然这可能不反映你当前的时区,但使用协调世界时可以避免基础设施跨越多个时区时的混淆。

如果你想更改时区,可以使用 timedatectl 命令。Ubuntu 系统通常默认使用 UTC 以避免分布式系统中的歧义,但如果需要,你可以配置本地时区。

首先,运行以下命令生成可用时区列表:

  1. timedatectl list-timezones

时区列表将打印到你的屏幕上。你可以按 SPACE 键向下翻页,按 b 键向上翻页。一旦找到正确的时区,记下它,然后输入 q 退出列表。

接下来,你可以使用 timedatectl set-timezone 设置时区,将高亮部分替换为列表中找到的所需时区。你需要使用 sudo 来进行此更改:

  1. sudo timedatectl set-timezone America/New_York

设置时区后,你可以通过运行以下命令验证更改:

  1. date
Output
Mon Mar 23 02:02:25 EDT 2026

时区缩写将反映新选择的值。

作为替代方案,Ubuntu 还提供了一个交互式配置工具:

  1. sudo dpkg-reconfigure tzdata

此命令打开一个基于文本的界面,允许你选择你的地理区域和城市。如果不确定确切时区标识符,这会很有用。

系统时钟与硬件时钟

除了设置时区外,了解 Linux 系统如何内部管理时间也很有帮助。有两个时钟需要注意:

  • 系统时钟,由操作系统维护
  • 硬件时钟 (RTC),在主板上独立运行

系统时钟是你的应用程序和日志使用的,而硬件时钟在系统关机时保持时间。

虽然这种区别很有用,但了解这些时钟在正常系统操作和时间同步期间的交互方式也很重要。

当系统启动时,Linux 内核使用硬件时钟 (RTC) 中存储的时间初始化系统时钟。此时,系统时间可能不完全准确,因为硬件时钟会随时间漂移。

启动后,时间同步服务如 systemd-timesyncdchrony 会接管。这些服务使用 NTP 查询远程时间服务器,并逐渐调整系统时钟以匹配准确的外部参考。

这种调整通常不会突然发生。相反,NTP 客户端会进行小幅、连续的校正,以避免干扰依赖稳定时间进程的运行进程。

随着时间推移,这些组件之间的关系如下:

  • 硬件时钟 (RTC) 在启动时提供初始时间
  • 内核系统时钟成为操作系统的首要时间源
  • NTP 服务持续校正系统时钟以保持准确

在大多数配置中,硬件时钟在启动后不会频繁更新。相反,它作为后备参考。有些系统会定期将硬件时钟与系统时钟同步,但这相对于基于 NTP 的同步是次要的。

你可以使用以下命令观察这种关系:

  1. timedatectl

这将显示:

  • Local time — 当前系统时间
  • RTC time — 硬件时钟时间
  • System clock synchronized — NTP 是否已调整系统时钟

例如:

Local time: Mon 2026-03-23 02:03:03 EDT
RTC time: Mon 2026-03-23 06:03:03
System clock synchronized: yes

在此输出中:

  • 系统时钟通过 NTP 同步
  • 硬件时钟保持在 UTC
  • 显示的本地时间来源于系统时钟和配置的时区

理解这种关系有助于解释为什么:

  • 启动后时间可能短暂显示不正确
  • NTP 同步会随着时间提高准确性
  • 将硬件时钟保持在 UTC 可避免跨环境的不一致

这种模型,即启动时使用 RTC、运行时使用内核时钟、NTP 用于校正,是现代 Linux 系统计时的基础。

大多数现代 Ubuntu 系统即使将系统时区配置为本地区域,也会将硬件时钟设置为 UTC。这有助于避免与夏令时相关的问题,并确保系统间的一致性。

你可以使用以下命令检查这些设置:

  1. timedatectl

在输出中查找以下字段:

  • Time zone — 你配置的系统时区
  • RTC in local TZ — 硬件时钟是否使用本地时间

典型的配置如下所示:

Time zone: America/New_York (EDT, -0400)
RTC in local TZ: no

这意味着你的系统显示本地时间,而硬件时钟保持设置为 UTC。

现在你已经练习了检查时钟和设置时区,可以在下一节确认你的时间是否正确同步。

使用 timedatectl 控制 systemd-timesyncd

以前,大多数网络时间同步都由网络时间协议守护进程ntpd 处理。该服务连接到其他 NTP 服务器池,这些服务器为其提供持续且准确的时间更新。

但现在在 Ubuntu 的默认安装中,您可以使用 systemd-timesyncd 替代 ntpdsystemd-timesyncd 通过连接相同的时钟服务器工作方式类似,但更轻量级,并且与 Ubuntu 上的 systemd 集成得更紧密。

您可以通过不带参数运行 timedatectl 来查询 systemd-timesyncd 的状态。在这种情况下,您不需要使用 sudo

  1. timedatectl
输出
Local time: Mon 2026-03-23 02:03:03 EDT Universal time: Mon 2026-03-23 06:03:03 UTC RTC time: Mon 2026-03-23 06:03:03 Time zone: America/New_York (EDT, -0400) System clock synchronized: yes NTP service: active RTC in local TZ: no

此命令会输出本地时间、通用时间(如果您没有从 UTC 时区切换,本地时间可能与通用时间相同),以及一些网络时间状态信息。System clock synchronized: yes 表示时间已成功同步,NTP service: active 表示 systemd-timesyncd 正在运行。

如果您的输出显示 NTP 服务未激活,请使用 timedatectl 开启它:

  1. sudo timedatectl set-ntp on

之后,再次运行 timedatectl 以确认网络时间状态。同步可能需要一分钟时间,但最终 System clock synchronized: 将显示 yesNTP service: 将显示为 active

安装和配置 chrony

虽然 systemd-timesyncd 在许多使用场景中工作良好,但某些环境需要更精确和更具弹性的时间同步。在这些情况下,您可以使用 chrony,这是一个现代的 NTP 实现,专为处理可变网络条件、虚拟化环境以及不总是持续在线的系统而设计。

在安装 chrony 之前,您需要禁用默认的 systemd-timesyncd 服务,以防止时间同步服务之间发生冲突。

首先,禁用网络时间同步,以便 systemd-timesyncd 停止管理您的系统时钟:

  1. sudo timedatectl set-ntp no

接下来,通过再次运行 timedatectl 验证 systemd-timesyncd 是否处于非活动状态:

  1. timedatectl

在输出中,确认 NTP service: 字段显示为 inactive

现在更新您的软件包索引,以便从配置的仓库中安装最新可用版本:

  1. sudo apt update

然后安装 chrony

  1. sudo apt install chrony

安装完成后,chrony 服务将自动启动。您可以通过检查其状态来确认它正在运行:

  1. systemctl status chrony
● chrony.service - chrony, an NTP client/server
     Loaded: loaded (/usr/lib/systemd/system/chrony.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-03-23 02:46:34 EDT; 12s ago
       Docs: man:chronyd(8)
             man:chronyc(1)
             man:chrony.conf(5)
    Process: 9762 ExecStart=/usr/lib/systemd/scripts/chronyd-starter.sh $DAEMON_OPTS (code=exited, status=0/SUCCESS)
   Main PID: 9771 (chronyd)
      Tasks: 2 (limit: 4655)
     Memory: 1.4M (peak: 2.1M)
        CPU: 60ms
     CGroup: /system.slice/chrony.service
             ├─9771 /usr/sbin/chronyd -F 1
             └─9772 /usr/sbin/chronyd -F 1
            

如果一切正常,输出将包含 active (running)

要检查系统正在使用哪些时间源,请运行:

  1. chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
=======================================================================================
^- alphyn.canonical.com          2   6    17    20    +13ms[  +13ms] +/-  132ms
^- prod-ntp-5.ntp4.ps5.cano>     2   6    17    20  +2952us[+2952us] +/-   74ms
^- prod-ntp-4.ntp4.ps5.cano>     2   6    17    19    +15ms[  +15ms] +/-   84ms
^- prod-ntp-3.ntp1.ps5.cano>     2   6    17    22  -1839us[-7004us] +/-   82ms
^* 139.59.55.93                  2   6    17    22   -520us[-5684us] +/-   18ms
^+ 172-236-180-15.ip.linode>     4   6    17    26  +1450us[+1450us] +/-   47ms
^- inbom5-ntp-001.aaplimg.c>     2   6    17    26   -502us[ -502us] +/-   54ms
^- time.cloudflare.com           3   6    17    26    +24ms[  +24ms] +/-   63ms

这将显示时间源列表及其状态。^* 符号表示当前选定的源,而 ^+ 表示额外的候选源。

在该输出中,第一个字符(^)表示源类型(NTP),第二个字符表示状态。例如,^* 表示选定的源,而 ^- 表示可达但当前未使用的源。

要获取更详细的同步信息,请运行:

  1. chronyc tracking
Reference ID    : 8B3B375D (139.59.55.93)
Stratum         : 3
Ref time (UTC)  : Mon Mar 23 06:47:45 2026
System time     : 0.000316560 seconds slow of NTP time
Last offset     : -0.000402412 seconds
RMS offset      : 0.000402412 seconds
Frequency       : 30.981 ppm slow
Residual freq   : -0.000 ppm
Skew            : 67.538 ppm
Root delay      : 0.037341543 seconds
Root dispersion : 0.004759084 seconds
Update interval : 64.5 seconds
Leap status     : Normal

此命令显示系统时钟偏移和频率调整等指标,有助于确认系统正在正确同步。

配置时间服务器

默认情况下,chrony 使用 Ubuntu 的 NTP 池服务器。如果您需要使用内部时间源或指定特定的 NTP 服务器集,可以通过编辑 chrony 的配置文件来实现。

使用文本编辑器打开配置文件:

  1. sudo nano /etc/chrony/chrony.conf

在该文件中,找到 pool 指令,它告诉 chrony 使用哪个服务器池:

pool ntp.ubuntu.com iburst

您可以替换此值,或使用 server 行添加额外的源。例如:

server time.google.com iburst
server time.cloudflare.com iburst

iburst 选项有助于 chrony 在服务启动时更快地进行初始时间校正。

保存更改后,重启服务以重新加载更新的配置:

  1. sudo systemctl restart chrony

可选:允许客户端访问

如果您希望系统充当网络上其他机器的 NTP 服务器,可以配置 chrony 以允许传入的客户端请求。

为此,为应能查询您的服务器的子网添加 allow 指令:

allow 192.168.0.0/16

然后重启 chrony 以应用更改:

  1. sudo systemctl restart chrony

如果您使用防火墙,请确保它允许端口 123 的入站 UDP 流量,这是 NTP 使用的标准端口。

最后,您可以确认时间同步是否处于活动状态:

  1. timedatectl

如果一切正常,输出将显示系统时钟已同步,并且 NTP 服务处于活动状态。

切换到 ntpd(传统选项)

注意: 在现代 Ubuntu 系统上,ntp 包被视为传统选项。对于大多数用例,推荐使用 chrony,因为它具有更高的精度和性能,尤其是在云或虚拟化环境中。

systemd-timesyncd 在大多数情况下都能正常工作。然而,有些应用程序可能对时间上的任何干扰敏感。在这种情况下,ntpd 是您可以使用的另一种网络时间服务。ntpd 使用复杂的技术不断且逐步地将系统时间保持在轨道上。

在安装 ntpd 之前,您需要关闭 systemd-timesyncd,以防止两个服务发生冲突。您可以通过以下命令禁用网络时间同步来实现:

  1. sudo timedatectl set-ntp no

验证时间同步是否已禁用:

  1. timedatectl

检查您的输出是否显示 NTP service: inactive。这意味着 systemd-timesyncd 已停止。现在您可以准备使用 apt 安装 ntp 包了。

首先,运行 apt update 以刷新本地软件包索引:

  1. sudo apt update

然后,运行 apt install ntp 来安装此包:

  1. sudo apt install ntp

安装完成后,ntpd 将自动启动。您可以通过查询 ntpd 的状态信息来验证一切是否正常工作:

  1. ntpq -p
输出
remote refid st t when poll reach delay offset jitter ==================================================================== 0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000 +t1.time.bf1.yah 129.6.15.28 2 u 16 64 1 61.766 -20.068 1.964 +puppet.kenyonra 80.72.67.48 3 u 16 64 1 2.622 -18.407 2.407 *ntp3.your.org .GPS. 1 u 15 64 1 50.303 -17.499 2.708 +time.cloudflare 10.4.1.175 3 u 15 64 1 1.488 -18.295 2.670 +mis.wci.com 216.218.254.202 2 u 15 64 1 21.527 -18.377 2.414 +ipv4.ntp1.rbaum 69.89.207.99 2 u 12 64 1 49.741 -17.897 3.417 +time.cloudflare 10.4.1.175 3 u 15 64 1 1.039 -16.692 3.378 +108.61.73.243 129.6.15.29 2 u 14 64 1 70.060 -16.993 3.363 +ny-time.gofile. 129.6.15.28 2 u 21 64 1 75.349 -18.333 2.763 golem.canonical 17.253.34.123 2 u 28 64 1 134.482 -21.655 0.000 ntp3.junkemailf 216.218.254.202 2 u 19 64 1 2.632 -16.330 4.387 clock.xmission. .XMIS. 1 u 18 64 1 24.927 -16.712 3.415 alphyn.canonica 142.3.100.2 2 u 26 64 1 73.612 -19.371 0.000 strongbad.voice 192.5.41.209 2 u 17 64 1 70.766 -18.159 3.481 chilipepper.can 17.253.34.123 2 u 25 64 1 134.982 -19.848 0.000 pugot.canonical 145.238.203.14 2 u 28 64 1 135.694 -21.075 0.000

ntpqntpd 的查询工具。-p 标志请求 ntpd 连接的 NTP 服务器(或peers)的信息。您的输出可能略有不同,但会列出默认的 Ubuntu pool 服务器以及其他几个。请记住,ntpd 建立连接可能需要几分钟时间。

比较 systemd-timesyncdchronyntpd

Ubuntu 支持多种时间同步服务,每种服务针对不同的使用场景设计。虽然这三种服务都依赖 NTP 来同步系统时间,但它们在精度、复杂性和现代环境适用性方面有所不同。

下表突出了它们的关键差异:

功能 / 特性 systemd-timesyncd chrony ntpd (传统)
Ubuntu 默认启用
易用性 非常简单 中等 中等
精度 良好(基本使用) 高(生产级)
处理网络不稳定性 有限 优秀 中等
启动同步 较慢 快速(使用 iburst 中等
时钟漂移校正 基本 高级且自适应 高级
资源占用 非常低 较高
在 VM/云环境中表现良好 基本支持 优秀 有限
可作为 NTP 服务器
配置灵活性 最小

总体而言,systemd-timesyncd 适用于首选最小配置的简单环境。对于大多数生产环境、云环境或对延迟敏感的系统,chrony 提供更好的精度和弹性。ntpd 服务主要保留用于与旧系统兼容,不再是新部署的首选。

常见错误和故障排除步骤

虽然时间同步通常会自动配置,但由于配置、网络或服务行为问题,仍然可能发生故障。因为 Linux 时间保持依赖于硬件时钟 (RTC)、内核系统时钟和 NTP 同步服务之间的协调,所以在这个过程中的不同阶段都可能出现问题。

在故障排除时,将时间保持视为一个序列会很有帮助。系统在启动时从硬件时钟初始化时间,内核在运行时维护系统时钟,而 NTP 服务则持续校正该时钟。如果这个序列的任何部分失败,系统可能会显示不正确或不稳定的时间。

系统时钟未同步

如果 timedatectl 显示 System clock synchronized: no,则您的系统时钟未被 NTP 服务校正,并可能随时间漂移。

此问题通常发生在没有同步服务激活时,或者服务无法访问外部时间服务器时。同步完成前,在启动后也可能短暂出现。

首先,检查时间同步服务是否已启用:

  1. timedatectl

如果 NTP service 字段显示未激活,并且您想使用 systemd-timesyncd,则启用它:

  1. sudo timedatectl set-ntp on

如果您安装了 chrony,请验证服务是否正在运行:

  1. systemctl status chrony

等待一段时间让同步完成,然后再次检查状态。

NTP 服务激活但时间未更新

如果 NTP 服务已激活但系统时钟仍未同步,则服务正在运行但无法获取有效时间数据。

这种情况最常由网络连接问题、DNS 解析失败或防火墙限制导致,无法与 NTP 服务器通信。

测试网络连接:

  1. ping -c 3 ntp.ubuntu.com

验证 DNS 解析:

  1. getent hosts ntp.ubuntu.com

如果任一命令失败,请先解决底层网络或 DNS 问题后再继续。

无可用时间源 (chrony)

在使用 chrony 时,运行 chronyc sources 可能发现没有可用时间源。

这通常表示 chrony 由于配置错误、网络问题或上游服务器不可用而无法与其配置的服务器通信。

检查配置文件:

  1. sudo nano /etc/chrony/chrony.conf

确保存在有效的服务器或池条目,例如:

pool ntp.ubuntu.com iburst

修改后,重启服务:

  1. sudo systemctl restart chrony

然后验证时间源是否现在可用。

启动后时间不正确

您可能会注意到系统时间在启动后立即不正确,但不久后会自动校正。

这是因为系统最初从硬件时钟读取时间,而硬件时钟在系统关机期间可能已漂移。只有在系统完全启动并建立网络连接后,同步才开始。

等待几分钟,让 NTP 服务同步系统时钟。然后验证状态:

  1. timedatectl

如果时间未自动校正,请确保同步服务已激活并正常运行。

大时间漂移或缓慢校正

如果系统时间严重不正确,同步可能显得缓慢或渐进。

NTP 服务通常避免对系统时钟进行大幅突变调整。相反,它们会逐渐调整时间,以防止对运行进程造成干扰。

如果时间差异较大,手动设置一个近似值:

  1. sudo timedatectl set-time "2026-03-23 10:00:00"

然后重新启用同步,让 NTP 服务精细调整时间。

时间同步服务之间的冲突

如果多个时间同步服务同时运行,系统时钟可能行为不可预测。

这种情况通常发生在 systemd-timesyncdchronyntpd 同时激活时,导致冲突调整。

在启用另一个服务前,先禁用一个服务:

  1. sudo timedatectl set-ntp no

然后启动您首选的服务:

  1. sudo systemctl enable --now chrony

确保只有一个服务管理时间同步。

防火墙或网络阻塞 NTP

如果您的系统无法访问外部时间服务器,同步将失败。

这通常是因为防火墙或网络策略阻塞了端口 123 上的出站 UDP 流量。

允许出站 NTP 流量:

  1. sudo ufw allow out 123/udp

同时验证任何外部限制,例如云安全组或企业防火墙规则。

虚拟机中的时间漂移

在虚拟化环境中,系统时钟可能漂移或行为不一致。

客户系统的时钟可能受主机或 hypervisor 影响,尤其是两者都尝试独立管理时间时。

确保主机系统正确同步,并避免在客户系统中运行多个同步机制。在这些环境中,chrony 通常更受欢迎,因为它能更有效地处理漂移。

硬件时钟配置错误

如果系统时间在重启后重置或行为不一致,则硬件时钟可能配置错误。

这种情况通常发生在硬件时钟设置为本地时间而不是 UTC 时,或者已大幅漂移时。

检查当前配置:

  1. timedatectl

确保 RTC in local TZ 设置为 no。将硬件时钟保持在 UTC 可避免夏令时问题,并确保跨系统的一致行为。

常见问题解答

1. Ubuntu 的默认时间同步服务是什么?

Ubuntu 24.04 使用 systemd-timesyncd 作为默认时间同步服务。它是一个轻量级的 NTP 客户端,在大多数安装中会自动启用,且几乎无需配置。虽然它足以满足基本计时需求,但无法提供像 chrony 等替代方案那样的高级功能或灵活性。

2. 如何检查 Ubuntu 上时间同步是否处于活动状态?

您可以通过运行以下命令检查时间同步是否处于活动状态:

  1. timedatectl

在输出中,查找 System clock synchronizedNTP service 字段。如果两者均显示正值(例如 yesactive),则表示系统时钟正在与外部时间源进行同步。

3. timesyncdchrony 有什么区别?

systemd-timesyncd 设计简洁轻量,适合需要基本时间同步且配置最少的系统。它作为 systemd 的一部分运行,足以满足许多标准用例。

相比之下,chrony 是一个更高级且功能丰富的实现。它提供更快、更精确的同步,更好地处理网络不稳定性,并具有更大的配置灵活性。因此,chrony 通常是生产系统、云环境以及对精度要求更高的系统的首选。

4. 如何从命令行更改 Ubuntu 的时区?

您可以使用 timedatectl 命令更改系统时区。首先,列出可用时区:

  1. timedatectl list-timezones

然后设置所需的时区:

  1. sudo timedatectl set-timezone Region/City

例如:

  1. sudo timedatectl set-timezone Asia/Kolkata

这会立即更新系统的时区,该更改将在 datetimedatectl 等命令中反映出来。

5. 为什么我的 Ubuntu 服务器在 timedatectl 输出中显示“NTP synchronized: no”?

timedatectl 显示 System clock synchronized: no 时,表示系统时钟当前未被 NTP 服务校正。这可能是因为没有同步服务在运行、服务由于网络或 DNS 问题无法访问外部时间服务器,或者系统最近启动且同步尚未完成。在大多数情况下,验证 NTP 服务状态和网络连接即可解决问题。

6. 我可以同时运行 chronytimesyncd 吗?

不,建议不要同时运行 chronysystemd-timesyncd。这两个服务都会尝试控制和调整系统时钟,可能导致冲突更新和不稳定的计时。为了确保一致且可预测的同步,在启用另一个服务之前应禁用其中一个。

7. 我的服务器应该达到什么 NTP stratum 级别?

大多数服务器与 stratum 2 或 stratum 3 时间源同步,这为一般系统和应用需求提供了足够的精度。较低的 stratum 级别表示更接近主参考时钟,但对于大多数环境,stratum 2–3 在精度和可靠性之间提供了良好的平衡。极低的 stratum 级别通常仅在专业或高精度系统中需要。

8. Ubuntu 24.04 支持 NTS (Network Time Security) 吗?

是的,Ubuntu 24.04 通过 chrony 支持 Network Time Security (NTS),前提是客户端和 NTP 服务器均支持它。NTS 为 NTP 通信添加了加密和认证,有助于防范欺骗和篡改。然而,它需要额外的配置和兼容服务器,且在大多数系统上默认未启用。

结论

在本文中,您使用了常见工具来检查服务器的时间设置、配置时区,并了解系统时钟与硬件时钟(RTC)之间的关系。您还验证了 Ubuntu 默认的时间同步服务(systemd-timesyncd)正在运行,并且安装并验证了 chrony 作为备选的 NTP 实现,用于更高级的使用场景,包括自定义时间源和(可选)允许客户端访问。

要继续学习,您可以查阅 chrony 文档以获取配置细节,例如 NTS(Network Time Security),并且可以参考 NTP Pool Project 以更好地了解公共时间服务器的组织方式。

有关更多 Ubuntu 相关教程,请查看以下文章:

  • 使用 Ubuntu 20.04 进行初始服务器设置
  • 如何在 Ubuntu 上使用 UFW 设置防火墙
  • 理解 Systemd Units 和 Unit Files