必须配置Chrony服务端与客户端以统一内网时间,否则MySQL主从复制、HTTPS证书校验、分布式链路追踪将因超1秒时差而失效;服务端需安装chrony、配置上游源/允许网段/本地兜底,客户端需指定服务端IP或域名并禁用默认pool。

让内网所有机器时间统一,必须配置Chrony服务端与客户端
当服务器集群中出现时间差超过1秒时,MySQL主从复制可能中断、HTTPS证书校验会批量失败、分布式链路追踪日志完全错乱——这不是偶然故障,而是未配置Chrony服务端与客户端导致的必然结果。你不需要公网访问权限,一台局域网主机即可成为可信时间源。
服务端:把一台Linux设为本地NTP时间服务器
第一步:安装Chrony并启用服务
在CentOS/RHEL 8+系统执行:sudo dnf install chrony -y && sudo systemctl enable --now chronyd;Ubuntu/Debian系统执行:sudo apt update && sudo apt install chrony -y && sudo systemctl enable --now chronyd。
第二步:编辑配置文件,开放内网访问权限
运行sudo nano /etc/chrony.conf,删除或注释掉所有以pool开头的行,然后添加以下三类关键配置:
① 上游时间源(有公网时用):server ntp.aliyun.com iburst
② 允许同步的网段(必须写,否则客户端连不上):allow 192.168.10.0/24(替换成你实际的内网段)
③ 无上游时兜底策略:local stratum 10——这一步【不可省略】,否则断网后服务端无法向客户端提供时间。
第三步:重启服务并强制立即校准sudo systemctl restart chronyd && sudo chronyc makestep。makestep命令会直接跳变系统时间,避免chronyd因偏差过大而拒绝同步。
第四步:确认UDP 123端口已放行
执行sudo ss -tuln | grep :123,输出中应包含udp 0 0 *:123 *:*;若无,检查防火墙:sudo firewall-cmd --add-service=ntp --permanent && sudo firewall-cmd --reload。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
客户端:连接到内网Chrony服务端
方法一:直接指定服务端IP(推荐用于固定IP环境)
编辑/etc/chrony.conf,注释掉所有server和pool行,新增一行:server 192.168.10.100 iburst(将IP替换为你的服务端地址)。保存后执行sudo systemctl restart chronyd。
方法二:使用域名自动发现(适合DHCP+DNS环境)
在/etc/chrony.conf中写入:server chrony-server.local iburst,确保该域名能被客户端正确解析。这比硬编码IP更利于后期维护。
注意:【不要保留默认的pool.ntp.org配置】,否则客户端会优先尝试连接公网服务器,导致内网同步失效。
验证同步是否真正生效
在客户端上依次执行以下命令:
① sudo chronyc sources -v:看到^* 192.168.10.100(星号在前)表示正在从服务端同步;
② sudo chronyc tracking:关注System time行,显示offset值应在±50ms以内;
③ timedatectl status | grep "System clock":输出应为System clock synchronized: yes。










