跳转至

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 服务

🛠️ 操作步骤

  1. 检查服务状态:

    systemctl status chronyd  # 检查 chronyd 服务状态
    

  2. 启用并启动服务:

    systemctl enable --now chronyd  # 启用并立即启动 chronyd 服务
    

检查点:服务状态应显示 active (running)。若未启动,检查日志:journalctl -u chronyd


4.2.2 配置 NTP 源

🛠️ 操作步骤

  1. 编辑 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
    

  2. 重启 chronyd 服务:

    systemctl restart chronyd  # 重启 chronyd 服务
    

💡 提示iburst 选项加速初始同步。企业环境可替换为内部 NTP 服务器(如 server internal-ntp.example.com iburst)。


4.2.3 验证 NTP 同步

🛠️ 操作步骤

  1. 查看 NTP 源状态:

    chronyc sources -v  # 显示 NTP 源详细状态
    

  2. 检查同步偏移:

    chronyc tracking  # 显示当前同步状态和偏移量
    

  3. 使用 timedatectl 验证:

    timedatectl  # 检查 NTP 同步状态(NTP enabled: yes, NTP synchronized: yes)
    

检查点Reference ID 不应为空,偏移量(Offset)应小于 0.1 秒。若未同步,检查网络和防火墙(UDP 123 端口)。


4.2.4 设置系统时区

🛠️ 操作步骤

  1. 查看可用时区:

    timedatectl list-timezones  # 列出所有可用时区
    

  2. 设置时区(示例:上海):

    timedatectl set-timezone Asia/Shanghai  # 设置时区为 Asia/Shanghai
    

  3. 验证时区:

    timedatectl  # 检查 Time zone 字段
    

💡 提示:时区设置影响日志时间戳和证书验证。自动化环境中,可结合 Ansible 批量设置。


4.2.5 同步硬件时钟

🛠️ 操作步骤

  1. 查看硬件时钟:

    hwclock -r  # 读取硬件时钟(RTC)
    

  2. 同步系统时间至硬件时钟:

    hwclock --systohc  # 将系统时间写入硬件时钟
    

  3. 验证同步:

    hwclock -r  # 再次检查硬件时钟
    

⚠️ 注意:虚拟机环境中,硬件时钟可能受宿主机影响。建议在关机前执行同步。


4.3 常见问题与排查

🔍 故障排查

  • 问题 1:chronyd 未同步
    解决:检查网络(ping 0.rhel.pool.ntp.org)、防火墙(firewall-cmd --add-port=123/udp --permanentfirewall-cmd --reload)或 NTP 源配置。

  • 问题 2:时区不正确
    解决:使用 timedatectl set-timezone 重新设置,并验证 date 输出。

  • 问题 3:硬件时钟偏差大
    解决:定期执行 hwclock --systohc,或配置 cron 任务自动化。

💡 提示:若 chronyd 失败,可临时使用 ntpdatentpdate 0.rhel.pool.ntp.org,但不推荐长期使用。


4.4 系统验证

🛠️ 操作步骤

  1. 综合验证:
    timedatectl  # 检查 NTP 同步和时区
    chronyc sources  # 检查 NTP 源
    date  # 查看当前时间
    

检查点:确保 NTP synchronized: yes,时区正确,时间准确。


4.5 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,检查 chronyd 状态。
  2. 配置 NTP 源并重启服务。
  3. 设置时区为 Asia/Shanghai 并验证。
  4. 同步硬件时钟。
  5. 执行 hwclock --systohc 将系统时间写入硬件时钟。
  6. 验证同步状态,确保 NTP synchronized: yes

检查点:完成所有操作后,系统时间与硬件时钟应保持一致,且 chronyc tracking 偏移量低于 0.1 秒。


4.6 自测问题

  • 问题 1:如何查看当前 NTP 同步状态?
    答案:使用 chronyc trackingchronyc sources -vtimedatectl

  • 问题 2:如何修改系统时区为上海?
    答案:执行 timedatectl set-timezone Asia/Shanghai

  • 问题 3:chronyd 无法同步的常见原因有哪些?
    答案:网络不通、防火墙阻断 UDP 123、NTP 源配置错误。

  • 问题 4:如何确保硬件时钟与系统时间一致?
    答案:执行 hwclock --systohc,将系统时间写入硬件时钟。


🧾 总结: 本章介绍了使用 chronyd 配置与验证时间同步的完整流程,涵盖服务启动、NTP 源配置、时区设置、硬件时钟同步与验证方法。掌握这些操作可确保系统日志一致性、安全认证准确性及集群事件的时序正确,为企业级系统稳定运行奠定基础。