NTP服务器

news/2025/3/21 23:49:11/

文章目录

  • NTP服务器
    • NTP服务器的安装与配置
      • 所需软件与软件结构
      • 主要配置文件ntp.conf的处理
        • 利用restrict来管理权限控制
        • 利用server设置上层NTP服务器
        • 以driftfile记录时间差异
      • NTP的启动与观察
    • 客户端的时间更新方式
      • Linux手动校时:date、hwclock
      • Linux的网络校时

NTP服务器

NTP(Network Time Protocol)是一种用于在计算机网络中同步各个节点时间的协议。NTP服务器是运行NTP协议的服务器,用于向客户端提供时间同步服务。

Linux操作系统计时方式主要是从 1970年1月1日开始计算总秒数的,因此,如果还记得date目录的话,会发现它有个+%s的参数,可以取得总秒数,这个就是软件时钟。但是,如同前面说的,计算机硬件主要是以BIOS内部的实际为主要的时间依据(硬件时钟),而偏偏这个时间可能因为BIOS内部的本身问题,而导致BIOS时间与标准时间(UTC)存在有一点点差异。所以,为了避免主机时间因为长期运行而导致时间偏差,进行时间同步的工作就显得很重要了

  • 软件时钟:有Linux操作系统过根据1970/01/01开始计算的总秒数
  • 硬件时钟:主机硬件系统上面的时钟,例如BIOS记录的时间

那么怎么让时间同步化呢?如果我们选择几部主要主机调校时间,让这些主要的主机时间同步之后,再开网络服务让Client端连接,并且允许Client端调制自己的时间,就可以实现全部计算机的时间同步了。NTP就可以实现这些功能。NTP是如何让Server与Client同步时间的呢?

(1)首先,主机当然需要启动这个daemon

(2)之后,Client会向NTP Server发送出校对时间的 message

(3)然后 NTP Server 会送出当前的标准时间给Client

(4)Client 接收了来自 Server 的时间后,会据以调整自己的时间,这样就实现了网络校时

NTP服务器的安装与配置

NTP服务器是一种很容易安装的软件,但在不同的操作系统上可能有不同的名称。你只需要安装它并定义一个上层NTP服务器来同步你的时间就可以了。如果你只想同步你自己电脑的时间,不需要架设NTP服务器,直接使用NTP客户端软件即可。

所需软件与软件结构

若没有安装NTP服务,可以通过 yum install -y ntp 安装即可,不过还需要与时区相关的数据文件,所以需要下面的软件

  • ntp:就是NTP服务器的主要软件,包括配置文件以及可执行文件等

与时间及NTP服务器设置相关的配置文件与重要数据文件有下面几个

  • /etc/ntp.conf:就是NTP服务器的主要配置文件,也是唯一的一个
  • /usr/share/zoneinfo/:为各时区的时间格式对应文件。例如我国的时区格式对应文件是/usr/share/zoneinfo/Asia/Shanghai。
  • /etc/localtime:就是本地端的时间配置文件。

常用时间服务器与修改时间命令,主要有下面这几个

/bin/date:用于Linux时间(软件时钟)的修改与显示的命令

/sbin/hwclock:用于BIOS时钟(硬件时钟)的修改与显示的命令

/usr/sbin/ntpd:主要提供NTP服务的程序。配置文件为:/etc/ntp.conf

/usr/sbin/ntpdate:用于客户端的时间校正,如果不要启用NTP而仅想要使用NTP Client功能的化,那么会用到这个命令。

主要配置文件ntp.conf的处理

利用restrict来管理权限控制

在ntp.conf 文件内可以利用 restrict 来控制权限,这个参数的设置方式为

restrict [你的IP] mask  [netmask_IP] [parameter]

其中parameter的参数主要有以下这些

  • ignore:拒绝所有类型的NTP连接
  • nomodify:客户端不能使用ntpc与ntpq这两个程序来修改服务器的时间参数,但客户端仍通过这部主机来进行网络校时。
  • noquery:客户端不能够使用ntpq、ntpc等命令来查询时间服务器,等于不提供NTP的网络校时
  • notrap:不提供trap这个远程事件登录的功能
  • notrust:拒绝没有认证的客户端

如果没有在parameter的地方加上任何参数的话,这表示"该IP或网段不受任何限制"的意思。

利用server设置上层NTP服务器

上层NTP服务器设置方式为:

server [IP or hostname] [prefer]# server后端可以接IP或主机名,一般来说设置IP
# perfer表示优先使用的服务器

以driftfile记录时间差异

设置的方式如下:

driftfile [可以被 ntpd 写入的目录与文件]
  • driftfile 后面接的文件需要使用完整路径文件名
  • 该文件不能是连接文件
  • 该文件需要设置成ntpd这个daemon可以写入的权限
  • 该文件所记录的数值单位为百万分之一秒

driftfile后面接的文件会被ntpd自动更新,所以它的权限一定要能够让ntpd写入才行

