内网环境 NTP 时间同步实战指南:chrony 从部署到排错

📅 2026/7/3 7:17:07 👁️ 阅读次数 📝 编程学习
内网环境 NTP 时间同步实战指南:chrony 从部署到排错

一份面向运维人员的完整 NTP 部署手册,覆盖 Ubuntu 服务端、离线客户端及 Windows 终端的全链路同步方案。

描述:

在运维工作中,服务器时间一致性 是日志审计、证书校验、分布式协调的基石。当内网环境无法访问互联网时,自建 NTP 服务就成了刚需。

本文记录了我用chrony搭建 NTP 时间同步体系的完整过程,包括 服务端部署、离线客户端安装 和 Windows 终端同步,并附上踩坑排错实录。

环境概览

角色系统IP网络
NTP服务端ubuntu24.04192.168.200.69可访问互联网
NTP客户端ubuntu24.04内网仅内网
NTP客户端windows 2016内网仅内网

一、NTP服务端部署

选择 chrony 而不是传统 ntpd 的原因:启动快、同步快、断网容错好,非常适合偶尔断网的内网场景。

1.1安装chrony

apt update && apt install chrony -y

1.2配置/etc/chrony/chrony.conf

vim /etc/chrony/chrony.conf

建议配置如下:

# ===== 上游互联网时间源 ===== pool ntp.aliyun.com iburst maxsources 4 pool ntp1.aliyun.com iburst maxsources 1 pool ntp2.aliyun.com iburst maxsources 1 pool 2.ubuntu.pool.ntp.org iburst maxsources 2 # ===== 允许局域网客户端同步 ===== allow 192.168.0.0/16 # ===== 断网容灾 ===== local stratum 10 # ===== 基础参数(确认以下行存在)===== driftfile /var/lib/chrony/drift makestep 1 3 rtcsync logdir /var/log/chrony

参数说明:

配置项作用
iburst启动时快速发送 4 个探测包,加速首次同步
maxsources限制从该 pool 选取的时间源数量
allow 192.168.0.0/16允许该网段的机器来同步时间
local stratum 10当上游全部不可达时,本机降级作为第 10 层时间源继续服务
makestep 1 3前 3 次同步允许直接跳变,避免慢速追赶
rtcsync定期将系统时间写入硬件时钟

1.3防火墙设置

如果使用ufw防火墙:

ufw allow 123/udp

如果不适用防火墙,建议直接关闭:

ufw stop # 关闭防火墙 ufw disable # 禁止开机自启

如果使用iptables(按需):

iptables -A INPUT -p udp --dport 123 -j ACCEPT

1.4启动并验证

systemctl restart chronyd systemctl enable chronyd

查看上游同步状态

chronyc sources -v

二、客户端配置(离线环境)

离线安装chrony 有几个经典坑,提前列出帮你避开。

2.1踩坑预警

现象解法
time-daemon冲突dpkgconflicts with time-daemon先卸载systemd-timesyncd
依赖缺失缺少 tzdata-legacy联网机器下载.deb传过来
系统用户缺失status=217/USER_chrony用户不存在dpkg --configure chrony或手动useradd

2.2卸载systemd-timesyncd

Ubuntu 默认安装了systemd-timesyncd,和 chrony 冲突:

apt remove systemd-timesyncd -y

2.3安装chrony

联网机器上,提前下载好离线包:

# chrony 主包 wget https://mirrors.aliyun.com/ubuntu/pool/main/c/chrony/chrony_4.5-1ubuntu4.2_amd64.deb # 你可能需要的依赖(64.9 KB,先下着备用) wget https://mirrors.aliyun.com/ubuntu/pool/main/t/tzdata/tzdata-legacy_2026a-0ubuntu0.24.04.1_all.deb

安装顺序:

# 1. 安装主包(忽略依赖警告) dpkg -i chrony_4.5-1ubuntu4.2_amd64.deb # 2. 安装缺失的依赖 dpkg -i tzdata-legacy_2026a-0ubuntu0.24.04.1_all.deb # 3. 让 chrony 完成配置(自动创建用户、目录等) dpkg --configure chrony

2.4配置指向NTP服务器

vim /etc/chrony/chrony.conf

注释掉所有默认的pool/server行,只保留:

server 192.168.200.69 iburst driftfile /var/lib/chrony/drift makestep 1 3 rtcsync logdir /var/log/chrony

2.5启动并验证

systemctl restart chronyd systemctl enable chronyd

查看时间源:

chronyc sources -v

查看同步详情:

chronyc tracking

三、windows客户端同步

后记

chrony 上手简单,但在离线环境部署时有几个不易察觉的细节:

  1. dpkg -i不会执行 postinst 脚本,用户和目录需要手动创建或dpkg --configure补执行
  2. systemd-timesyncd和 chrony 冲突,必须先卸载
  3. 配置中多余的 pool 行会导致命令变慢,内网环境只保留一个 server 即可