在Linux系统中,时间同步是确保服务器、集群或个人设备时间准确的关键操作,尤其对于日志分析、安全认证、分布式任务调度等场景至关重要,Linux系统通常通过NTP(Network Time Protocol)或其改进版Chrony实现时间同步,以下是详细设置步骤及注意事项。
时间同步工具选择
Linux中常见的时间同步工具为NTP和Chrony,NTP是传统协议,适合稳定网络环境;Chrony作为其改进版,在动态IP、间歇性联网或高延迟网络下表现更优,且同步速度更快,已成为现代Linux发行版(如CentOS 7+、Ubuntu 18+)的默认工具,以下以Chrony为例展开说明,同时补充NTP的差异化操作。
安装Chrony服务
CentOS/RHEL系统
sudo yum install chrony -y # CentOS 7/8/RHEL 7/8
Ubuntu/Debian系统
sudo apt update && sudo apt install chrony -y # Ubuntu 16+/Debian 8+
配置Chrony
Chrony的主配置文件为/etc/chrony.conf
,需编辑该文件以指定时间服务器源,以下是关键配置项说明及示例:
配置项 | 作用说明 | 示例 |
---|---|---|
server |
指定上游NTP服务器,支持IPv4/IPv6,可添加iburst 参数加速初始同步 |
server 0.centos.pool.ntp.org iburst |
pool |
指定NTP服务器池,自动选择最优节点,适合多服务器场景 | pool pool.ntp.org iburst |
allow |
允许客户端同步的IP网段,默认仅允许本地(127.0.0.1/8) | allow 192.168.1.0/24 |
deny |
禁止客户端同步的IP网段 | deny 192.168.2.0/24 |
maxdistance |
允许的最大时间偏差(秒),超过该值则拒绝同步(默认16s) | maxdistance 5s |
driftfile |
本地时间偏差缓存文件,用于无网络时保持时间准确 | driftfile /var/lib/chrony/drift |
编辑配置文件:
sudo vim /etc/chrony.conf
修改或添加以下内容(以阿里云NTP服务器和本地池为例):
pool ntp.aliyun.com iburst pool cn.pool.ntp.org iburst server 127.127.1.0 # 本理时钟(可选,用于无网络时) allow 192.168.1.0/24 # 允许内网客户端同步 driftfile /var/lib/chrony/drift makestep 1.0 1 # 时间偏差超过1秒时,立即调整(而非渐进调整)
启动并启用Chrony服务
sudo systemctl start chronyd # 启动服务 sudo systemctl enable chronyd # 设置开机自启 sudo systemctl status chronyd # 检查服务状态(应显示active)
验证时间同步状态
查看同步源状态
chronyc sources -v
输出结果中,^
表示当前同步的源,MS
表示测量间隔,SD
表示标准偏差,若显示,表示已同步成功。
查看时间偏差
chronyc tracking -v
关注System time
中的seconds behind real time
,该值应接近0(理想状态下<0.1s)。
使用timedatectl检查(systemd系统)
timedatectl status
确保NTP enabled: yes
且Local time
与实际时间一致。
防火墙配置(可选)
若时间服务器为远程地址,需确保防火墙允许NTP端口(UDP 123):
# CentOS/RHEL (firewalld) sudo firewall-cmd --permanent --add-service=ntp sudo firewall-cmd --reload # Ubuntu/Debian (ufw) sudo ufw allow 123/udp
手动同步与维护
手动触发同步
sudo chronyc makestep # 强制同步(适用于时间偏差过大时)
同步硬件时钟(RTC)
避免重启后时间回退,可将系统时间同步到硬件时钟:
sudo hwclock --systohc # 写入硬件时钟
FAQs
Q1:Chrony和NTP如何选择?
A:Chrony更适合以下场景:动态IP环境(如云服务器)、间歇性联网设备、高延迟或带宽受限网络(如卫星链路),且同步速度更快;NTP则适合传统稳定网络环境(如局域网内固定IP服务器),现代Linux发行版默认推荐Chrony,优先选择Chrony即可。
Q2:时间同步失败,如何排查?
A:可按以下步骤排查:
- 检查网络连通性:
ping 时间服务器地址
(如ping ntp.aliyun.com
),确保能通。 - 检查服务状态:
systemctl status chronyd
,确认服务未崩溃(若有错误,查看journalctl -u chronyd
)。 - 检查配置文件语法:
chronyd -q -d /etc/chrony.conf
,若无报错则语法正确。 - 检查防火墙/安全组:确认UDP 123端口未被阻止(云服务器需检查安全组规则)。
- 更换时间服务器:若当前服务器不可用,替换为其他NTP源(如
pool.ntp.org
)。
通过以上步骤,即可完成Linux系统的时间同步配置,确保设备时间长期准确可靠。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29184.html