2025 局域网内多台服务器时间统一,最稳定且无需联网的方案是部署 NTP 离线服务器部署chrony 轻量且兼容性强,支持纯离线环境
在离线环境下让多台服务器时间统一,最稳定且无需联网的方案是部署 NTP 离线服务器(以 chrony 为例,轻量且兼容性强,支持纯离线环境),只需在局域网内选一台作为 “时间主服务器”,其他服务器同步它的时间即可,全程无需外网,操作步骤如下:
一、核心原理
选 1 台服务器作为 时间主节点(比如 IP:192.168.1.100),手动校准它的时间(确保是正确时间),并配置为 “离线 NTP 服务器”;
其他服务器作为 从节点,仅同步主节点的时间,不依赖任何外网时间源。
二、离线部署步骤(分 “主节点” 和 “从节点” 操作)
第一步:准备离线安装包(仅需做 1 次,用 U 盘 / 移动硬盘拷贝)
因为是离线环境,需先在有网的同系统机器上下载 chrony 及其依赖包(以 CentOS 7/8 或 Ubuntu 20.04/22.04 为例):
1. CentOS 系统(下载 rpm 包)
#先在有网的CentOS机器上,创建目录保存离线包
mkdir -p /tmp/chrony-offline && cd /tmp/chrony-offline
yum install -y --downloadonly --downloaddir=. chrony
#下载完成后,/tmp/chrony-offline 目录下会有 chrony-xxx.rpm 及依赖包,拷贝到 U 盘。
2. Ubuntu 系统(下载 deb 包)
#先在有网的Ubuntu机器上,创建目录保存离线包
mkdir -p /tmp/chrony-offline && cd /tmp/chrony-offline
下载chrony及依赖(自动下载所有依赖)
apt-get install -y --download-only chrony
3. 把下载的deb包复制到当前目录(Ubuntu默认下载到/var/cache/apt/archives)
cp /var/cache/apt/archives/chrony_*.deb /var/cache/apt/archives/libseccomp2_*.deb .
拷贝 /tmp/chrony-offline 下的所有 .deb 包到 U 盘。
第二步:配置 “时间主节点”(192.168.1.100)
1.离线安装 chrony
将 U 盘挂载到主节点,进入离线包目录,执行安装:
CentOS:rpm -ivh chrony-*.rpm --force --nodeps(–nodeps 忽略依赖检查,因已下载所有依赖)
Ubuntu:dpkg -i *.deb(若提示依赖缺失,执行 apt-get -f install 修复,离线环境下因已拷贝依赖,通常不会报错)
2.手动校准主节点时间(关键!主节点时间必须正确)
#执行命令手动设置正确时间(比如当前时间是 2024-05-20 14:30:00):
#格式:date -s "年-月-日 时:分:秒"
date -s "2024-05-20 14:30:00"
#同步系统时间到主板时钟(避免重启后时间丢失)
hwclock --systohc
3.配置主节点为离线 NTP 服务器
编辑 chrony 配置文件 /etc/chrony.conf,替换为以下内容(仅保留离线相关配置):
# 关闭所有外网时间源(离线环境无需)
# 允许局域网内所有服务器同步该主节点(替换为你的局域网网段,比如192.168.1.0/24)
allow 192.168.1.0/24
# 声明主节点为“本地时间源”(stratum 10表示本地优先级,无需外网)
local stratum 10
# 其他基础配置(固定)
driftfile /var/lib/chrony/chrony.drift
rtcsync
logdir /var/log/chrony
4.启动主节点 chrony 服务
systemctl start chronyd #启动服务
systemctl enable chronyd #设置开机自启(避免重启后服务失效)
# 永久开放 UDP 123 端口(--permanent 表示永久生效)
sudo firewall-cmd --add-port=123/udp --permanent
sudo firewall-cmd --reload #加载
sudo firewall-cmd --list-ports --permanent # 查看所有永久开放的端口
第三步:配置 “从节点”(所有需要同步时间的服务器)
1.离线安装 chrony
同主节点步骤:将 U 盘的离线包拷贝到从节点,执行安装(CentOS 用 rpm -ivh,Ubuntu 用 dpkg -i)。
2.配置从节点同步主节点时间
#编辑从节点的 /etc/chrony.conf,替换为以下内容(仅指向主节点):
#唯一时间源:指向主节点IP(192.168.1.100),prefer表示优先使用
server 192.168.1.100 iburst prefer
#其他基础配置(固定)
driftfile /var/lib/chrony/chrony.drift
rtcsync
logdir /var/log/chrony
3.启动从节点 chrony 服务
systemctl start chronyd
systemctl enable chronyd
# 永久开放 UDP 123 端口(--permanent 表示永久生效)
sudo firewall-cmd --add-port=123/udp --permanent
sudo firewall-cmd --reload #加载
sudo firewall-cmd --list-ports --permanent # 查看所有永久开放的端口
三、验证时间同步(确保成功)
在任意从节点执行以下命令,检查是否同步主节点:
#查看时间源状态,若主节点IP(192.168.1.100)前有 ^* 标志,说明同步成功
chronyc sources -v#查看时间同步偏差(offset值接近0,说明时间一致)
chronyc tracking若显示 ^* 192.168.1.100,则表示从节点已成功同步主节点时间,所有服务器时间会保持统一。
四、优势(适合离线环境)
1.纯离线:无需任何外网,仅依赖局域网;
2.自动同步:服务启动后,会自动维持时间一致,无需手动操作;
3.稳定:chrony 比 ntpdate 更稳定(支持动态调整时间偏差,避免时间跳变)。
如果需要更简单的 “一次性同步”(无需长期服务),也可以在从节点执行 ntpdate 192.168.1.100(需先离线安装 ntpdate 包),但推荐用 chrony 长期维护时间一致。