一、了解ntp服务器
NTP(Network Time Protocol,网络时间协议)是一种用于在网络中同步系统时间的协议。通过 NTP,局域网或互联网中的所有设备都可以保持时间一致,这对于日志分析、任务调度、安全认证等场景至关重要。
在局域网环境中,通常会设置一台主机作为 NTP 服务器(时间源),其他设备作为 NTP 客户端 从该服务器同步时间。
当服务器能访问公网时,它可以从互联网的上级 NTP 服务器获取标准时间;当服务器处于离线或内网环境中时,也可以将其自身作为时间源(通过 local stratum 参数),为局域网内的其他设备提供时间同步。
Chrony 是目前 Linux 系统中主流的 NTP 服务实现之一,相比旧的 ntpd:
- 同步速度更快、精度更高;
- 能自动调整网络延迟导致的时间偏差;
- 断网后仍能维持较为准确的本地时钟;
- 配置简单,支持动态网络环境(如笔记本、虚拟机等)。
接下来将介绍如何使用 chrony 配置局域网内的时间同步服务器与客户端。
二、配置服务端
1、安装chrony软件包
sudo apt install chrony -y
2、修改配置文件
使用sudo vim /etc/chrony/chrony.conf打开配置文件,并按需添加以下内容
# 允许进行时间同步的网段
allow 192.168.3.0/24
# 若不限制网段,可以直接写all
allow all
# 设置本地为时间同步源
server 127.0.0.1 iburst
# 如果服务器无法从公网同步时间,添加该行以允许局域网其他设备通过本服务器同步时间
local stratum 10 orphan
3、启用服务
sudo systemctl enable chronyd # 设置开机自启
sudo systemctl start chronyd # 启动服务
# 如果上面的无法正常启用
sudo systemctl enable chrony
sudo systemctl start chrony
4、(可选)放行端口
chrony服务默认跑在123端口上,若服务器配置有防火墙,记得放行123端口,udp协议。
三、配置客户端
1、安装chrony软件包
和服务端配置同样地,需要先安装chrony
sudo apt install chrony -y
2、修改配置文件
打开配置文件:sudo vim /etc/chrony/chrony.conf
注释掉所有的pool开头的语句,并设置目标服务器为局域网中服务端的ip
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
server 192.168.3.178 iburst # 此处须将ip改为上面服务端的ip地址,这里以192.168.3.178为例
3、启用服务
sudo systemctl enable chronyd # 设置开机自启
sudo systemctl start chronyd # 启动服务
# 如果上面的无法正常启用
sudo systemctl enable chrony
sudo systemctl start chrony
4、验证连接
我们使用chronyc验证是否能与服务器建立连接
sudo chronyc sources -v
若出现类似如下的返回值(^*开头),则说明成功从服务器同步时间
^* 192.168.3.178
下表是返回值状态的含义
| 前缀 | 含义 | 说明 |
|---|---|---|
^* | 当前同步源 | 系统正使用此服务器作为主时间源 |
^+ | 候选同步源 | 时间正常、稳定,但未被选为主源 |
^- | 被排除的源 | 可能漂移较大或延迟不稳定 |
^? | 不可达源 | 网络中断或尚未建立联系 |
^x | 错误源 | 被识别为提供错误时间 |
^~ | 抖动源 | 时间变化太大,不可信 |
=# | 本地时钟源 | 一般用于无外部 NTP 时 fallback |
?(单独) | 未识别 | 该源暂时无状态数据 |
若想手动同步,可以使用以下的命令:
sudo chronyc makestep