凌峰创科服务平台

Linux如何同步NTP服务器时间?

Linux系统与NTP(Network Time Protocol)服务器的同步是确保系统时间准确性的关键操作,尤其在服务器集群、分布式系统或需要精确时间记录的场景中,时间的一致性直接影响日志审计、任务调度、安全认证等功能的可靠性,NTP作为一种时间同步协议,能够通过客户端与服务器之间的通信,自动调整系统时间,使其与标准时间源保持一致,以下将从NTP的工作原理、Linux系统中配置NTP客户端的步骤、常见问题及优化方法等方面进行详细说明。

Linux如何同步NTP服务器时间?-图1
(图片来源网络,侵删)

NTP协议与时间同步的重要性

NTP协议基于UDP协议,使用端口号123,通过客户端与服务器交换时间戳信息,计算网络延迟和时钟偏差,并逐步调整系统时间,其工作模式分为客户端/服务器模式、对等模式(peer)和广播模式,其中客户端/服务器模式是最常用的配置方式,在Linux系统中,时间同步不仅影响系统日志的时间戳,还涉及证书验证、数据库事务排序、分布式任务调度等场景,若多台服务器时间偏差过大,可能会导致Kerberos认证失败或数据库主从复制异常,配置可靠的NTP服务器同步是Linux系统运维的基础工作之一。

Linux系统中配置NTP客户端的步骤

在Linux系统中,通常使用chronyntpd服务实现NTP同步,相较于传统的ntpdchrony在网络不稳定或系统时钟频繁变化时表现更优,因此在现代Linux发行版(如CentOS 7+、Ubuntu 18.04+)中成为默认推荐工具,以下以chrony为例,说明配置过程:

安装chrony服务

以CentOS系统为例,使用yumdnf安装chrony:

sudo yum install chrony -y

对于Ubuntu/Debian系统,使用apt安装:

Linux如何同步NTP服务器时间?-图2
(图片来源网络,侵删)
sudo apt update && sudo apt install chrony -y

配置NTP服务器

编辑chrony的配置文件/etc/chrony.conf,添加或修改NTP服务器地址,使用公共NTP服务器(如pool.ntp.org)或企业内部NTP服务器:

pool 0.centos.pool.ntp.org iburst
pool 1.centos.pool.ntp.org iburst
pool 2.centos.pool.ntp.org iburst
pool 3.centos.pool.ntp.org iburst

iburst参数表示在服务连接初期快速同步时间,缩短启动时的同步时间,若使用内部NTP服务器,可将pool替换为server并指定IP地址,

server 192.168.1.100 iburst

启动并启用chrony服务

安装完成后,启动chrony服务并设置为开机自启:

sudo systemctl start chronyd
sudo systemctl enable chronyd

验证同步状态

使用chronyc命令查看同步状态:

Linux如何同步NTP服务器时间?-图3
(图片来源网络,侵删)
chronyc tracking

输出信息中,System time表示当前系统时间与NTP服务器的偏差,Ref time为最后一次更新的时间戳,若System time偏差在毫秒级,则说明同步正常。chronyc sources命令可查看NTP服务器源的状态:

chronyc sources

输出结果中的^表示当前正在使用的NTP服务器,表示优先级最高的服务器。

防火墙配置

若NTP服务器位于远程,需确保Linux客户端的防火墙允许UDP 123端口通信,以firewalld为例,执行:

sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

chrony与ntpd的对比及优化建议

在选择时间同步工具时,可根据实际需求对比chronyntpd的特性:

特性 chrony ntpd
适用场景 网络不稳定、虚拟化环境 稳定网络环境、传统系统
同步速度 快速,支持动态调整 较慢,逐步调整
资源占用 低,适合资源受限设备 较高
时钟源支持 支持硬件时钟(RTC)和GPS 依赖硬件时钟精度
配置复杂度 简单,默认配置即可满足需求 需手动调整driftfile等参数

优化建议:

  • 在虚拟化环境中,优先使用chrony,因其能更好地处理虚拟机时钟漂移问题。
  • 若对时间精度要求极高(如金融交易系统),可配置多个NTP服务器源,并设置maxdistance参数限制服务器间的最大时间偏差。
  • 定期检查/var/log/chrony/chrony.log日志,监控同步异常情况,如服务器不可达或时间偏差过大。

相关问答FAQs

问题1:如何手动强制chrony立即同步时间?
解答:使用chronyc命令的makestep选项可强制调整系统时间,避免因时间偏差过大导致同步延迟,执行以下命令:

chronyc makestep

该命令会立即将系统时间同步至NTP服务器时间,适用于时间偏差较大的紧急场景。

问题2:chrony同步后,系统时间仍不准确,如何排查?
解答:可按以下步骤排查:

  1. 检查NTP服务器是否可达:使用pingtelnet测试UDP 123端口。
  2. 查看chrony日志:tail -f /var/log/chrony/chrony.log,确认是否有服务器拒绝或超时信息。
  3. 检查系统防火墙或安全组是否阻止了123端口通信。
  4. 若使用硬件时钟(RTC),确保/etc/chrony.conf中配置了rtcsync参数,以启用硬件时钟同步。
  5. 尝试更换NTP服务器源,可能是当前服务器负载过高或时间源不稳定。
分享:
扫描分享到社交APP
上一篇
下一篇