- A+
网络时间协议 - NTP - 是运行在传输层 123 号端口的 UDP 协议,它允许计算机通过网络同步准确时间。随着时间的流逝,计算机内部时间会出现漂移,这会导致时间不一致问题,尤其是对于服务器和客户端日志文件,或者你想要复制服务器的资源或数据库。
一.安装和配置 NTP 守护进程
官方 CentOS /RHEL 7 库默认提供 NTP 服务器安装包,可以通过使用下面的命令安装。
1.安装NTP服务器
官方 CentOS /RHEL 7 库默认提供 NTP 服务器安装包,可以通过使用下面的命令安装。
[root@shadow ~]# yum install ntp
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.huaweicloud.com
* extras: mirrors.huaweicloud.com
* updates: mirrors.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 ntp.x86_64.0.4.2.6p5-29.el7.centos.2将被安装
2.选择服务器国家位置
安装完服务器之后,首先到官方 NTP 公共时间服务器池NTP Public Pool Time Servers,选择你服务器物理位置所在的洲,然后搜索你的国家位置,然后会出现 NTP 服务器列表。

3.在 CentOS中配置NTP服务器
打开编辑 NTP 守护进程的主配置文件,注释掉来自 pool.ntp.org 项目的公共服务器默认列表,并用类似下面截图中提供给你所在国家的列表替换。(LCTT 译注:中国使用 0.cn.pool.ntp.org 等)
[root@shadow ~]# vim /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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 iburst
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst
4.替换网络IP
下一步,你需要允许来自你的网络的客户端和这台服务器同步时间。为了做到这点,添加下面一行到 NTP 配置文件,其中 restrict 语句控制允许哪些网络查询和同步时间 - 请根据需要替换网络 IP。
# Hosts on local network are less restricted.
restrict 192.168.250.0 mask 255.255.255.0 nomodify notrap
nomodify notrap 语句意味着不允许你的客户端配置服务器或者作为同步时间的节点。
5.在 CentOS 中启用 NTP 日志
如果你需要用于错误处理的额外信息,以防你的 NTP 守护进程出现问题,添加一个 logfile 语句,用于记录所有 NTP 服务器问题到一个指定的日志文件。
logfile /var/log/ntp.log
6.NTP 服务器配置
在你编辑完所有上面解释的配置并保存关闭 ntp.conf 文件后,你最终的配置看起来像下面的截图
二.添加防火墙规则并启动NTP守护进程
1.在 Firewall中开放NTP端口
NTP 服务使用 OSI 传输层(第四层)的123号UDP端口。它是为了避免可变延迟的影响所特别设计的。要在 RHEL/CentOS 7 中开放这个端口,可以对 Firewalld 服务使用下面的命令。
[root@shadow ~]# firewall-cmd --add-service=ntp --permanent
success
[root@shadow ~]# firewall-cmd --reload
success
[root@shadow ~]#
2.启动NTP服务
你在防火墙中开放了 123 号端口之后,启动 NTP 服务器并确保系统范围内可用。用下面的命令管理服务。
[root@shadow ~]# systemctl start ntpd
[root@shadow ~]# systemctl enable ntpd
Created symlink from/etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@shadow ~]# systemctl status ntpd
● ntpd.service - NetworkTimeService
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2022-01-2516:08:12 CST; 13s ago
Main PID: 7359(ntpd)
CGroup: /system.slice/ntpd.service
└─7359/usr/sbin/ntpd -u ntp:ntp -g
1月 2516:08:12 shadow ntpd[7359]: Listen normally on 3 eth0 192.168.250.182 UDP 123
1月 2516:08:12 shadow ntpd[7359]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
1月 2516:08:12 shadow ntpd[7359]: Listen normally on 5 lo ::1 UDP 123
1月 2516:08:12 shadow ntpd[7359]: Listen normally on 6 eth0 fe80::941:8a6:6c27:1098 UDP 123
1月 2516:08:12 shadow ntpd[7359]: Listening on routing socket on fd #23 for interface updates
1月 2516:08:12 shadow systemd[1]: StartedNetworkTimeService.
1月 2516:08:17 shadow ntpd[7359]: 0.0.0.0 c016 06 restart
1月 2516:08:17 shadow ntpd[7359]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
1月 2516:08:17 shadow ntpd[7359]: 0.0.0.0 c011 01 freq_not_set
1月 2516:08:23 shadow ntpd[7359]: 0.0.0.0 c614 04 freq_mode
[root@shadow ~]#
三.验证服务器时间同步
启动了 NTP 守护进程后,用几分钟等服务器和它的服务器池列表同步时间,然后运行下面的命令验证 NTP 节点同步状态和你的系统时间。
[root@shadow ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
tick.ntp.infoma .GPS. 1 u 45643209.833-15.8790.729
ntp1.flashdance 194.58.202.202 u 46643214.930-28.2266.552
electrode.felix 30.15.185.2423 u 46643204.554-16.7011.676
*111.230.189.174100.122.36.42 u 4764346.7596.30417.260
[root@shadow ~]#
[root@shadow ~]# date -R
Tue, 25Jan202216:10:18+0800
[root@shadow ~]#
四.设置 Windows NTP 客户端
如果你的 windows 机器不是域名控制器的一部分,你可以配置 Windows 和你的 NTP服务器同步时间。在任务栏右边 -> 时间 -> 更改日期和时间设置 -> 网络时间标签 -> 更改设置 -> 和一个网络时间服务器检查同步 -> 在 Server 空格输入服务器 IP 或 FQDN -> 马上更新 -> OK。
在你的网络中配置一个本地 NTP 服务器能确保你所有的服务器和客户端有相同的时间设置,以防出现网络连接失败,并且它们彼此都相互同步。