使用Chrony配置时间服务器(NTP)

时间:2024-10-27 07:03:42

一、NTP和chrony简介

1、NTP

NTP 是网络时间协议( Network Time Protocol )的简称,通过 udp 123 端口进行网络时钟同步。

2、chrony

(1)概念

Chrony 是一个开源*的网络时间协议 NTP 的客户端和服务器软件。

(2)作用

  • 是计算机保持精确的时间:让计算机保持系统时钟与时钟服务器(NTP)同步;
  • 可以作为服务端软件,为其他计算机提供时间同步服务;

(3)组成——Chrony由两个程序组成

  • chronyd:是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
  • chronyc:提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

补充:

1.标准输出:命令正确执行后的输出
2.标淮错误输出:命令执行失败后的输出
3、标淮输入:从键盘输入的叫标准输入
>:标准输出重定向 等同于  1>
>>:标准输出追加重定向
<:标淮输入重定向
<<:标淮输入结束符
2>:标淮错误输出重定向
&:等同于1和2
/dev/hull:所有重定向到该位置的数据均不会保存

二、配置yum源,搭建本地yum仓库

配置yum源

(1)修改配置文件

[root@redhat ~]# cd /etc/yum.repos.d/    #进入yum仓库
[root@redhat yum.repos.d]# ls
redhat.repo
[root@redhat yum.repos.d]# vim /etc/yum.repos.d/aliyun_yum.repo   #进入vim编辑器编辑aliyun_yum.repo配置文件

[ali_baseos]  #ali_baseos仓库
name=ali_baseos   #仓库名
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/   #这是仓库的基本 URL,告诉系统从这个地址下载基础操作系统软件包。
gpgcheck=0

[ali_appstream]   #ali_appstream仓库
name=ali_appstream    #仓库名
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/    #系统从这个地址下载应用软件的软件包。
gpgcheck=0

 补充: 如何获取阿里云下载地址?

  • 点击阿里云官方镜像站,选择centos

  •  选择点击centos stream源

  • 点击下载地址

  • 选择9-stream

  • 先选择系统软件下载地址BaseOS

  • 选择x86_64

  • 选择os

  •  复制网址centos-stream-9-stream-BaseOS-x86_64-os安装包下载_开源镜像站-阿里云

  • APPStream也同理

 (2)更新缓存信息

[root@redhat yum.repos.d]# yum makecache   #可以用于检查yum源文件信息是否有误

ps: yum源配置完成!

搭建本地yum仓库

(1)测试yum仓库

[root@redhat ~]# yum install httpd
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Error: There are no enabled repositories in "/etc/yum.repos.d", "/etc/yum/repos.d", "/etc/distro.repos.d".

(2) 创建挂载点,并列出yum仓库中的配置文件

[root@redhat ~]# mkdir -p /media/cdrom   #创建挂载点(目录)
[root@redhat ~]# cd /etc/yum.repos.d/    #进入yum仓库
[root@redhat yum.repos.d]# ls
redhat.repo

(3) 编辑redhat.repo文件

[root@redhat yum.repos.d]# vim redhat.repo      #进入vim编辑器,编辑redhat.repo文件

[BaseOS]   #系统软件存放处
name=BaseOS  #目录名
baseurl=file:///media/cdrom/BaseOS  #地址
gpgcheck=0    #为1,使用公钥检验rpm包的正确性;0则不校验
enabled=1   #表示此源可用为1,0为禁用

[AppStream]   #应用软件存放处
name=AppStream
baseurl=file:///media/cdrom/AppStream
gpgcheck=0
enabled=1   

(4)手动挂载命令

[root@redhat yum.repos.d]# mount /dev/sr0 /media/cdrom 

(5)设置开机自启动,自动挂载

[root@redhat yum.repos.d]# vim /etc/fstab       #最后一行增加如下内容
/dev/cdrom      /media/cdrom    iso9660 defaults        0       0

(6)查看挂载情况

[root@redhat yum.repos.d]# df -h 

(7)测试yum源

[root@redhat yum.repos.d]# yum install httpd

ps:测试下载httpd完成,本地yum仓库搭建成功!! 若搭建中出现问题,需仔细检查配置文件,是否正确。 

三、软件安装

# 设置当前时区
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai

# 安装Chrony软件包

[root@localhost ~]# yum install -y chrony

# 现在立即启动服务

[root@localhost ~]# systemctl enable --now chronyd

#查看chronyd的服务是否在运行

[root@server ~]# systemctl status chronyd

#

#查看是否监听了udp 123端口和网卡

