内网环境 NTP 时间同步实战指南:chrony 从部署到排错
一份面向运维人员的完整 NTP 部署手册,覆盖 Ubuntu 服务端、离线客户端及 Windows 终端的全链路同步方案。
描述:
在运维工作中,服务器时间一致性 是日志审计、证书校验、分布式协调的基石。当内网环境无法访问互联网时,自建 NTP 服务就成了刚需。
本文记录了我用chrony搭建 NTP 时间同步体系的完整过程,包括 服务端部署、离线客户端安装 和 Windows 终端同步,并附上踩坑排错实录。
环境概览
| 角色 | 系统 | IP | 网络 |
| NTP服务端 | ubuntu24.04 | 192.168.200.69 | 可访问互联网 |
| NTP客户端 | ubuntu24.04 | 内网 | 仅内网 |
| NTP客户端 | windows 2016 | 内网 | 仅内网 |
一、NTP服务端部署
选择 chrony 而不是传统 ntpd 的原因:启动快、同步快、断网容错好,非常适合偶尔断网的内网场景。
1.1安装chrony
apt update && apt install chrony -y1.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 ACCEPT1.4启动并验证
systemctl restart chronyd systemctl enable chronyd查看上游同步状态
chronyc sources -v二、客户端配置(离线环境)
离线安装chrony 有几个经典坑,提前列出帮你避开。
2.1踩坑预警
| 坑 | 现象 | 解法 |
time-daemon冲突 | dpkg报conflicts 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 -y2.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 chrony2.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/chrony2.5启动并验证
systemctl restart chronyd systemctl enable chronyd查看时间源:
chronyc sources -v查看同步详情:
chronyc tracking三、windows客户端同步
后记
chrony 上手简单,但在离线环境部署时有几个不易察觉的细节:
dpkg -i不会执行 postinst 脚本,用户和目录需要手动创建或dpkg --configure补执行systemd-timesyncd和 chrony 冲突,必须先卸载- 配置中多余的 pool 行会导致命令变慢,内网环境只保留一个 server 即可
