一键安装Linux NTP服务器

Linux NTP服务器一键安装操作

1. 脚本概述

1.1 脚本功能

  • Linux NTP服务器一键安装(适配多系统/EOL归档源)
  • 核心特性
    • NTP全冲突检测清理
    • 国内优质NTP节点配置
    • DNS解析修复
    • 多系统源自动适配
    • 全兼容时区配置
    • NTP服务测试验证

1.2 适用系统

  • CentOS 7.9
  • AnolisOS 7.9/8.9
  • Ubuntu 22.04+
  • openEuler 22.03+
  • Kylin server v10

1.3 执行权限

  • 必须使用 root 用户运行

2. 执行流程

2.1 前期准备

  1. 确保服务器具有网络连接
  2. 以root用户登录系统
  3. 下载脚本文件并赋予执行权限
    chmod +x Linux_NTP_Install.sh

2.2 执行步骤

步骤1:运行脚本

./Linux_NTP_Install.sh

步骤2:脚本自动执行过程

序号 执行操作 输出信息 用户交互
1 检查root权限 若不是root用户,会提示错误并退出
2 清理NTP冲突项 停止并禁用所有NTP相关服务,卸载冲突软件包,清理残留配置文件,释放123/UDP端口
3 修复DNS解析 备份原有DNS配置,写入国内公共DNS,测试解析连通性
4 配置软件源 检测系统版本,配置对应软件源(适配EOL系统),修复GPG密钥
5 选择NTP服务类型 主流版本系统使用chronyd,其他系统可选择:1) chronyd(!!推荐!!,轻量/稳定,主流Linux默认)2) ntpd(传统NTP服务,兼容性广,部分系统已被官方弃用/不推荐) 需要输入数字选择
6 配置内网同步权限 输入允许同步的网段,如192.168.1.0/24 需要输入网段
7 安装并配置NTP服务 安装选择的服务,配置国内优质NTP服务器列表,启动服务并设置自启,放行防火墙端口
8 配置系统时区 显示当前时区,询问是否更新为亚洲上海(Asia/Shanghai),默认y 需要输入y/n
9 测试NTP服务 修改系统时间为错误时间,强制同步NTP时间,验证同步结果
10 输出操作完成信息 显示客户端配置方法和服务端常用验证命令

3. 输出信息解释

3.1 颜色和符号说明

  • 红色(RED):错误信息
  • 绿色(GREEN):成功信息
  • 黄色(YELLOW):警告信息
  • 蓝色(BLUE):操作步骤标题
  • 紫色(PURPLE):状态信息标题
  • 青色(CYAN):强调信息
  • 符号
    • ✅:成功
    • ⚠️:警告
    • ❌:错误
    • ➜:操作提示

3.2 关键输出信息

3.2.1 系统检测信息(CentOS 7示例)

===== 配置Yum归档源(适配CentOS 7 EOL)=====
➜ 已备份原有Yum源至 /etc/yum.repos.d/bak/
➜ 正在清理并重建Yum缓存...
✅ 阿里CentOS 7归档源配置成功
✅ Yum归档源配置成功

3.2.2 NTP服务安装完成信息

chronyd服务安装完成信息:

----- chronyd服务状态 -----
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2026-02-07 21:23:43 EST; 1s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
 Main PID: 2726 (chronyd)
   CGroup: /system.slice/chronyd.service
           └─2726 /usr/sbin/chronyd

Feb 07 21:23:42 localhost.localdomain systemd[1]: Starting NTP client/server...
Feb 07 21:23:42 localhost.localdomain chronyd[2726]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDN... +DEBUG)
Feb 07 21:23:42 localhost.localdomain chronyd[2726]: Initial frequency -1.193 ppm
Feb 07 21:23:43 localhost.localdomain systemd[1]: Started NTP client/server.
Hint: Some lines were ellipsized, use -l to show in full.

----- NTP同步状态 -----
210 Number of sources = 27

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
||                                 |    |           |
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? 1.82.219.234                  0   6     0     -     +0ns[   +0ns] +/-    0ns
^? 14.29.218.92                  0   6     0     -     +0ns[   +0ns] +/-    0ns
^? static-dia-82-17.143.118>     0   6     0     -     +0ns[   +0ns] +/-    0ns
^? 8.149.241.96                  0   6     0     -     +0ns[   +0ns] +/-    0ns
^? 203.107.6.88                  0   6     0     -     +0ns[   +0ns] +/-    0ns
✅ chronyd安装配置完成

