凌峰创科服务平台

Linux NTP时间同步服务器如何配置与维护?

  1. 什么是 NTP? - 基础概念
  2. 两种主要模式:客户端/服务器 vs. 对等体 - 你需要哪种?
  3. 配置 NTP 客户端(同步到公共服务器) - 最常见的个人/服务器场景
  4. 配置 NTP 服务器(为局域网内其他设备提供时间) - 企业级场景
  5. 常用命令和故障排查
  6. 现代替代方案:Chrony - 强烈推荐的新工具

什么是 NTP?

NTP (Network Time Protocol) 是一种用于在计算机网络中同步计算机时间的协议,它的设计目标是提供高精度和可靠的时间服务,误差可以控制在毫秒甚至微秒级别。

Linux NTP时间同步服务器如何配置与维护?-图1
(图片来源网络,侵删)
  • 为什么需要它? 计算机的时钟并不完美,会因为温度、电压等因素产生漂移,如果没有统一的时间,会导致日志文件时间戳混乱、数据库事务顺序错误、分布式系统任务调度失败、安全认证(如 Kerberos)出等问题。
  • 工作原理:NTP 客户端从 NTP 服务器请求时间,并根据服务器返回的时间戳和往返时间,计算出时间差和延迟,然后逐步调整本地时钟。

两种主要模式:客户端/服务器 vs. 对等体

在配置之前,你需要明确你的角色:

  • 客户端/服务器 模式

    • 客户端:从指定的一个或多个 NTP 服务器同步时间,这是最常见的模式,适用于绝大多数个人电脑、服务器和物联网设备。
    • 服务器:连接到一个或多个外部高精度时间源(如 GPS 原子钟、公共 NTP 池),然后将时间分发给局域网内的其他客户端,适用于企业或小型网络。
  • 对等体 模式

    • 两台或多台 NTP 服务器之间互为对等体,它们之间相互同步时间,形成一个时间源集群,这种模式适用于构建高可用的内部时间服务器,普通用户一般用不到

配置 NTP 客户端(同步到公共服务器)

这是最常用的配置,让你的 Linux 系统保持准确。

Linux NTP时间同步服务器如何配置与维护?-图2
(图片来源网络,侵删)

A. 安装 NTP 软件

现代 Linux 发行版通常使用 chronyntp,我们先介绍传统的 ntp

# 对于 Debian/Ubuntu
sudo apt update
sudo apt install ntp
# 对于 CentOS/RHEL/Fedora
sudo yum install ntp  # 对于 CentOS 7 及以下
sudo dnf install ntp  # 对于 CentOS 8/RHEL 8/Fedora

B. 配置 NTP 客户端

编辑 NTP 的主配置文件 /etc/ntp.conf

sudo vim /etc/ntp.conf

你需要做的核心修改是:

  1. 注释或删除默认的 server 行:文件中可能已经有 server 0.centos.pool.ntp.org 这样的行,你可以将它们注释掉(行首加 )。
  2. 添加公共 NTP 服务器池:这是最推荐的方式,公共 NTP 池(如 pool.ntp.org)会自动将你路由到地理位置上最近的、响应最好的服务器。
# 使用公共 NTP 池,推荐使用中国的服务器池
# 中国 NTP 服务器池 (推荐)
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
# 全球公共 NTP 池
# server 0.pool.ntp.org
# server 1.pool.ntp.org
# server 2.pool.ntp.org
# server 3.pool.ntp.org
# 你也可以使用特定服务商的 NTP 服务器,如阿里云、腾讯云等
# server ntp1.aliyun.com
# server ntp2.aliyun.com

提示:使用 pool.ntp.org 时,它默认会提供 4 个服务器,这很好,但如果你的机器在防火墙后面或需要更高的稳定性,可以指定 iburst 选项,让它在首次同步时快速发送多个包。

Linux NTP时间同步服务器如何配置与维护?-图3
(图片来源网络,侵删)
server 0.cn.pool.ntp.org iburst

C. 启动并启用 NTP 服务

# 启动 NTP 服务
sudo systemctl start ntpd
# 设置开机自启
sudo systemctl enable ntpd
# 检查服务状态
sudo systemctl status ntpd

D. 验证同步状态

等待几分钟让 NTP 客户端与服务器同步后,使用以下命令检查。

# 查看同步摘要信息
ntpq -p
# 输出示例:
# remote           refid      st t when poll reach   delay   offset  jitter
# ==============================================================================
# 0.cn.pool.ntp.org .POOL.          16 p    -   64    0    0.000    0.000   0.000
# 1.cn.pool.ntp.org .POOL.          16 p    -   64    0    0.000    0.000   0.000
# 2.cn.pool.ntp.org .POOL.          16 p    -   64    0    0.000    0.000   0.000
# 3.cn.pool.ntp.org .POOL.          16 p    -   64    0    0.000    0.000   0.000
# ntp1.aliyun.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
# ntp2.aliyun.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
# ntp3.aliyun.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
# ntp4.aliyun.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
# +37.75.16.5      17.113.19.23     3 u   64   64    1   223.712   41.234   0.000
# 120.25.115.20    133.243.238.163  3 u   62   64    1   214.872  -12.567   0.000

解读 ntpq -p 的输出

  • remote: 对端 NTP 服务器的地址或域名。
  • refid: 该服务器同步的上游时间源。
  • st: Stratum (层级),层级越小,离时间源越近,层级 0 是原子钟,层级 1 是连接原子钟的服务器,我们通常连接的是层级 2 或 3。
  • t: Type. u 表示 unicast (单播),p 表示 pool。
  • when: 上次请求后经过的秒数。
  • poll: 同步间隔(秒)。
  • reach: 一个八进制数,表示最近 8 次尝试是否成功。377 (二进制 11111111) 表示全部成功。
  • delay: 网络延迟,单位毫秒。
  • offset: 时间偏差,单位毫秒,这是你的时钟与 NTP 服务器时间的差值。这个值越小越好,如果太大,说明时间不同步。
  • jitter: 时间抖动,单位毫秒,表示时间稳定性的波动,值越小越好。

offset 值在几十毫秒以内,reach 值不为 0,说明同步是正常的。


配置 NTP 服务器(为局域网提供时间)

假设你的服务器 IP 是 168.1.100

A. 安装和配置

安装步骤与客户端相同,配置 /etc/ntp.conf 时,需要做以下修改:

sudo vim /etc/ntp.conf
  1. 设置上游时间源:你的服务器也需要一个准确的时间源,像客户端一样,添加公共 NTP 池。

    # 上游时间源
    server 0.cn.pool.ntp.org iburst
    server 1.cn.pool.ntp.org iburst
  2. 限制客户端访问(重要!):默认情况下,NTP 服务器会响应所有请求,为了安全和性能,你应该限制只有你的局域网可以同步时间。

    # 允许局域网内所有客户端同步时间
    # 192.168.1.0/24 表示 192
分享:
扫描分享到社交APP
上一篇
下一篇