1. 启用并配置systemd-timesyncd服务(Ubuntu默认推荐)
Ubuntu 20.04及以上版本默认使用systemd-timesyncd
服务实现时间同步,该服务轻量且集成于系统管理,能自动与公共NTP服务器同步时间。
timedatectl status
,若输出中“System clock synchronized”显示为“yes”,则表示时间同步正常。/etc/systemd/timesyncd.conf
文件,取消[Time]
部分的NTP
行注释(或添加新行),指定可靠的NTP服务器(如NTP=ntp.ubuntu.com
),并可根据需要添加备用服务器(FallbackNTP=ntp1.ubuntu.com,ntp2.ubuntu.com
)。sudo systemctl restart systemd-timesyncd
重启服务;再次执行timedatectl status
确认同步状态,或使用ntpq -p
查看NTP服务器同步详情(标记为*
的服务器为当前同步源,stratum
层级越低越精准,offset
偏移量通常应小于1ms)。2. 使用Chrony服务(更灵活的高精度选择)
Chrony是专为不稳定网络设计的现代时间同步工具,支持快速同步、硬件时钟同步及动态调整,适合服务器或网络波动较大的环境。
sudo apt update && sudo apt install chrony
安装Chrony;编辑/etc/chrony/chrony.conf
文件,添加或修改NTP服务器(如server ntp.ubuntu.com iburst
,iburst
参数可加快初始同步速度)。sudo systemctl start chronyd && sudo systemctl enable chronyd
启动服务并设置开机自启;使用chronyc tracking
查看同步状态(Last offset
表示最后一次同步的偏移量,Leap status
应为Normal
),或chronyc sources
查看同步源列表。3. 硬件时钟同步(确保长期准确性)
硬件时钟(RTC)是系统断电后保持时间的组件,定期将系统时间同步至硬件时钟可避免长期运行导致的时间偏差。
sudo hwclock --systohc
命令,将当前系统时间写入硬件时钟;若需从硬件时钟恢复时间,可运行sudo hwclock --hctosys
。4. 防火墙设置(允许NTP流量)
NTP服务使用UDP端口123进行通信,需确保防火墙未阻止该端口,否则会导致时间同步失败。
sudo ufw allow 123/udp
命令允许NTP流量;若使用iptables,可添加规则sudo iptables -A INPUT -p udp --dport 123 -j ACCEPT
。5. 监控与审计(及时发现异常)
定期监控时间同步状态和时间戳日志,可快速识别时间篡改或同步故障。
sudo tail -f /var/log/syslog | grep ntp
(NTP服务)或sudo tail -f /var/log/chrony/chronyd.log
(Chrony服务)实时查看同步日志,关注“synchronised”(同步成功)、“offset”(偏移量)等关键词。auditd
工具(sudo apt install auditd
),配置审计规则记录时间戳修改事件(如-w /bin/date -p wa -k time_change
),通过ausearch -k time_change
查看修改记录,防止未经授权的时间篡改。6. 优化时间戳精度(可选)
若需更高精度的时间戳(如纳秒级),可通过调整内核参数实现。
/etc/sysctl.conf
文件,添加kernel.hz = 1000
(提高内核时钟中断频率)和fs.file-max = 100000
(增加文件描述符限制),运行sudo sysctl -p
使设置生效。/etc/fstab
文件,在文件系统挂载选项中添加noatime
或nodiratime
(如UUID=xxxx / ext4 defaults,noatime 0 1
),减少文件访问时时间戳的更新频率,提升文件系统性能。