ntpd服务安装完成信息:

----- ntpd服务状态 -----
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2026-02-07 21:26:28 EST; 1s ago
 Main PID: 2657 (ntpd)
   CGroup: /system.slice/ntpd.service
           └─2657 /usr/sbin/ntpd -u ntp:ntp -g

Feb 07 21:26:28 localhost.localdomain ntpd[2657]: Listen normally on 2 lo 127.0.0.1 UDP 123
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: Listen normally on 3 ens192 192.168.1.75 UDP 123
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: Listen normally on 5 lo ::1 UDP 123
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: Listen normally on 6 ens192 fe80::983:259d:9f0:9d10 UDP 123
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: Listening on routing socket on fd #23 for interface updates
Feb 07 21:26:28 localhost.localdomain systemd[1]: Started Network Time Service.
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: 0.0.0.0 c016 06 restart
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
Feb 07 21:26:28 localhost.localdomain ntpd[2657]: 0.0.0.0 c011 01 freq_not_set

----- NTP同步状态 -----
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 1.82.219.234    .INIT.          16 u    -   64    0    0.000    0.000   0.000
 14.29.218.92    .INIT.          16 u    -   64    0    0.000    0.000   0.000
 static-dia-83-1 .INIT.          16 u    -   64    0    0.000    0.000   0.000
 116.62.13.223   .INIT.          16 u    -   64    0    0.000    0.000   0.000
 203.107.6.88    .INIT.          16 u    -   64    0    0.000    0.000   0.000
✅ ntpd安装配置完成

3.2.3 时区配置信息

===== 配置系统时区 =====
➜ 当前系统时区:未知时区
➜ 是否更新系统时区为亚洲上海(Asia/Shanghai)(y/n,默认y):
✅ 时区已更新为Asia/Shanghai
➜ 系统时间已同步至硬件时钟
➜ 当前系统时间:Sun Feb  8 10:23:50 CST 2026

3.2.4 NTP服务测试信息

===== 测试NTP服务有效性 =====
➜ 测试前原始时间:2026-02-08 10:23:50
➜ 执行时间修改命令:date -s "1 hour ago 25 minutes ago"
Sun Feb  8 08:58:50 CST 2026
➜ 修改后的错误时间:2026-02-08 08:58:50

➜ 强制同步NTP服务器时间...
➜ 同步后的时间:2026-02-08 08:58:53
✅ NTP服务测试成功:时间已恢复正常
➜ 已将同步后的时间写入硬件时钟

3.2.5 操作完成信息

chronyd服务操作完成信息:

=========================================================================
✅ NTP服务器一键安装所有操作执行完成!
➜ 客户端配置:将客户端NTP服务器指向本主机IP地址
➜ 服务端常用验证命令:
   chronyc sources -v  # 查看chronyd同步状态
   chronyc -a makestep  # 强制chronyd同步
   systemctl status chronyd  # 查看chronyd服务状态
   systemctl restart chronyd  # 重启chronyd服务
   date  # 查看当前系统时间
   hwclock -r  # 查看硬件时钟时间
=========================================================================

ntpd服务操作完成信息:

=========================================================================
✅ NTP服务器一键安装所有操作执行完成!
➜ 客户端配置:将客户端NTP服务器指向本主机IP地址
➜ 服务端常用验证命令:
   ntpq -p  # 查看ntpd同步状态
   systemctl status ntpd  # 查看ntpd服务状态
   systemctl restart ntpd  # 重启ntpd服务
   date  # 查看当前系统时间
   hwclock -r  # 查看硬件时钟时间
=========================================================================

4. 常见问题处理

4.1 权限错误

错误信息

❌ 错误:请使用root用户运行此脚本

解决方案:使用sudo或直接以root用户登录系统后运行脚本。

4.2 软件源不可用

错误信息

⚠️ 当前Yum/DNF源不可用,将重新配置

解决方案:脚本会自动尝试配置其他可用的软件源,若仍失败,会提示手动安装命令。

4.3 安装失败

错误信息

❌ chrony安装失败,请手动执行以下命令:
   apt update && apt install -y chrony

解决方案:按照提示手动执行安装命令。

4.4 同步状态查看失败

错误信息

⚠️ 查看同步状态失败(服务启动初期正常)

解决方案:服务启动初期可能需要一些时间同步,稍后再次查看即可。

4.5 DNS解析测试失败

错误信息

⚠️ DNS解析测试失败,仍继续尝试配置源

解决方案:脚本会继续执行,但若后续操作失败,需检查网络连接和DNS配置。

