在现代服务器管理中,确保系统时间的精确性是至关重要的,无论是用于日志审计、分布式系统协调,还是证书验证,一个统一且准确的时间源都是基础,网络时间协议(NTP)就是这样一种用于同步网络中计算机时间的协议,本文将详细介绍在CentOS 7.3系统上配置NTP服务的完整流程,确保服务器时间与标准时间源保持同步。

安装NTP服务
需要确保系统已安装NTP软件包,CentOS 7.3默认可能未预装,可以通过yum命令进行安装,打开终端,执行以下命令:
yum install -y ntp
该命令会自动下载并安装NTP服务(ntpd)及其相关依赖。
配置NTP服务器
NTP服务的主配置文件位于/etc/ntp.conf,在进行修改前,建议先备份原始文件:
cp /etc/ntp.conf /etc/ntp.conf.bak
使用文本编辑器(如vi或nano)打开配置文件:
vi /etc/ntp.conf
配置文件的核心在于指定时间服务器和设置访问控制。
-
指定时间服务器(Server) 文件中通常会有以
server开头的行,用于指定上层NTP服务器,可以将其注释掉或替换为更可靠的公共NTP服务器池,推荐使用pool.ntp.org项目,它能根据地理位置自动分配最优的服务器,以下是一个推荐的配置示例:# Use public servers from the pool.ntp.org project. server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburstiburst参数的作用是在初始同步时,以较快的频率发送多个数据包,从而加速首次同步过程。
-
设置访问控制(Restrict) 为了安全起见,需要配置
restrict规则来控制哪些客户端可以查询或修改此NTP服务器,默认配置已经比较安全,通常包含以下行:# Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # Permit public servers access for synchronization. restrict 0.centos.pool.ntp.org nomodify notrap noquery restrict 1.centos.pool.ntp.org nomodify notrap noquery restrict 2.centos.pool.ntp.org nomodify notrap noquery restrict 3.centos.pool.ntp.org nomodify notrap noquery # Default restrictions restrict default ignore restrict -6 default ignore restrict 127.0.0.1 restrict -6 ::1这里的
nomodify表示客户端不能修改服务器参数,notrap防止控制消息陷阱,noquery禁止客户端查询服务器状态,如果希望这台服务器为内网其他机器提供时间服务,可以取消对内网网段的注释并做相应修改。
启动与启用服务
配置文件修改完成后,保存并退出,接下来启动NTP服务,并将其设置为开机自启:
systemctl start ntpd systemctl enable ntpd
可以使用systemctl status ntpd来检查服务是否正在正常运行。
防火墙配置
NTP服务使用UDP的123端口,如果系统启用了防火墙,需要开放该端口以允许客户端同步时间,使用firewall-cmd进行配置:
firewall-cmd --permanent --add-service=ntp firewall-cmd --reload
验证同步状态
同步过程需要几分钟时间,可以使用ntpq -p命令来查看NTP的同步状态,该命令会列出所有配置的时间服务器及其状态,输出示例如下:
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp1.ams1.nl.e 193.67.79.202 2 u 12 64 37 35.764 1.875 2.915
+ntp2.ams1.nl.e 193.67.79.202 2 u 11 64 37 36.841 2.842 3.001
下表解释了各列的含义:

| 列名 | 含义 |
|---|---|
| remote | 上层NTP服务器的名称或IP地址。 |
| refid | 上层服务器同步的时间源。 |
| st | Stratum(层级),表示服务器与标准时钟源的层级距离,值越小越准确。 |
| t | 类型,u表示unicast(单播)。 |
| when | 上一次成功同步后的时间(秒)。 |
| poll | 同步的间隔时间(秒)。 |
| reach | 八进制数,表示最近8次查询的可达性,377表示全部成功。 |
| delay | 网络延迟。 |
| offset | 本地时间与服务器时间的偏移量(毫秒)。 |
| jitter | 抖动值,表示时间同步的稳定性。 |
最重要的是,观察remote列前面的符号:
- 表示当前正在使用的同步源。
- 表示可用的候选同步源。
- 表示已被排除的同步源。
当看到一个号时,说明NTP同步已成功。
相关问答FAQs
*问题1:为什么执行ntpq -p后,很久才出现`号,或者一直没有出现?** **解答:** NTP服务的同步是一个渐进的过程,尤其是在系统时间与标准时间偏差较大时,它不会立即跳变时间,而是通过微调(slewing)逐步缩小差距,这个过程可能需要5到15分钟,甚至更久,如果长时间没有同步,请检查:1)网络连接是否正常,能否ping通配置的NTP服务器;2)防火墙是否正确放行了UDP 123端口;3)ntpd`服务状态是否正常。
问题2:如何让我的CentOS 7.3服务器作为内网的NTP时间服务器,为其他机器提供时间?
解答: 确保该服务器已成功与外部时间源同步(ntpq -p有号),编辑/etc/ntp.conf文件,在访问控制部分,为你的内网网段添加一条restrict规则,如果你的内网是168.10.0/24,可以添加如下行:
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
这条规则允许168.10.0网段内的所有机器向这台服务器查询时间,但不能修改其配置,保存配置后,重启ntpd服务(systemctl restart ntpd),并在内网客户端上将NTP服务器指向这台服务器的内网IP即可。