NTP协议
NTP协议 是网络时间协议(Network Time Protocol )的简称,通过 udp 123 端口进行网络时钟同步。
Chrony
Chrony 是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器(NTP )同步,因此让你的计算机保持精确的时间, Chrony 也可以作为服务端软件为其他计算 机提供时间同步服务。
Chrony组成:
Chrony由两个程序组成,分别是chronyd和chronyc。
chronyd: 是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
chronyc: 提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
chrony包的安装
#安装chrony包
[root@localhost ~]# yum install -y chrony
#查询安装包,可以看到当前的版本
[root@localhost ~]#rpm -qa
#设置当前时区
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
#在开机的时候就启动 + 现在就开始启用
[root@localhost ~]# systemctl enable --now chronyd
chrony.conf文件中的部分信息配置
#查看文件内容
[root@server1 ~]# cat /etc/chrony.conf
#设置时间服务器的服务端名字
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
pool 2.centos.pool.ntp.org iburst
#设置允许哪个客户端可以访问该服务器
# Allow NTP client access from local network.
allow 192.168.0.0/16
配置时间服务器客户端
[root@server1 ~]# vim /etc/chrony.conf
#此处服务器可以写国内的
server ntp.aliyun.com iburst
[root@localhost ~]# systemctl restart chronyd
[root@server1 ~]# chronyc sources
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
============================================================================
^* 203.107.6.88 2 6 7 1 -705us[ -5240s] +/-28ms
^? ntp1.flashdance.cx 0 6 0 - +0ns[ +0ns] +/-0ns
#其中^后的符号表示不同情况:
* 表示 chronyd 当前同步到的源
+ 表示可接受的信号源,与选定的信号源组合在一起
? 指示已失去连接性或其数据包未通过所有测试的源。它也显示在启动时,直到从中至少收集了 3个样本为止
通过两台虚拟机模拟配置时间服务器
服务器端配置
#关闭防火墙
[root@localhost ~]# systemctl disable --now firewalld
#修改/etc/chrony.conf文件中allow中允许通过的用户ip
[root@localhost ~]# vim /etc/chrony.conf
#修改内容如下:
[root@localhost ~]# grep allow /etc/chrony.conf
allow 192.168.137.0/24
#重启服务
[root@localhost ~]# systemctl restart chronyd
客户端配置
#修改文件/etc/chrony.conf中的时间服务器的服务端名字
[root@localhost ~]# vim /etc/chrony.conf
#文件中的修改内容如下:
[root@localhost ~]# grep iburst /etc/chrony.conf
pool 192.168.137.129 iburst
#客户端访问,先ping时间服务器
[root@localhost ~]# ping 192.168.137.129
#重启服务
[root@localhost ~]# systemctl restart chronyd
#查看时间服务器是否能和用
[root@localhost ~]# chronyc sources
补充内容
#每周周一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 chronyc sources &> /dev/null
有关标准输入/输出:
1、标淮输出:命令正确执行后的输出
2、标准错误输出:命令执行失败后的输出
3、标淮输入:从键盘输入的叫标准输入
> 标淮输出重定向 = 1>
>> 标淮输出追加重定向
2> 标淮错误输出重定向
< 标准输入重定向
<< 标淮输入结束符
& 等同于1和2
因此:
&> /dev/null 所有重定向到该位置的数据均不会保存
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读取不到。
# nc 命令可以侦听tcp和udp的端口:
#常看udp协议端口号123(即NTP协议)的情况
[root@client ~]# nc -zv -u 192.168.230.136 123
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.230.136:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.10 seconds.
# ss -lntup --- 常看监听端口
[root@server ~]# ss -lntup
时间同步不成功:
1.网络不通(确保主机是同一种网络模式)
2.服务端必须关闭防火墙 systemctl stop firewalld
3.服务端和客户端的时区不一致
4.确认服务端和客户端的配置
配置网络服务:ntp 123/udp
服务器主机操系统后台运行一个对应的软件程序,在操作系统的后台有一个或者多个进程,基于网络等待客户端发起对应网络协议连接请求,通过软件程序进程监听的端口接受请求做出对应的响应动作。
协议:区分不同服务
端口:区分不同协议,区分不同流量
s.linux9.x --网络模式nat 192.168.10.129
# systemctl stop firewalld
1.[root@node1 ~]# rpm -qa | grep chrony
chrony-4.2-1.el9.x86_64
2.[root@node1 ~]# ps -aux | grep chrony
chrony 926 0.0 0.1 10376 2344 ? S 18:00 0:00 /usr/sbin/chronyd -F 2
3.定义服务器标准时间
[root@node1 ~]# timedatectl set-timezone Asia/Shanghai (更改当前主机时区)---同一时区下的主机可以正常同步时间
[root@node1 ~]# date 111110102023
Sat Nov 11 10:10:00 AM CST 2023
4.修改程序的配置(通过当前server主机获取标准时间)
vim /etc/chrony.conf
注释pool信息
allow 192.168.10.0/24
local stratum 10
#systemctl start(启动)|stop(停止)|restart(重启)|enable(开机自启)|disable(开机禁用)|reload(重载)|load(加载)|status(状态) 程序名
#systemctl restart chronyd.service
#测试tcp或者udp的湍口
4 nc命令
5#例如
8nc -z-v192.168.168.34 22
nc -u-zv192.168.168.34 123
c linux9.x --nat 192.168.10.130
1.[root@server ~]# rpm -qa | grep chrony
chrony-4.2-1.el9.x86_64
2.客户发起连接请求
vim /etc/chrony.conf
pool 192.168.10.129 iburst
3.发起连接
[root@server ~]# systemctl restart chronyd
[root@server ~]# date
Wed Oct 25 08:35:34 PM CST 2023
[root@server ~]# date
Wed Oct 25 08:35:35 PM CST 2023
[root@server ~]# date ---时间同步成功
Sat Nov 11 10:42:00 AM CST 2023
[root@server ~]# date
Sat Nov 11 10:42:53 AM CST 2023
[root@server ~]# ^C