根据上面的说明我们最终可以取得这样的配置文件内容

[root@ntp-server ~]# cat /etc/ntp.conf 
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).driftfile /var/lib/ntp/drift  <==默认时间差异分析文件,不用改变他# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
# restrict default nomodify notrap nopeer noquery
restrict 192.168.200.0 mask 255.255.255.0 nomodify    <== 放行局域网来源
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
# 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
server ntp.aliyun.com prefer   <== ntp主机来源,阿里云的NTP服务器.....(省略下面的内容).....

NTP的启动与观察

设置完ntp.conf 之后就可以启动 NTP服务器了。启动与查看的方式如下

  1. 启动NTP
[root@ntp-server ~]# systemctl start ntpd
[root@ntp-server ~]# systemctl enable ntpd
  1. 查看启动的端口
[root@ntp-server ~]# netstat -tulnp |grep ntp
udp        0      0 192.168.200.40:123      0.0.0.0:*                           43270/ntpd          
udp        0      0 127.0.0.1:123           0.0.0.0:*                           43270/ntpd          
udp        0      0 0.0.0.0:123             0.0.0.0:*                           43270/ntpd          
udp6       0      0 fe80::433b:8c3e:d01:123 :::*                                43270/ntpd          
udp6       0      0 ::1:123                 :::*                                43270/ntpd          
udp6       0      0 :::123                  :::*                                43270/ntpd
# 主要是 UDP数据包,且在port 123 这个端口

这就表示NTP服务器已经启动了,不过要与上层NTP服务器连接则还需要一些时间,通常启动NTP后约3-4分钟才会和NTP服务器顺利连接上。那要如何确认NTP服务器已经顺利连接呢?

[root@ntp-server ~]# ntpstat 
synchronised to NTP server (203.107.6.88) at stratum 3time correct to within 474 mspolling server every 64 s
# 这个命令可以列出我们NTP服务器是否已经与上层连接
# 由上述输出结果可以知道 时间已经校正约 474ms  且每隔 64秒会主动去更新时间
[root@ntp-server ~]# ntpq -premote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*203.107.6.88    100.107.25.114   2 u   34   64  377   28.679   18.169   7.925

这个ntpq -p 命令可以列出当前我们NTP与相关上层NTP的状态

上面几个字段意义如下

  • remote:也就是NTP主机的IP或主机名
    • 如果有" * "代表目前正在作用当中的上层NTP
    • 如果是" + "代表以及连接成功,而且可作为下一个提供时间更新的候选者
  • refid:参考上一层NTP主机的地址
  • st:就是stratum 阶层
  • when:几秒钟前曾经做过时间同步化更新的操作
  • poll:下一次更新在几秒钟后
  • reach:已经向上层NTP服务器要求更新的次数
  • delay:网络传输过程中延迟的时间
  • offset:时间补偿的结果
  • jitter:Linux系统时间与BIOS硬件时间的差异时间
[root@ntp-server ~]# firewall-cmd --add-service=ntp --permanent
success
[root@ntp-server ~]# firewall-cmd --reload
success

客户端的时间更新方式

Linux手动校时:date、hwclock

在软件时钟方面,可以通过 date这个命令来进行手动修改,如果修改BIOS记录的时间,就要使用hwclock这个命令来写入才行

修改时间为1小时后

[root@ntp-client ~]# date -s "2023-06-19 14:15"
2023年 06月 19日 星期一 14:15:00 CST
hwclock [-rw]
选项:
-r:就是read,读出目前BIOS内的时间参数
-w:也就是write,将目前的系统时间写入 BIOS中

查阅BIOS时间,并写入更改过的时间

[root@ntp-client ~]# date; hwclock -r
2023年 06月 19日 星期一 14:15:10 CST
2023年06月19日 星期一 13时15分42秒  -0.115410 秒
# 刚刚相差1个小时,就是BIOS时间[root@ntp-client ~]# hwclock -w;hwclock -r;date
2023年06月19日 星期一 14时18分19秒  -0.423185 秒
2023年 06月 19日 星期一 14:18:18 CST
# 这样就写入了,软件时钟和硬件时钟就同步了

Linux的网络校时

在Linux环境中利用NTP的客户端程序,即ntpdate这个程序就能够进行时间同步。不过需要注意的是,因为NTP服务器本来就会与上层时间服务器进行实际的同步化,所以默认的情况下,NTP服务器不可以使用ntpdate,也就是说ntpdate与ntpd不可同时启用,所以不要在NTP Server执行这条命令

ntpdate [-dv] [NTP IP/hostname]
选项:
-d:进入排错模式,可以显示出更对的有效信息
-v:显示更详细的信息[root@ntp-client ~]# ntpdate 192.168.200.40
19 Jun 13:43:15 ntpdate[118643]: step time server 192.168.200.40 offset 66987584.766316 sec
# 最后面会显示微调的时间有多少
# 使用hwclock同步BIOS时间
[root@ntp-client ~]# date;hwclock -w
2023年 06月 19日 星期一 13:45:01 CST[root@ntp-client ~]# vi /etc/crontab
# 加入这一行*/60  *  *  *  * root  (/usr/sbin/ntpdate 192.168.200.40 && /sbin/hwclock -w)  >> /tmp/localntp.log

