4. 时间同步配置
本章节指导在 RHEL 9 系统(主机名 LinuxDC)上使用 chronyd 服务进行时间同步。chronyd 是 RHEL 9 默认的时间同步工具,稳定可靠,适用于企业级服务器与虚拟化环境。所有命令均在 LinuxDC 环境下测试通过,确保可复现性。
🧠 知识点:准确的系统时间对于日志分析、安全审计、证书验证及分布式系统通信至关重要。
4.1 前提条件
- RHEL 9 已安装(参考第 1 章),主机名设置为
LinuxDC。 - 使用 SecureCRT 登录(SSH2 协议,端口 2222)。
- 使用 SecureFX 传输文件(SFTP 协议)。
- 网络连接正常,可访问外部 NTP 服务器。
💡 提示:chronyd 默认随系统启动。若系统在内网运行,也可配置局域网时间源。在 RHEL 10 中,chronyd 支持更多增强的NTP协议选项,如内置的Leap Smearing支持,以更好地处理闰秒事件。
4.2 时间同步配置步骤
4.2.1 检查并启动 chronyd 服务
🛠️ 操作步骤:
-
检查服务状态:
systemctl status chronyd # 检查 chronyd 服务状态 -
启用并启动服务:
systemctl enable --now chronyd # 启用并立即启动 chronyd 服务
✅ 检查点:服务状态应显示
active (running)。若未启动,检查日志:journalctl -u chronyd。
4.2.2 配置 NTP 源
🛠️ 操作步骤:
-
编辑 chronyd 配置文件:
vim /etc/chrony.conf # 编辑 chronyd 配置文件 # 添加或修改 NTP 源(示例使用 Red Hat 推荐的公共源): server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst -
重启 chronyd 服务:
systemctl restart chronyd # 重启 chronyd 服务
💡 提示:
iburst选项加速初始同步。企业环境可替换为内部 NTP 服务器(如server internal-ntp.example.com iburst)。
4.2.3 验证 NTP 同步
🛠️ 操作步骤:
-
查看 NTP 源状态:
chronyc sources -v # 显示 NTP 源详细状态 -
检查同步偏移:
chronyc tracking # 显示当前同步状态和偏移量 -
使用 timedatectl 验证:
timedatectl # 检查 NTP 同步状态(NTP enabled: yes, NTP synchronized: yes)
✅ 检查点:
Reference ID不应为空,偏移量(Offset)应小于 0.1 秒。若未同步,检查网络和防火墙(UDP 123 端口)。
4.2.4 设置系统时区
🛠️ 操作步骤:
-
查看可用时区:
timedatectl list-timezones # 列出所有可用时区 -
设置时区(示例:上海):
timedatectl set-timezone Asia/Shanghai # 设置时区为 Asia/Shanghai -
验证时区:
timedatectl # 检查 Time zone 字段
💡 提示:时区设置影响日志时间戳和证书验证。自动化环境中,可结合 Ansible 批量设置。
4.2.5 同步硬件时钟
🛠️ 操作步骤:
-
查看硬件时钟:
hwclock -r # 读取硬件时钟(RTC) -
同步系统时间至硬件时钟:
hwclock --systohc # 将系统时间写入硬件时钟 -
验证同步:
hwclock -r # 再次检查硬件时钟
⚠️ 注意:虚拟机环境中,硬件时钟可能受宿主机影响。建议在关机前执行同步。
4.3 常见问题与排查
🔍 故障排查:
-
问题 1:chronyd 未同步
解决:检查网络(ping 0.rhel.pool.ntp.org)、防火墙(firewall-cmd --add-port=123/udp --permanent;firewall-cmd --reload)或 NTP 源配置。 -
问题 2:时区不正确
解决:使用timedatectl set-timezone重新设置,并验证date输出。 -
问题 3:硬件时钟偏差大
解决:定期执行hwclock --systohc,或配置 cron 任务自动化。
💡 提示:若 chronyd 失败,可临时使用
ntpdate:ntpdate 0.rhel.pool.ntp.org,但不推荐长期使用。
4.4 系统验证
🛠️ 操作步骤:
- 综合验证:
timedatectl # 检查 NTP 同步和时区 chronyc sources # 检查 NTP 源 date # 查看当前时间
✅ 检查点:确保
NTP synchronized: yes,时区正确,时间准确。
4.5 实践任务
- 使用 SecureCRT 通过 SSH(端口 2222)登录
LinuxDC,检查 chronyd 状态。 - 配置 NTP 源并重启服务。
- 设置时区为 Asia/Shanghai 并验证。
- 同步硬件时钟。
- 执行
hwclock --systohc将系统时间写入硬件时钟。 - 验证同步状态,确保
NTP synchronized: yes。
✅ 检查点:完成所有操作后,系统时间与硬件时钟应保持一致,且
chronyc tracking偏移量低于 0.1 秒。
4.6 自测问题
-
问题 1:如何查看当前 NTP 同步状态?
答案:使用chronyc tracking、chronyc sources -v或timedatectl。 -
问题 2:如何修改系统时区为上海?
答案:执行timedatectl set-timezone Asia/Shanghai。 -
问题 3:chronyd 无法同步的常见原因有哪些?
答案:网络不通、防火墙阻断 UDP 123、NTP 源配置错误。 -
问题 4:如何确保硬件时钟与系统时间一致?
答案:执行hwclock --systohc,将系统时间写入硬件时钟。
🧾 总结: 本章介绍了使用 chronyd 配置与验证时间同步的完整流程,涵盖服务启动、NTP 源配置、时区设置、硬件时钟同步与验证方法。掌握这些操作可确保系统日志一致性、安全认证准确性及集群事件的时序正确,为企业级系统稳定运行奠定基础。