ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux Chrony服务器搭建

Linux Chrony服务器搭建 服务端配置1. 安装Chrony# CentOS/RHELsudo yum install -y chrony# Ubuntu/Debiansudo apt-get install -y chrony2. 编辑配置文件sudo vim /etc/chrony.conf添加或修改单台注意不适用于 主从 Chrony 时间同步架构# 外部时间源可选内网可注释# iburst的意思是如果chrony服务器出问题时客户端会发送一系列的包给 chrony 服务器对服务器进行检测。server ntp.aliyun.com iburst#127.127.1.0是 NTP网络时间协议服务中的本地时钟源伪 IP 地址Local Clock Refid。集群中不能上外网用本机作为时钟源。# pool127.127.1.0iburst# 允许内网客户端访问allow 192.168.0.0/16# 当无外部源时使用本地时间local stratum 10driftfile /var/lib/chrony/driftmakestep 1.0 3rtcsynclogdir /var/log/chrony1. 时间源配置Server / Pool / Peer用于指定上一级 NTP 时间服务器或集群。pool ntp.aliyun.com iburst/server 0.centos.pool.ntp.org iburstserver/pool指定 NTP 服务器地址。server指向单个明确的域名/IPpool则指向一个包含多台 NTP 服务器的域名池系统会自动从中挑选可用的节点。iburst强烈推荐初始启动时快速发送前 4~8 个探测包使系统在启动数秒内快速完成初次时间同步无需等待常规的轮询周期。2. 本地平滑追赶与时钟漂移Drift Stepping用于控制系统时间在偏差较大时如何平滑修复以及记录硬件时钟偏差。driftfile /var/lib/chrony/drift指定记录本地系统时钟漂移率Drift rate的文件路径。Chrony 会根据此文件记录的偏离数据在无法连接网络时依然保持高精度的本地时间。makestep 1.0 3makestep threshold limit核心功能定义时间步进Step瞬间硬跳变的阈值与次数。含义如果系统时间与 NTP 源偏差超过1.0秒仅在前3次更新中允许通过瞬间跳变Step的方式强行校准超过 3 次后即使偏差很大也强制采用平滑微调Slew缓慢加速或拉慢时钟频率的方式追平避免由于时间陡变导致数据库或应用服务异常。3. 访问控制与 NTP 服务端Access Server Mode用于配置是否将本机作为 NTP 服务端供内网其他机器同步。allow 192.168.1.0/24允许指定网段或 IP 的客户端向本机发起 NTP 时间同步请求使本机扮演 NTP Server 角色。deny 192.168.1.100显式拒绝特定 IP 或网段的访问。local stratum 10核心功能孤网/断网环境下的离线同步兜底即传统127.127.1.0的现代替代方案。含义当本机无法连接到任何上游 NTP 源时将本机系统时间伪装为一个Stratum 10层级的时间源继续响应内网客户端的同步请求保证内网时间整体一致不因公网断开而导致 NTP 服务拒绝响应。4. 硬件时钟与日志管理RTC Logging控制与主板 BIOS 硬件时钟RTC的相互作用以及日志输出。rtcsync开启内核级别的系统时钟System Clock到硬件时钟RTC的定期自动同步通常每 11 分钟同步一次无需人工运行hwclock --systohc。hwtimestamp *启用网络接口卡NIC的硬件时间戳功能支持该功能的网卡才能生效可以大幅降低网络抖动对时间同步精准度的影响达到亚微秒级精度。logdir /var/log/chrony指定 Chrony 日志文件的保存目录。log tracking measurements statistics指定开启哪些类别的详细日志记录如跟踪信息、测量数据、统计数据等调试和性能诊断时非常有效。5. 安全与辅助管理Security Managementkeyfile /etc/chrony.keys指定包含 NTP 对称密钥NTP Authentication Keys的文件路径用于保证 NTP 节点间通信验证安全性。cmdallow 127.0.0.1/bindcmdaddress 127.0.0.1限制仅允许通过本机环回口127.0.0.1使用chronyc命令行工具管理和查看 Chrony 运行状态禁止远程执行管理指令。3. 启动并设置开机自启sudo systemctl restart chronydsudo systemctl enable chronyd4. 防火墙放行UDP 123端口sudo firewall-cmd --add-servicentp --permanentsudo firewall-cmd --reload# 测试环境放行所有数据包通过firewall-cmd --set-default-zonetrusted客户端配置1. 安装Chronysudo yum install -y chrony # 或 apt-get install -y chrony2. 编辑配置文件server 192.168.0.100 iburst # 替换为Chrony服务器IPdriftfile /var/lib/chrony/driftmakestep 1.0 3rtcsync3. 启动并设置开机自启sudo systemctl restart chronydsudo systemctl enable chronyd验证同步状态chronyc -n sources -v # 查看时间源状态chronyc tracking # 查看同步详情chronyc -a makestep # 强制立即同步一次chronyc -n sourcestats -v # 查看正在使用的时间服务器状态最佳实践内网部署时建议开启 local stratum 确保断网可用。配置多个外部NTP源提高稳定性。定期检查 chronyc tracking 确认偏差在可接受范围内。设置时间使用date命令修改 Linux 系统时间需使用-s或--set选项且必须拥有root 权限使用sudo。date设置时间语法同时设置日期与时间sudo date -s YYYY-MM-DD HH:MM:SS # 示例设置为 2026年9月10日 19:30:00 sudo date -s 2026-09-10 19:30:00仅设置时间sudo date -s HH:MM:SS # 示例设置为 19:30:00 sudo date -s 19:30:00仅设置日期sudo date -s YYYY-MM-DD # 示例设置为 2026年9月10日时间默认变为 00:00:00 sudo date -s 2026-09-10重要同步与校验步骤单独执行date -s仅更改了系统时间System Clock。系统重启后时间可能会从硬件时钟恢复因此建议完成以下补充操作同步至硬件时钟RTC防止重启后失效将系统时间写入主板 BIOS 硬件时钟sudo hwclock --systohc验证结果查看当前系统时间与硬件时间date sudo hwclock --show注意如果系统开启了 NTP/systemd-timesyncd 自动时间同步手改的时间可能会被自动覆写。如需完全手动控制可先关闭自动同步sudo timedatectl set-ntp false。使用timedatectl修改 Linux 系统时间需配合set-time子命令且必须拥有root 权限使用sudo。timedatectl设置时间语法修改时区 tzselect 命令ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime同时设置日期与时间sudo timedatectl set-time YYYY-MM-DD HH:MM:SS # 示例设置为 2026年9月10日 19:30:00 sudo timedatectl set-time 2026-09-10 19:30:00仅设置时间sudo timedatectl set-time HH:MM:SS # 示例设置为 19:30:00 sudo timedatectl set-time 19:30:00仅设置日期sudo timedatectl set-time YYYY-MM-DD # 示例设置为 2026年9月10日时间默认变为 00:00:00 sudo timedatectl set-time 2026-09-10前置必要条件关闭 NTP 自动同步若系统的 NTP网络时间协议同步处于开启状态执行set-time会提示Failed to set time: NTP service is active报错。手动修改前需先关闭 NTP 同步关闭 NTP 同步sudo timedatectl set-ntp false设置时间并验证sudo timedatectl set-time 2026-09-10 19:30:00 timedatectl验证方法检查输出中的Local time是否已更新且NTP service: inactive。提示与传统date命令不同timedatectl会自动将新系统时间同步写入主板硬件时钟RTC无需额外执行hwclock --systohc。如需恢复自动网络校时运行sudo timedatectl set-ntp true即可。
返回列表