近期遇到一个因服务器时间偏差太大导致服务异常的应用,所以需要盘查所有服务的NTP,没有的要加上NTP。整理下windows下和linux下的ntp地址查看方法,windows的很简单,linux的下的有点复杂,检查项较多。
一、windows系统检查NTP
使用命令w32tm /query /status
如果没有配置,使用下面的命令修改下注册表就好了,在框出的地方输入NTP服务的地址。
二、linux系统检查NTP
在linux中时间同步服务有NTP和chrony两个协议。
在linux中有且只能使用这两个中的一个时间同步服务(NTP和chrony),ntp采用123/UDP端口通信,chrony采用323/UDP端口通信。Chrony与ntpd不同,它可以更快且更准确地同步系统时钟,最大程度的减少时间和频率误差。
查看服务器使用的是哪个服务器
查看ntp服务器状态:systemctl status ntpd
查看chrony服务器状态: systemctl status chronyd
一台服务器既可以是chrony的服务端,也可以是chrony的客户端,且都是用UDP的323端口。
Chrony配置:
/etc/chrony.conf
server - 可用于时钟服务器,iburst 选项当服务器可达时,发送八个数据包而不是通常的一个数据包。包间隔通常为2秒,可加快初始同步速度driftfile - chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。rtcsync - 启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)allow/deny - 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。cmdallow / cmddeny - 跟上面相类似,只是你可以指定哪个IP地址或哪台主机可以通过chronyd使用控制命令bindcmdaddress - 该指令允许你限制chronyd监听哪个网络接口的命令包(由chronyc执行)。该指令通过cmddeny机制提供了一个除上述限制以外可用的额外的访问控制等级makestep - 通常,chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效local stratum 10 - 当server中提供的公网NTP服务器不可用时,采用本地时间作为同步标准keyfile - 指定包含NTP验证密钥的文件logdir - 指定日志文件的目录
chronyd服务管理
systemctl start chronyd.service#启动systemctl status chronyd.service#查看systemctl restart chronyd.service #重启systemctl stop chronyd.service#停止
systemctl enable chronyd.service #设置开机启动
使用chronycchronyc命令有两种模式,一种是交互式模式,一种是命令行模式。输入chronyc回车就进入交互式模式,进入交互式模式可以使用help命令查看帮助列表常用指令说明:
accheck - 检查NTP访问是否对特定主机可用
activity - 该命令会显示有多少NTP源在线/离线
add server - 手动添加一台新的NTP服务器。
clients - 在客户端报告已访问到服务器
delete - 手动移除NTP服务器或对等服务器
settime - 手动设置守护进程时间
tracking - 显示系统时间信息
chronyc sources -v命令显示chronyd当前访问的时间源信息。
只需要关注最后一个参数Last sample,表示上次测量时本地时钟与信号源之间的偏移量。
详细参数介绍
M | 表示信号源的模式。^表示服务器,=表示对等机,#表示本地连接的参考时钟 |
S | 这一栏表示时间源的状态: * 表示当前选择用于同步的最佳信号源。 + 表示选择用于同步的其他信号源,这些信号源与最佳信号源组合在一起。 - 表示可选择进行同步的信号源,但当前未选择。(被合并算法排除的可接受信号源) ?表示已失去连接或数据包未通过所有测试的信号源。它也会在启动时显示,直到从中收集了至少 3 个样本。 x 表示chronyd认为是虚假的时钟(即其时间与大多数其他信号源的时间不一致)。 ~ 表示时间变化似乎太大的时间源。 |
Name/IP address | 这显示了源的名称或IP地址,或参考时钟的参考ID。 |
Stratum | 显示信号源的层,如最近接收的样本所报告。层 1 表示具有本地连接参考时钟的计算机。与第 1 层计算机同步的计算机位于第 2 层。与第 2 层计算机同步的计算机位于第 3 层,依此类推。 |
Poll | 显示信号源的轮询速率,以秒为单位,是间隔时间的 2 阶对数。因此,数值为 6 表示每 64 秒进行一次测量。Chronyd会根据当前条件自动改变轮询速率。 |
Reach | 显示以八进制数字打印的信号源可达性寄存器。寄存器有 8 位,每收到或错过一个数据包就更新一次。值为 377 表示收到了最近八次传输的所有有效回复。 |
LastRx | 显示从信号源接收上一个良好采样(显示在下一列)的时间。未通过某些测试的测量值将被忽略。通常以秒为单位。字母m、h、d或y表示分钟、小时、天或年。 |
Last sample | 本栏显示上次测量时本地时钟与信号源之间的偏移量。方括号中的数字表示实际测量的偏移量。后缀可以是ns(纳秒)、us(微秒)、ms(毫秒)或s(秒)。方括号左侧的数字表示原始测量值,已根据本地时钟的回转进行了调整。+/-指示器后面的数字表示测量的误差范围。正偏移表示本地时钟领先于源时钟。 |
补充:并不是所有系统都会自带ntp或chrony,即使我们在安装时候填写了NTP的服务器地址,并不一定代表有NTP服务器,需要进系统查看是否有安装。
Oracle linux9.5默认不带ntp和chrony(需要自行安装)。
Oracle linux9.5默认chrony,但不会启动。
Centos没有ntp和chrony(需要自行安装)。