使用crontab之后,每60分钟Linux系统就会自动进行校时了。不过这种方式仅适合不启动NTP的情况。

如果机器数量很多,那么客户端也最好启动一下NTP服务器,通过NTP去主动地更新时间

[root@ntp-client ~]# ntpdate 192.168.200.40
# 由于ntpd的Server/Client 之间的时间误差不允许超过 1000 秒
# 因此需要先手动进行时间同步,然后再设置与启动时间服务器
[root@ntp-client ~]# vi /etc/ntp.conf 
#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
server 192.168.200.40
# 就是将原本的Server注释掉,加入我们要的服务器即可[root@ntp-client ~]# systemctl start ntpd
[root@ntp-client ~]# systemctl enable ntpd
[root@ntp-client ~]# ntpstat 
synchronised to NTP server (192.168.200.40) at stratum 4time correct to within 1043 mspolling server every 64 s
[root@ntp-client ~]# ntpq -premote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.200.40  203.107.6.88     3 u   28   64   17    0.974    0.336   0.059

然后取消掉crontab的更新程序,这样Client 计算机会主动到NTP服务器上去更新了。


http://www.ppmy.cn/news/468465.html

相关文章

亿发软件:智慧中医馆一体化系统解决方案,实现中医药煎配信息化

近年来&#xff0c;随着中药制造领域先进技术的大力推广和应用&#xff0c;先进制造技术的融合对关键工艺和装备进行了革新。传感器、过程检测技术、自动化设备和信息管理系统的采用显著提高了中药汤剂的生产。下面我们来探讨一下中药煎配信息化管理系统&#xff1a;中药生产过…

【云原生】· 一文了解docker中的网络

目录 &#x1f352;查看docker网络 &#x1f352;bridge网络 &#x1f352;none网络 &#x1f352;host网络 &#x1f352;自定义容器网络 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;云原生专栏 根据前面的学习&#xff0c;已经对d…

固态硬盘的PCIE,SATA,M2,NVMe,AHCI

[转自 https://baijiahao.baidu.com/s?id=1616207956596122967&wfr=spider&for=pc] 提纲 区别 M2和SATASATA和PCIENVME和AHCINVME介绍NVMe的由来NVME的优势区别 固态硬盘近年来也是随着计算机的发展而得到了迅速的发展,目前已经隐隐有要取代机械硬盘的势头,只要成本…

未来计算机存储器 云,未来数据储存技术与硬盘的发展论文

未来数据储存技术与硬盘的发展论文 摘 要&#xff1a;在过去的大半个世纪里&#xff0c;信息储存一直都是利用的磁技术&#xff0c;小型方便是数据储存和计算机硬盘的特点&#xff0c;并且发展迅速。如今正在被研究的利用热辅助技术和图形媒介技术将会让数据储存技术攀上一个新…

云服务器选ssd还是hdd_服务器租用主机硬盘使用机械硬盘还是固态硬盘

服务器租用主机硬盘使用机械硬盘还是固态硬盘 服务器租用用户在选择主机的时候往往将硬盘的性能放在第一位考虑。而机械硬盘以及固态硬盘 是用户最纠结的地方。那么应该怎么选呢&#xff1f; 一、 HDD 机械硬盘和 SSD 固态硬盘之间有什么区别&#xff1f; 无论您是购买新笔记本…

linux把分区搞成了raw,硬盘分区突然变RAW?手把手教你如何自救

不少用户在电脑的使用过程中都遇到过存储设备文件格式突然变为RAW,出现盘符丢失、查看不了任何内容的情况。都说设备有价数据无价,怎能让莫名巧妙的错误毁了我们的数据?本文就存储设备分区突变RAW这个问题提供了一些切实可行的解决方法,希望能帮助你保护数据。 其实就重要数…

SSD 与 HDD 哪个最适合工业主板?

市场上提供了多种类型和配置的二级存储&#xff0c;可能会让你对选择哪一种来满足你的需求感到困惑。最常见的问题是SSD和HDD存储的区别&#xff0c;哪一个是你电脑二级存储的最佳选择。本文朗小锐将为你提供全面的见解&#xff0c;比较SSD和HDD之间的差异&#xff0c;以帮助你…

计算机硬盘能否做u盘用怎么用,U盘能当电脑硬盘用么

看到这个标题的时候&#xff0c;你是不是也有点懵&#xff1f;是的&#xff0c;当我被问到这个问题的时候&#xff0c;我也是有点懵懵的。既然有人问这个问题&#xff0c;我们就一起探讨一下&#xff0c;U盘到底能不能插在电脑上当作硬盘使用&#xff01; 我的回答&#xff1a;…