Linux之chrony时间同步服务、ntp协议
chrony概述chrony是RHEL7.x上自带的时间同步开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。是一个ntp协议的实现程序,既可以当做服务端,也可以充当客户端;它专为间歇性互联网连接的系统而设计,当然也能良好应用于持久互联网连接的环境;三个时间参考:硬件时钟、实时时钟以及手动同步。组成:chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时
chrony概述
chrony是RHEL7.x上自带的时间同步开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。是一个ntp协议的实现程序,既可以当做服务端,也可以充当客户端;它专为间歇性互联网连接的系统而设计,当然也能良好应用于持久互联网连接的环境;
三个时间参考:
硬件时钟、实时时钟以及手动同步。
组成:
- chronyd
是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
- chronyc
客户端程序。
chrony配置文件参数详解
参数 参数说明
server 配置同步NTP服务器时间地址,建议配置二个以上。例:server?cn.pool.ntp.org iburst
driftfile chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。?系统默认
makestep通常, chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效。?系统默认
rtcsync rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)
hwtimestamp 在所有支持硬件的接口上启用硬件时间戳。系统默认
minsources 增加需要调整的最小可选信号源数量 系统时钟。系统默认
allow 允许指定网络的主机同步时间,不指定就是允许所有,默认不开启 例:192.168.0.0/16
local stratum 默认不开启的选项,意思是,即使服务端没有同步到精确的网络时间,也允许向客户端同步不精确的时间。可以视情况而定。系统默认
keyfile 指定包含NTP身份验证密钥的文件。?系统默认
leapsectz 从系统tz数据库中获取TAI-UTC偏移和闰秒。系统默认
logdir 指定日志文件的目录。系统默认
log 选择要记录的信息。系统默认
NTP
NTP是网络时间协议(Network Time Protocol)
三个命令可用于验证 NTP 同步情况
- ntpq:ntpq 是一个标准的 NTP 查询程序。
- ntpstat:显示网络世界同步状态。
- timedatectl:它控制 systemd 系统中的系统时间和日期。
ntpd、ntpdate的区别
ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步, 并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。
时钟的跃变,对于某些程序会导致很严重的问题。
这有几个非常明显的问题:
- 这样做不安全。
ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。
由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。
- 这样做不精确。
一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。
与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。
- 这样做不够优雅。
由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错
唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。
其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。
NTPD在和时间服务器的同步过程中,会把BIOS计时器的振荡频率偏差——或者说Local Clock的自然漂移(drift)——记录下来。
这样即使网络有问题,本机仍然能维持一个相当精确的走时。
推荐的中国NTP公共时间同步服务器
国家-中图:cn.pool.ntp.org
中国:cn.ntp.org.cn
阿里云:ntp.aliyun.com
腾讯云:time1.cloud.tencent.com
配置文件修改说明
vim /etc/chrony.conf
可以直接用以下文本覆盖配置文件内容,再根据自身实际情况进行修改
#配置同步NTP服务器时间地址,建议配置二个以上
server ntp.aliyun.com iburst
server cn.pool.ntp.org iburst
server time1.cloud.tencent.com iburst
#根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中。
driftfile /var/lib/chrony/drift
#时间纠偏
makestep 1.0 3
#rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)
rtcsync
#在所有支持硬件的接口上启用硬件时间戳。
#hwtimestamp *
#增加需要调整的最小可选信号源数量 系统时钟
#minsources 2
#允许指定网络的主机同步时间,不指定就是允许所有,默认不开启
#allow 192.168.0.0/16
#服务时间,即使未同步到任何NTP服务器也允许向客户端同步不精确的时间。
#local stratum 10
#指定包含NTP身份验证密钥的文件。
keyfile /etc/chrony.keys
#从系统tz数据库中获取TAI-UTC偏移和闰秒。
leapsectz right/UTC
#指定日志文件的目录。
logdir /var/log/chrony
#选择要记录的信息。
#log measurements statistics tracking
chrony基本操作命令
chrony操作
#停止chronyd服务
systemctl stop chronyd
#开始chronyd服务
systemctl start chronyd
#重启chronyd服务
systemctl restart chronyd
#查看chronyd服务状态
systemctl status chronyd
#开机启动chronyd服务
systemctl enable chronyd
#禁止开机启动chronyd服务
systemctl disable chronyd
#查看时间同步源,查看时间同步进度
chronyc sources –v
#查看时间同步源状态
chronyc sourcestats -v
#查看日期时间、时区及NTP状态:
timedatectl
#查看时区列表:
timedatectl list-timezones
#修改时区
timedatectl set-timezone Asia/Shanghai
#修改日期时间
timedatectl set-time “2020-03-05 12:20:00”
#开启NTP
timedatectl set-ntp true/flas
更改时区方法
一、
1、使用tzselect命令查询需要的时区
2、查看命令最后的提示,添加变量到vim /root/.bash_profile文件中
将追加TZ=‘Africa/Nairobi’; export TZ
3、重启生效
二、
使用timedatectl 命令更改时区 hostnamectl set-h
#查看当前时区信息
Timedatectl
#列出所有时区
#timedatectl list-timezones
#以RFC22格式输出日期和时间
date -R
#修改日期
timedatectl set-time 2016-04-25
#修改时间
timedatectl set-time '2016-04-26 21:53:50
’
#设置系统时区为上海
timedatectl set-timezone Asia/Shanghai
配置同步服务
服务端
首先安装程序,8的版本已经有了,安装命令如下:
[root@bogon ~]# yum install chrony
关闭防火墙、关闭selinux
[root@redhat ~]# systemctl stop firewalld
[root@redhat ~]# setenforce 0
配置配置文件
[root@redhat ~]# vim /etc/chrony.conf
注释掉#pool 2.rhel.pool.ntp.org iburst
allow 192.168.159.137 //允许指定网络的主机同步时间
local stratum 10 // 服务时间,即使未同步到任何NTP服务器也允许向客户端同步不精确的时间。
重启服务
[root@redhat ~]# systemctl restart chronyd
客户端同步
配置配置文件
[root@bogon ~]# vim /etc/chrony.conf
pool 192.168.159.128 iburst //指定服务端
同步服务端时间
[root@bogon ~]# systemctl restart chronyd
测试
[root@bogon ~]# date 082910102020.12
Sat Aug 29 10:10:12 CST 2020
[root@bogon ~]# systemctl restart chronyd
[root@bogon ~]# date
Sat Aug 29 10:10:24 CST 2020
[root@bogon ~]# date
Sat Aug 29 10:10:27 CST 2020
[root@bogon ~]# date
Mon Aug 30 21:39:02 CST 2021
更多推荐
所有评论(0)