凌峰创科服务平台

Linux ntpdate 服务器如何正确配置?

什么是 ntpdate

ntpdate 是一个用于从 Network Time Protocol (NTP) 服务器获取时间并设置本地系统时间的命令行工具,它就像一个“一次性”的时间同步工具,它会连接到指定的 NTP 服务器,获取当前精确时间,然后立即更新你本地计算机的时钟。

Linux ntpdate 服务器如何正确配置?-图1
(图片来源网络,侵删)

重要提示: ntpdate 在现代 Linux 发行版中已被弃用,官方推荐使用更现代、功能更强大的 ntpdchrony 服务。ntpd 是一个持续运行的后台守护进程,它会不断、平滑地调整你的系统时间,而不仅仅是设置一次。chrony 则是 ntpd 的一个更现代、更快的替代品,尤其在不稳定的网络环境下表现更好。

尽管如此,ntpdate 仍然有其用武之地,

  • 一次性手动同步:当你需要快速将系统时间与某个标准源对齐时。
  • 应急修复:当系统时间严重错误时,先用 ntpdate 快速拉回正轨,再启动 ntpd 服务进行持续同步。
  • 脚本或任务:在某些自动化脚本中,可能只需要在任务开始前同步一次时间。

安装 ntpdate

在大多数现代 Linux 发行版中,ntpdate 包可能已经不默认安装,或者与 ntp 包分离了。

Debian / Ubuntu

sudo apt update
sudo apt install ntpdate

注意:在较新的 Ubuntu 版本(如 20.04+)中,你可能需要安装 ntp 包来获得 ntpdate 命令。

Linux ntpdate 服务器如何正确配置?-图2
(图片来源网络,侵删)

CentOS / RHEL / Fedora

sudo yum install ntpdate
# 或者使用 dnf (新版本)
sudo dnf install ntpdate

Arch Linux

sudo pacman -S ntp

在 Arch 中,ntpdate 作为 ntp 包的一部分被安装。


如何使用 ntpdate

基本语法非常简单:

sudo ntpdate -q [NTP服务器地址]
  • sudo:修改系统时间需要 root 权限。
  • -q查询模式,这是推荐使用的第一个选项,它不会改变你的系统时间,只会显示从 NTP 服务器获取到的时间信息,并告诉你如果同步的话时间会调整多少,这可以让你先检查一下时间差异和服务器响应。
  • [NTP服务器地址]:你想要同步的 NTP 服务器的地址或域名。

常用公共 NTP 服务器

你可以使用以下公共 NTP 服务器进行测试,为了负载均衡,最好使用你地理位置较近的服务器。

  • 中国国家授时中心: ntp.ntsc.ac.cn
  • 阿里云 NTP 服务器: ntp1.aliyun.com, ntp2.aliyun.com
  • NTP Pool 项目: 这是一个全球性的 NTP 服务器池,它会自动为你分配最佳的服务器,推荐使用。
    • pool.ntp.org (全球)
    • cn.pool.ntp.org (中国)
    • asia.pool.ntp.org (亚洲)

使用示例

示例 1:查询时间差异(推荐操作)

在同步前,先查询一下与 pool.ntp.org 的时间差异。

Linux ntpdate 服务器如何正确配置?-图3
(图片来源网络,侵删)
sudo ntpdate -q pool.ntp.org

可能的输出:

server 216.239.35.0 (from interface eth0): offset -0.123456 sec, delay 0.045678 sec, jitter 0.001234
server 216.239.35.4 (from interface eth0): offset +0.098765 sec, delay 0.046789 sec, jitter 0.003456
server 216.239.35.8 (from interface eth0): offset -0.054321 sec, delay 0.047890 sec, jitter 0.002345
22 Jun 14:30:15 ntpdate[12345]: adjust time server 216.239.35.4 offset +0.098765 sec
  • 解读
    • offset: 这是本地时间与服务器时间的差值,如果为正,表示本地时间比服务器快;如果为负,表示本地时间比服务器慢。
    • delay: 网络延迟。
    • jitter: 时间抖动,即时间变化的稳定性。
    • adjust time ...: ntpdate 找到了一个最好的服务器,并告诉你如果执行同步,它会调整这个 offset 的时间。

示例 2:实际同步时间

如果你查询后觉得时间差异可以接受,或者确实需要立即同步,可以去掉 -q 参数执行。

sudo ntpdate pool.ntp.org

可能的输出:

22 Jun 14:31:05 ntpdate[12345]: step time server 216.239.35.4 offset +0.098765 sec
  • 解读
    • step time: 这表示 ntpdate 采用了“跳跃式”同步,直接将系统时间设置为目标时间,这是它的标准行为,对于大的时间差是必要的。
    • 你的系统时间已经被更新为与 NTP 服务器一致。

示例 3:指定多个 NTP 服务器

你可以提供一个列表,ntpdate 会依次尝试,直到找到一个可用的。

sudo ntpdate ntp.ntsc.ac.cn ntp1.aliyun.com cn.pool.ntp.org

现代替代方案:ntpdchrony

如前所述,ntpdate 已被弃用,对于生产环境或需要持续精确时间的系统,你应该使用以下服务之一。

使用 chronyd (推荐)

chrony 是目前最流行、最快速的 NTP 客户端/服务器,尤其适合虚拟机和网络不稳定的场景。

  1. 安装 (CentOS/RHEL/Fedora):

    sudo yum install chrony

    安装 (Debian/Ubuntu):

    sudo apt install chrony
  2. 配置文件 (/etc/chrony.conf): 编辑配置文件,确保你的 NTP 服务器地址在 poolserver 指令中。

    # 使用中国 NTP 服务器池
    pool cn.pool.ntp.org iburst
    # 或者指定特定服务器
    # server ntp.ntsc.ac.cn iburst
    # 允许其他机器同步此服务器的时间(如果需要)
    # allow 192.168.1.0/24
  3. 启动并设置开机自启:

    sudo systemctl start chronyd
    sudo systemctl enable chronyd
  4. 检查状态:

    # 查看服务状态
    sudo systemctl status chronyd
    # 查看同步信息(非常详细)
    chronyc tracking
    chronyc sources

使用 ntpd

ntpd 是传统的 NPT 守护进程。

  1. 安装 (CentOS/RHEL/Fedora):

    sudo yum install ntp

    安装 (Debian/Ubuntu):

    sudo apt install ntp
  2. 配置文件 (/etc/ntp.conf):

    # 使用中国 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
    # 禁止修改本地时钟
    restrict default nomodify notrap nopeer noquery
  3. 启动并设置开机自启:

    sudo systemctl start ntpd
    sudo systemctl enable ntpd
  4. 检查状态:

    # 查看服务状态
    sudo systemctl status ntpd
    # 查看同步信息
    ntpq -p

总结对比

特性 ntpdate ntpd / chronyd
工作模式 一次性、命令行工具 持续运行、后台守护进程
时间调整 跳跃式 (Step) 平滑式 (Slewing),除非差异过大
精确度 仅在同步瞬间精确 持续保持高精度
资源占用 极低,运行即结束
分享:
扫描分享到社交APP
上一篇
下一篇