在Linux内网安装NTP,配置时钟同步

溜得起飞 2024-09-04 16:07:04 阅读 59

测试环境有三台内网服务器192.168.5.160、192.168.5.161、192.168.5.162。

NTP服务端:192.168.5.160

NTP客户端:192.168.5.161、192.168.5.162

1、NTP服务安装

三台服务器都需要安装NTP。

1.1 有网络

<code>yum install ntp -y

或者(Ubuntu)

apt-get update

apt-get install ntp

1.2 离线系统

直接下载地址:

http://mirror.centos.org/centos/7/os/x86_64/Packages/ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

http://mirror.centos.org/centos/7/os/x86_64/Packages/ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

http://mirror.centos.org/centos/7/os/x86_64/Packages/autogen-libopts-5.18-5.el7.x86_64.rpm

或者一步步的找到地址:

下载页面:https://pkgs.org/download/ntp,找到CentOS x86_64 -> ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

https://centos.pkgs.org/7/centos-x86_64/ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm.html

-> Download ->

Binary Package http://mirror.centos.org/centos/7/os/x86_64/Packages/ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

以及Requires:libedit.so.25、ntpdate-4.2.6p5-29.el7.centos.2.x86_64

手动下载(rpm包和依赖)安装,需要下载:

ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

autogen-libopts-5.18-5.el7.x86_64.rpm

ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

直接安装

# 在只有这三个包的目录里面执行

rpm -ivh autogen-libopts-5.18-5.el7.x86_64.rpm

rpm -ivh ntp*

或者一个个安装

安装这个包

rpm -ivh ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

提示缺少依赖 :

libedit.so.25

ntpdate-4.2.6p5-29.el7.centos.2.x86_64

对应在Requires里面找到对应的包,下载

安装这个包(libedit.so.25)

rpm -ivh autogen-libopts-5.18-5.el7.x86_64.rpm

安装这个包(ntpdate),安装前需要检查服务是否存在

rpm -qa | grep ntpdate(存在删掉即可)

删除:

yum remove ntpdate -y

再安装

rpm -ivh ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

最后执行安装ntp

rpm -ivh ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

2、配置 NTP时间同步源

2.1 有网络

使用第三方NTP地址进行时间同步

vi /etc/ntp.conf

将默认的pool配置注释掉,添加如下内容(地址没有详细一一测试)

#国家授时中心

server ntp.ntsc.ac.cn iburst prefer

#阿里云时间源

server ntp.aliyun.com iburst

server ntp1.aliyun.com iburst

server ntp2.aliyun com iburst

server times.aliyun.com iburst prefer

2.2 离线系统

ntp时钟服务器(192.168.5.160服务器)配置

修改/etc/ntp.conf 文件配置

vi /etc/ntp.conf

注释掉

#restrict default nomodify notrap nopeer noquery

注释原有的server 0 1 2 3,添加新的server和restrict

#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

# 默认的一个内部时钟数据,在没有外部NTP服务器时,它为局域网用户提供服务

server 127.127.1.0 stratum 3

# 表示网关为192.168.5.0,子网掩码为255.255.255.0,网段为192.168.5.0-192.168.5.255的机器可通过该服务端时间校准

restrict 192.168.5.0 mask 255.255.255.0

# 允许修改本机时间

restrict 192.168.5.160 nomodify notrap noquery nopeer

其他的一些配置【可选】

# 不允许来自公网上ipv4和ipv6客户端的访问

restrict -4 default kod notrap nomodify nopeer noquery limited

restrict -6 default kod notrap nomodify nopeer noquery limited

重启

systemctl restart ntpd

systemctl start ntpd

systemctl enable ntpd

查看服务是否运行

ps -ef |grep ntpd

或者

systemctl status ntpd

查看同步状态

timedatectl status

ntp时钟客户端(192.168.5.161、192.168.5.162服务器)配置

修改/etc/ntp.conf 文件配置

vi /etc/ntp.conf

注释原有的时间服务器地址,添加新的ntp时间服务器地址

#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

# ntp时间服务器地址

server 192.168.5.160

重启,禁用ntpd开机启动

systemctl restart ntpd

systemctl stop ntpd

# 禁用ntpd开机启动

systemctl disable ntpd

ntpstat

查看服务是否运行

ps -ef |grep ntpd

或者

systemctl status ntpd

或者

ntpq -p

测试是否成功

ntpstat

出现失败,需要等待大约2-3分钟左右

unsynchronised

time server re-starting

polling server every 8 s

再执行ntpstat出现成功

synchronised to NTP server (172.17.100.8) at stratum 7

time correct to within 951 ms

polling server every 64 s

查看同步状态

timedatectl status