[root@server ~]# ss -lntp
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port    Process                                                                         
LISTEN    0         4096             127.0.0.1:631              0.0.0.0:*        users:(("cupsd",pid=1099,fd=7))                                                
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=1165,fd=3))                                                 
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=1165,fd=4))                                                 
LISTEN    0         4096                 [::1]:631                 [::]:*        users:(("cupsd",pid=1099,fd=6))

# 查询所有chrony包的安装情况

[root@localhost ~]# rpm -qa chrony

#查询chrony包中/etc下的文件

[root@localhost ~]#rpm -qc chrony

#设置时间服务器的服务端名字
[root@server1 ~]# cat /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
# Allow NTP client access from local network.
#设置允许哪个客户端可以访问该服务器
#allow 192.168.0.0/16

四、配置时间服务器客户端

#编辑主配置文件中需要同步的时间服务器

[root@localhost ~]# vim /etc/chrony.conf
pool ntp.aliyun.com iburst
pool 2.centos.pool.ntp.org iburst
 

#重启服务(只要修改文件就需要重启服务)

c[root@localhost ~]# systemctl restart chronyd
 

#查看同步情况

[root@localhost ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    17    55  +1098us[-4480us] +/-   36ms
^? ntp1.flashdance.cx            2   7    21    46    -25ms[  -25ms] +/-  128ms
^- time.cloudflare.com           3   6    17    54  +5097us[+5097us] +/-  106ms
^- ntp.neusoft.edu.cn            2   6    51    49  +8773us[+8773us] +/-   36ms
^- tick.ntp.infomaniak.ch        1   6    71    50  +6657us[+6657us] +/-   98ms

ps:

* 表示 chronyd 当前同步到的源
+ 表示可接受的信号源,与选定的信号源组合在一起
? 指示已失去连接性或其数据包未通过所有测试的源。它也显示在启动时,直到从中至少收集了 3 个样本为止

五、配置时间服务器服务端

#需要两个服务器,一个服务端(服务端ip:192.168.125.128),一个客户端测试(客户端主机ip网 段为192.168.125.0/24)
#服务端的配置
[root@client ~]# systemctl status firewalld                     #查看防护墙的状态
[root@localhost ~]# systemctl disable --now firewalld    #关闭防火墙
[root@server ~]# vim  /etc/chrony.conf                           #编辑主配置文件,设置允许客户端连接的网段
# Allow NTP client access from local network.
allow 192.168.125.0/24
[root@localhost ~]# systemctl restart chronyd               #重启服务
[root@server ~]# ss -lntup | grep 123                            #查找和显示与端口123相关的所有socket连接。
udp   UNCONN 0      0            0.0.0.0:123        0.0.0.0:*    users:(("chronyd",pid=37984,fd=7))

#客户端的配置

#客户端访问,先ping时间服务器

[root@client ~]# ping 192.168.125.128

[root@client ~]# vim /etc/chrony.conf                    #编辑主配置文件,配置客户端需要同步的服务端

pool 192.168.125.128 iburst\

[root@client ~]# grep iburst /etc/chrony.conf       #在 /etc/chrony.conf 文件中搜索包含 iburst 的行。
pool 192.168.125.128 iburst
pool 2.centos.pool.ntp.org iburst
[root@client ~]# date -s '2023-10-10 12:00'      #更改客户端的日期(以便看到同步后的效果)
2023年 10月 10日 星期二 12:00:00 CST

[root@client ~]# systemctl restart chronyd
[root@client ~]# chronyc sources
 

[root@client ~]# nc -u -z -v 192.168.125.128 123    #侦听端口
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.125.128:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.06 seconds.

补充:

#查看当前主机监听的端口信息

ss -lntup=netstat -lntup

#测试tcp或者udp的端口

nc命令

#例如

nc -z -v 主机IP  对应端口号

nc -u -zv 主机IP   123

六、自动同步实例

# 每周周一 8 00 向时间服务器同步当前主机的时间
[root@ntp-server ~] # dnf install chrony -y
[root@ntp-server ~] # grep ^pool /etc/chrony.conf
pool ntp.aliyun.com iburst
pool pool.ntp.org iburst
pool ntp.tencent.com iburst
[root@ntp-server ~] # systemctl enable --now chronyd
[root@ntp-server ~] # grep chronyc /etc/crontab               
0 8 */7 * 1 root systemctl restart chronyd &> /dev/null           #不管正确还是错误都会重定向到/dev/null下面,不占磁盘空间

补充:

配置IP地址

nmtui

(1)首先在虚拟机中查看子网、掩码、网关信息

(2) 其次nmtui进入配置界面:

  • 手动配置(空格选择):可以配置多个IP;
  • 自动连接(开机自动加载网卡的配置信息):图上为选中(空格选中);
  • 确定后调到最右边退出;

(3)激活或者重启

nmcli connecion up ens160

reboot