机房内网NTP时间服务器,统一设备时间
机房内网设备时间不一致,会导致日志时间错乱、证书校验失败、集群节点通信异常。
解决办法是在内网搭建一台NTP时间服务器,让服务器、交换机、防火墙统一向它同步时间。
下面按准备、部署、客户端配置、避坑和验证的顺序,带你完成整套操作。
准备条件与部署前检查
先确认你有一台可以长期开机的Linux服务器作为NTP服务端,建议使用CentOS 7/8或Ubuntu 20.04以上版本。
这台机器需要能访问外网,或者已经有一台可用的上游NTP源。
登录服务端,检查是否已安装时间同步工具:
rpm -qa | grep chrony # CentOS/RHEL
apt list --installed | grep chrony # Ubuntu/Debian
如果未安装,执行对应命令:
yum install -y chrony # CentOS
apt install -y chrony # Ubuntu
放行NTP默认的UDP 123端口。
以firewalld为例:
firewall-cmd --permanent --add-port=123/udp
firewall-cmd --reload
如果使用iptables或云安全组,同样需要放行UDP 123。
这一步不做,客户端会一直超时。
配置内网NTP服务端
编辑/etc/chrony.conf,保留或添加可用的上游时间源。
国内机房建议使用阿里云或腾讯云公共NTP:
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
关键配置是允许内网网段同步。
假设内网网段为192.168.1.0/24,添加:
allow 192.168.1.0/24
local stratum 10
allow指定允许哪些客户端来同步;local stratum 10表示即使上游不可用,本机也以自身时间对外提供服务,适合内网隔离环境。
保存后重启服务:
systemctl restart chronyd
systemctl enable chronyd
检查服务端同步状态:
chronyc sources -v
chronyc tracking
当chronyc tracking输出中Leap status为Normal,且System time偏差在毫秒级,说明服务端时间已稳定。
这是判断NTP服务端是否可用的核心依据。
客户端接入与时间同步
在需要同步的服务器、交换机或防火墙上,将NTP服务器地址指向内网NTP服务端的IP,例如192.168.1.10。
Linux客户端同样使用chrony,编辑/etc/chrony.conf,注释掉默认外网源,添加:
server 192.168.1.10 iburst
重启并设置开机自启:
systemctl restart chronyd
systemctl enable chronyd
手动触发一次同步并查看结果:
chronyc makestep
chronyc sources
如果输出中对应服务端前面出现^*,表示已选中该源并同步成功。
交换机、防火墙等网络设备通常在Web管理界面或命令行中配置NTP。
以华为交换机为例:
ntp-service unicast-server 192.168.1.10
Cisco设备类似:
ntp server 192.168.1.10
配置后使用display ntp status或show ntp status查看同步状态,确认Clock status为synchronized。
常见报错与避坑说明
客户端一直显示No suitable source:先检查UDP 123端口是否放行,再确认服务端allow配置是否包含客户端所在网段。
如果服务端有多个网卡,还要确认bindaddress或监听地址没有限制错误。
时间偏差过大,同步不上:chrony默认在时间偏差超过1000秒时不会自动步进。
可以在客户端执行chronyc makestep手动强制同步,或在配置中加入makestep 1.0 3允许前3次同步直接步进。
服务端重启后客户端失联:确保chronyd已设置开机自启,同时检查local stratum 10是否配置,避免上游不可用时服务端拒绝服务。
虚拟机时间漂移严重:如果NTP服务端本身是虚拟机,建议关闭宿主机的时间同步功能,或安装VMware Tools/虚拟化增强工具,避免宿主机与虚拟机同时改时间造成冲突。
不要混用ntpd和chronyd:同一台机器上只保留一种时间同步服务,否则两个进程会互相干扰。
效果验证与日常检查
验证内网NTP是否生效,最直接的方法是在客户端执行:
chronyc tracking
查看Reference ID是否指向内网NTP服务端IP,System time偏差是否在可接受范围内。
一般机房内网同步偏差控制在1毫秒到50毫秒之间都算正常,具体以业务要求为准。
也可以在服务端查看当前客户端列表:
chronyc clients
如果能看到客户端IP和同步统计,说明客户端已经成功接入。
日常维护建议每月检查一次chronyc sources -v,确认上游时间源仍然可用。
如果上游NTP地址发生变化,及时更新/etc/chrony.conf并重启服务。
对于没有外网的内网环境,可以用一台能访问外网的机器作为一级NTP,其他内网设备向它同步,形成两级时间架构。
这样既保证时间准确,也减少对外网NTP的依赖。
完成以上步骤后,机房内服务器、交换机、防火墙的时间应保持一致。
后续新增设备时,只需将NTP地址指向同一台内网时间服务器即可。