3、关闭防火墙服务或者开启端口,关闭selinux,关闭chronyd

以下操作三台服务器都要执行。

如果你的服务器有防火墙,确保UDP端口123(NTP默认端口)是开放的,以便其他设备可以与NTP服务器通信(UDP不是TCP)。

# 开端口123(CentOS)

firewall-cmd --permanent --add-port=123/udp

firewall-cmd --reload

# 查询端口

firewall-cmd --list-ports |grep 123

# 开端口123(Ubuntu)

ufw allow 123/udp

或者直接关闭防火墙,禁用开机启动(不建议)

systemctl stop firewalld

systemctl disable firewalld

关闭selinux服务,设置selinux策略为“disabled”。

setenforce 0

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

如果安装了chrony,需要将chronyd进程关掉,并且禁用开机启动,否则会影响ntpd的启动。chronyd和ntpd都占用的是UDP123端口。可以用以下方法查询chronyd,并且关闭,禁用开机启动。

systemctl status chronyd

systemctl stop chronyd

systemctl disable chronyd

4、设置本地时间

在NTP服务端(192.168.5.160服务器)设置一个特定时间。

date -s "2024-03-10 00:00:00"

5、手动同步与定时同步

同步时间在ntp时钟客户端(192.168.5.161、192.168.5.162服务器)操作。

若ntp服务正在运行,则需要执行以下命令,先停止ntp服务(因为ntpdate工具和ntp守护进程冲突,因此执行ntpdate命令时需要保证ntpd进程未运行)。

systemctl stop ntpd

手动同步

手动同步时间以验证NTP服务的配置

ntpdate ntp.aliyun.com

或者

ntpdate 192.168.5.160

定时同步

如果需要定时同步系统时间,你可以使用crontab工具来设置。例如,下面的命令会每五分钟执行一次ntpdate命令进行时间同步:

crontab -e

然后在编辑窗口中加入如下内容:

*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com

或者

*/5 * * * * /usr/sbin/ntpdate 192.168.5.160

或者 写入到cron日志里面(自动按天切割), 没有配置日志,会一直接收邮件

*/5 * * * * /usr/sbin/ntpdate 192.168.5.160 >> /var/log/cron 2>&1

或者 写入自定义日志里面(可能需要手动切割)

*/5 * * * * /usr/sbin/ntpdate 192.168.5.160 >> /var/log/cron-ntpdate.log 2>&1

或者不打印日志

*/5 * * * * /usr/sbin/ntpdate 192.168.5.160 >/dev/null 2>&1

6.重启测试(可选)

在NTP服务端(192.168.5.160服务器)重新设置一个另外的时间

date -s "2024-03-10 00:00:00"

在ntp时钟客户端(192.168.5.161、192.168.5.162服务器)重启服务器,重新连接服务器。等待5分钟,看看客户端是否能够同步服务端的时间。

7、监控和日志

你可以使用ntptime命令来查看当前系统时间与NTP服务器的时间偏差。

NTP服务的日志文件通常位于/var/log/syslog或/var/log/ntp.log,你可以查看这些日志来监控NTP服务的运行情况和解决潜在问题。

请注意,NTP服务器的配置可能因具体的网络环境和需求而有所不同。因此,在实际部署过程中,建议参考相关的官方文档和最佳实践,并根据实际情况进行调整和优化。此外,确保在配置过程中考虑到安全性和稳定性方面的因素。

8、常见问题及其解决方法

1. NTP服务未启动或未安装:

使用以下命令安装和启动 NTP 服务:

yum install ntp 或 apt-get install ntp

systemctl start ntpd 或 systemctl start chronyd

2. 防火墙设置不正确:

确保防火墙已经打开并允许NTP端口(UDP 123)通过:

firewall-cmd --add-service=ntp --permanent

firewall-cmd --reload

3. 与NTP服务器的连接失败:

确保您的Linux主机可以连接到NTP服务器,并且NTP服务器的DNS解析正确。您可以使用以下命令检查IP地址是否可用:

ping ntp.server.com

4. 时间同步失败:

如果时间同步失败,可能需要手动将系统时间设置为与NTP服务器时间相同:

ntpdate -u ntp.server.com

其它资料

一般的ntp使用场景下,ntp时钟源端只需根据需求配置restrict、server参数即可。

参数解释如下:

参数

描述

driftfile

一个绝对路径,默认为:“/var/lib/ntp/drift”

指定存储系统时钟漂移值的文件路径,记录系统时钟与 ntp时钟源时钟之间的差异,以便在系统重新启动后快速同步时间

restrict

具体的IP地址/网段(后面可加具体选项)

restrict参数用于限制具体的IP或网段对本时钟源的具体操作。

