在网络环境中,所有服务器和设备保持时间同步至关重要,它直接影响日志审计、分布式系统协作、证书验证等关键服务的稳定性,NTP(网络时间协议)是实现这一目标的标准协议,本文将详细介绍如何在CentOS系统上配置一台NTP服务器,为局域网内的其他设备提供精准、可靠的时间源。
安装NTP服务软件包
在CentOS 7及更高版本中,chrony
是推荐的NTP实现,它在同步速度和网络适应性方面优于传统的ntpd
,我们可以使用yum
或dnf
包管理器进行安装。
打开终端,执行以下命令:
sudo yum install chrony
对于使用dnf
的CentOS 8/9系统,命令为:
sudo dnf install chrony
安装完成后,主配置文件位于/etc/chrony.conf
。
配置NTP服务器
配置NTP服务器的核心是编辑/etc/chrony.conf
文件,在修改前,建议先备份原始文件。
sudo cp /etc/chrony.conf /etc/chrony.conf.bak
然后使用文本编辑器(如vi
或nano
)打开配置文件:
sudo vi /etc/chrony.conf
主要关注以下几个关键配置项:
指定上游时间服务器
chrony.conf
默认已包含一些公共时间服务器池(pool
指令),您可以根据需要修改或添加更接近您地理位置的服务器,以提高同步精度,使用中国的NTP服务器池:pool 0.cn.pool.ntp.org iburst pool 1.cn.pool.ntp.org iburst pool 2.cn.pool.ntp.org iburst pool 3.cn.pool.ntp.org iburst
允许客户端查询
默认情况下,chrony
只允许本机查询,要使其作为局域网的时间服务器,必须使用allow
指令开放访问权限,允许168.1.0/24
网段的所有客户端访问:# Allow NTP client access from local network. allow 192.168.1.0/24
设置本地时钟层级
如果服务器与外部时间源失联,可以配置其使用本地硬件时钟作为时间源,继续为网络提供服务,这通过local stratum
指令实现,层级(stratum)数字越小,时间源越可信,通常设置为10,表示一个较低的优先级。# Serve time even if not synchronized to a time source. local stratum 10
启动并启用服务
配置文件修改完毕后,需要启动chronyd
服务并设置其开机自启。
sudo systemctl start chronyd sudo systemctl enable chronyd
使用以下命令检查服务状态,确保其正在运行:
sudo systemctl status chronyd
配置防火墙规则
NTP服务使用UDP协议的123端口,如果系统启用了防火墙(默认为firewalld
),必须开放此端口,否则客户端无法连接。
sudo firewall-cmd --add-service=ntp --permanent sudo firewall-cmd --reload
--permanent
参数表示规则永久生效,reload
则重新加载防火墙配置。
验证与监控
服务器配置完成后,我们需要验证其是否正常工作。chronyc
是chrony
的命令行工具,可用于监控和调试。
命令 | 描述 |
---|---|
chronyc sources -v | 查看当前连接的上游时间源状态,^* 开头的表示当前正在同步的源。 |
chronyc tracking | 显示详细的系统时间同步信息,包括与时间源的偏移量和系统时钟的频率。 |
在客户端机器上,同样安装chrony
,并将其配置文件中的server
或pool
指令指向我们刚搭建的NTP服务器IP地址,然后启动服务即可。
相关问答FAQs
Q1: chrony 和传统的 ntp (ntpd) 有什么区别?我应该选择哪个?
A:chrony
是较新的NTP实现,相比传统的ntpd
,它有几个显著优势:
- 快速同步:
chrony
能在几分钟内完成初始时间同步,而ntpd
可能需要数小时。 - 网络适应性强:对于网络连接不稳定(如间歇性断网)的环境,
chrony
的表现更好,能更快地恢复同步。 - 虚拟机友好:在虚拟机中,时钟可能会漂移,
chrony
能更好地处理这种情况。
对于绝大多数现代应用场景,特别是CentOS 7及以后版本,推荐使用chrony
。ntpd
更适合那些需要高度稳定且网络连接永固的旧系统。
Q2: 如何检查客户端是否成功从我的NTP服务器同步了时间?
A: 在客户端机器上,您可以使用多种方法进行验证,最直接的方式是使用chronyc
命令:
- 执行
chronyc sources -v
,查看输出中是否包含您的NTP服务器IP地址,并且该地址前面是否有^*
或^+
符号。^*
表示当前正在同步的源,^+
表示候选的可用源。 - 您也可以使用
timedatectl status
命令(适用于systemd系统),查看NTP synchronized
项是否为yes
,同时NTP service
应为active
。
如果看到这些信息,说明客户端已成功连接到您的服务器并正在同步时间。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/18103.html