搭建时间同步服务器,配置和搭建过程详细总结
从零搭建NTP 时间同步服务器(基于 Rocky Linux 9 与 Ubuntu 22.04)
时间同步是现代 IT 基础设施的基石,它确保了日志审计、数据库事务和分布式系统的一致性。本教程将引导您在 VMWare 虚拟机环境中,使用 chrony 搭建一个稳定、高可用的 NTP 服务器,并对每一个关键配置指令进行深入解析。
实验环境:
- NTP 服务器: Rocky Linux 9 (IP: 10.0.0.12)
- NTP 客户端: Ubuntu 22.04 (IP: 10.0.0.13)
一、NTP 核心理论与 Stratum 深度解析
1. Stratum 层级结构
NTP 采用分层模型 (Stratum) 来表示时钟源的精度。数字越小,精度越高。您的本地服务器将作为 Stratum 3 时间源为内网客户端服务。
2. 同步原理:四步握手与平滑调整
NTP 使用经典的四步握手计算时间偏差 (θ\thetaθ) 和网络延迟 (δ\deltaδ)。系统采用 平滑调整 (Slewing) 机制,通过缓慢改变系统时钟频率来消除偏差,避免时间跳变对系统日志和文件时间戳造成混乱。
二、NTP 服务器配置与深度解析(Rocky Linux 9 - 10.0.0.12)
步骤 1:安装 chrony
sudo dnf install chrony -y
【命令含义】 使用 DNF (Dandified YUM) 包管理器安装 chrony 软件包。
【为什么】 chrony 是现代 Linux 发行版(如 RHEL/Rocky)推荐的 NTP 客户端/服务器程序,它比传统 ntpd 更轻量、响应更快,尤其适用于网络波动或虚拟机环境。
步骤 2:配置 chrony.conf 核心参数解析
编辑 /etc/chrony.conf。
sudo vi /etc/chrony.conf
A. 上游时间源配置
pool 2.rocky.pool.ntp.org iburst
【命令含义】 将 2.rocky.pool.ntp.org 指定为上游时间同步源,并使用 iburst 选项。
【为什么】 Rocky 服务器必须先和高精度公网时间源同步,才能向内网提供准确时间。iburst 告诉 chrony 在启动时快速发送一串 NTP 包,以加速首次时间同步,更快进入稳定状态。
B. 客户端授权配置 (开启服务器模式)
allow 10.0.0.0/24
【命令含义】 允许 IP 地址范围 10.0.0.0/24 内的所有客户端通过 NTP 协议连接并同步时间。
【为什么】 这是将 chronyd 从“仅客户端”模式转变为“同时作为服务器”的关键。没有这条指令,客户端将无法连接。
C. 【排错关键】 强制 IP 绑定
bindaddress 10.0.0.12
【命令含义】 强制 chronyd 进程在提供 NTP 服务时,显式绑定并监听 IP 地址 10.0.0.12。
【为什么】 在 VMWare 或复杂网络环境中,chronyd 有时无法自动确定要监听哪个外部 IP,导致它只监听本地环回地址 (127.0.0.1),从而无法被客户端访问。此指令解决了 netstat 中端口不监听的根本问题。
D. 后备时钟配置
local stratum 10
【命令含义】 当所有配置的外部时间源都不可用时,使用本地时钟作为 Stratum 10 的时间源。
【为什么】 提供了容错机制。即使服务器与互联网断开,它仍能向内网客户端提供一个一致的后备时间,避免内网时间发散。
步骤 3:配置系统安全策略(Firewalld 与 SELinux)
A. Firewalld 配置(开放 UDP 123)
# 永久添加 NTP 服务规则
sudo firewall-cmd --zone=public --add-service=ntp --permanent
# 重新加载规则,使之立即生效
sudo firewall-cmd --reload
【命令含义】 开放 UDP 端口 123。--permanent 使规则永久保存;--reload 立即应用新规则,无需重启系统。
【为什么】 NTP 协议使用 UDP 123 端口进行通信。防火墙必须明确允许客户端数据包通过此端口到达 chronyd 服务。
B. SELinux 策略(防止服务被阻断)
sudo setenforce 0
【命令含义】 将 SELinux 的模式从 Enforcing (强制执行) 临时改为 Permissive (宽松)。
【为什么】 在 RHEL/Rocky 系统上,SELinux 策略可能阻止 chronyd 进程进行网络操作,即使 Firewalld 端口已开放。临时禁用用于排查和确保服务正常运行。
步骤 4:启动服务与验证服务器自身状态
sudo systemctl enable --now chronyd
【命令含义】 设置 chronyd 开机自启,并立即启动服务。
【为什么】 确保配置生效后服务能立即运行,并保持持久化。
四、NTP 客户端配置与验证(Ubuntu 22.04 - 10.0.0.13)
步骤 1:安装 chrony
sudo apt install chrony -y
步骤 2:配置客户端指向本地服务器
编辑 /etc/chrony/chrony.conf。
- 注释掉所有公网源。
# pool ntp.ubuntu.com - 添加本地服务器:
【为什么】 客户端现在只信任server 10.0.0.12 iburst10.0.0.12作为时间源,避免了同步到公网,确保了时间同步源的可控性和准确性。
步骤 3:重启服务并最终验证
sudo systemctl restart chrony
验证状态:
chronyc sources
** 最终成功验证结果:**
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^** 10.0.0.12 3 6 7 0 -1310ns[ +21ms] +/- 101ms
解读: ^* 标志和 Stratum 3 确认了客户端已成功同步到本地 Stratum 2 的 Rocky 服务器
、
更多推荐
所有评论(0)