其选项包括:

nomodify(禁止对本ntp时钟源进行修改操作,包括更改时间、更改配置等);

notrap(禁止使用trap服务,trap服务是一种用于远程管理的NTP服务,禁止使用可以增加安全性);

nopeer(禁止作为对等服务器,即禁止其他ntp时钟源与本时钟源进行对等通信);

noquery(禁止查询操作,即禁止其他客户端向本ntp时钟源发送时间查询请求)。

举例1:

restrict default nomodify notrap nopeer noquery(允许所有人同步本时钟源时间,但遵守nomodify、notrap、nopeer、noquery动作);

举例2:restrict 192.168.100.6(允许192.168.100.6同步本时钟源时间);

举例3:restrict 192.168.1.0 mask 255.255.255.0 notrap(允许192.168.1.0/24这个网段内的主机同步本时钟源时间,但遵守notrap动作)

server

具体的IP地址(后面可加具体选项)

server参数用于指定上级时钟源,当本节点需要同步其他时钟源的时间时,可以通过该参数指定上级时钟源IP。

其选项包括:

iburst(在与上级时钟源建立连接时,使用更快的初始轮询间隔来加快同步速度);

prefer(当存在多个上级时钟源时,该选项将指定的上级时钟源作为首选上级时钟源,即优先选择该时钟源进行时间同步);

stratum X(指定该时钟源的层级,X的值为1~15,数字越小,层级越高,表示可靠性越高,该选项仅适用于ntp时钟源之间的时间同步,对于客户端与ntp时钟源之间的时间同步,该选项不起作用);

minpoll X(表示设置最小轮询间隔为2X秒,X默认为6,在使用公网时钟源时,建议X不小于6即最小轮询间隔不小于64秒 );

maxpoll X(表示设置最大轮询间隔为2X秒,X默认为10)。

举例1:server 192.168.100.10(指定上级时钟源为192.168.100.10);

举例2:server 192.168.100.20 prefer(指定上级时钟源为192.168.100.20,并设置为首选时钟源);

举例3:server 192.168.100.30 stratum 10(指定上级时钟源为192.168.100.30,并设置层级为10);

举例4:server 192.168.100.40 iburst minpoll 7 maxpoll 11(指定上级时钟源为192.168.100.40,并设置了iburst探测,指定了最小轮询间隔为128秒,最大轮询间隔为2048秒)

broadcast

广播IP地址(后面可加具体选项)

用于配置ntp服务器向本地网络广播时间信息,作为广播服务端,它可以通过广播将时间信息发送给网络中的其他设备,以实现时间同步。

其选项包括:

ttl(指定广播数据包的生存时间,即数据包在网络中传播的最大跳数);

key(指定用于加密广播数据包的密钥编号);auth(指定用于鉴权的类型,可选的鉴权类型包括:none、autokey、ntp、control、crypto)。

举例1:broadcast 192.168.100.255 ttl 6(以广播方式向192.168.100.255地址发送时间信息,并设置广播数据包的生存时间为6跳)

broadcastclient

空/具体选项

当配置文件中存在此参数时,表示当前节点为ntp服务的广播客户端,会接受来自广播服务端发出的时间信息完成时间同步。

其选项包括:

ttl(指定接收广播数据包的生存时间,即数据包在网络中传播的最大跳数);

key(指定用于解密广播数据包的密钥编号)。

举例1:broadcastclient(启用broadcastclient参数);

举例2:broadcastclient ttl 6(启用broadcastclient参数,并设置接收广播数据包的生存时间为6跳)

crypto

空/具体选项

当配置文件中存在此参数时,表示时间同步启用公钥加密,使用加密算法对NTP通信进行加密和身份验证,该参数一般不用,此处不做具体介绍

includefile

一个绝对路径,默认为:“/etc/ntp/crypto/pw”

用于指定一个文件,该文件包含其他NTP配置信息。通过使用includefile参数,可以将配置信息分散到多个文件中,使配置文件更加模块化和易于管理,该参数一般不用,此处不做具体用法介绍

keys

一个绝对路径,默认为:“/etc/ntp/keys”

指定用于认证和加密NTP通信的密钥文件路径,通过使用keys参数,可以配置ntp时钟源和ntp客户端使用的密钥,以确保通信的安全性和身份验证,该参数一般不用,此处不做具体用法介绍

disable monitor

用于禁用本ntp时钟源的监视功能。通过使用disable monitor参数,可以阻止本ntp时钟源接受和响应监视查询,禁用监视功能并不会影响ntp时钟源的正常时间同步功能。ntp时钟源仍然可以继续提供时间同步服务,但不会响应监视查询



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。