5. 服务管理

5.1 chronyd服务管理

# 查看服务状态
systemctl status chronyd

# 重启服务
systemctl restart chronyd

# 停止服务
systemctl stop chronyd

# 查看同步状态
chronyc sources -v

# 强制同步时间
chronyc -a makestep

5.2 ntpd服务管理

# 查看服务状态
systemctl status ntpd

# 重启服务
systemctl restart ntpd

# 停止服务
systemctl stop ntpd

# 查看同步状态
ntpq -p

# 强制同步时间
ntpdate -u ntp.ntsc.ac.cn

6. 客户端配置

6.1 Linux客户端

编辑/etc/chrony.conf或/etc/ntp.conf文件,添加:

server [NTP服务器IP] iburst

6.2 Windows客户端

  1. 打开控制面板 → 日期和时间 → Internet时间
  2. 点击”更改设置”
  3. 在”服务器”中输入NTP服务器IP地址
  4. 点击”立即更新”,然后确定

7. 技术细节

7.1 国内优质NTP服务器列表

脚本内置了以下NTP服务器:

  • 国家官方授时:ntp.ntsc.ac.cn, cn.ntp.org.cn, stdtime.gov.hk
  • 国内大厂云服务:阿里云(1-5), 腾讯云(1-5)
  • 国内教育网:edu.ntp.org.cn, 上海交通大学, 北京大学, 清华大学, 东北大学, 北京邮电大学
  • 国际公共NTP池/大厂:中国NTP池节点(0-3), Google公共NTP(1-4), Apple公共NTP, Microsoft公共NTP

7.2 软件源配置

  • Ubuntu:配置阿里云源
  • Kylin:配置官方源
  • openEuler:配置清华源
  • AnolisOS:配置阿里源
  • CentOS/RHEL:优先配置阿里源,失败则尝试清华源,再失败则尝试163源

7.3 时区配置

  • 支持多种时区配置方式:timedatectl命令、修改/etc/timezone文件、创建软链接
  • 同步硬件时钟,确保系统重启后时间正确

8. 注意事项

  1. 备份重要数据:虽然脚本会备份配置文件,但仍建议在执行前备份重要数据。
  2. 网络连接:确保服务器具有稳定的网络连接,以保证NTP同步正常。
  3. 防火墙设置:脚本会自动放行NTP 123/UDP端口,若使用其他防火墙软件,需手动配置。
  4. 服务选择:对于8+版本系统,推荐使用chronyd,因为ntpd已被官方移除或不推荐。
  5. 网段配置:为了安全,建议根据实际网络环境配置具体的内网网段,而不是使用默认的0.0.0.0/0。

9. 故障排查

9.1 检查NTP服务状态

# 对于chronyd
systemctl status chronyd
chronyc sources -v

# 对于ntpd
systemctl status ntpd
ntpq -p

9.2 检查网络连接

# 测试NTP服务器连接
ping -c 4 ntp.ntsc.ac.cn

# 测试端口连通性
telnet ntp.ntsc.ac.cn 123

9.3 检查防火墙设置

# 检查防火墙状态
systemctl status firewalld

# 检查NTP端口是否开放
firewall-cmd --list-ports | grep 123

9.4 检查系统时间

# 查看系统时间
date

# 查看硬件时钟
hwclock -r

# 查看时区
timedatectl

10. 版本信息

  • 脚本名称:Linux_NTP_Install.sh
  • 功能版本:1.0
  • 更新日期:2026-02-08
  • 适用系统:CentOS 7.9/ AnolisOS 7.9/8.9 / Ubuntu 22.04+ / openEuler 22.03+
  • 主要特性
    • NTP全冲突检测清理
    • 国内优质NTP节点配置
    • DNS解析修复
    • 多系统源自动适配(含EOL系统)
    • 全兼容时区配置
    • NTP服务测试验证
    • 支持chronyd和ntpd两种服务类型

免责声明:本脚本仅供参考,使用前请确保了解其功能和可能的影响。在生产环境使用前,建议先在测试环境验证。

阅读剩余
THE END
阿里云ECS特惠活动
阿里云ECS服务器 - 限时特惠活动

云服务器爆款直降90%

新客首单¥68起 | 人人可享99元套餐,续费同价 | u2a指定配置低至2.5折1年,立即选购享更多福利!

新客首单¥68起
人人可享99元套餐
弹性计费
7x24小时售后
立即查看活动详情
阿里云ECS服务器特惠活动