linux——搭建NTP服务器

NTP是网络时间协议(Network Time Protocol)的缩写,是一种用于同步计算机时钟的协议。它可以通过互联网或局域网等网络传输时间信息,使得多台计算机的时钟保持同步。NTP是一种分布式的协议,它通过多个时间服务器之间的协作来提供高精度的时间同步服务。NTP协议广泛应用于计算机网络、通信系统、金融交易等领域。

1、设置服务器时区

(使用外部NTP时间源可不设置)
在Linux系统中设置时区可以使用以下命令:

  1. 查看当前时区:
timedatectl
  1. 列出所有可用时区:
timedatectl list-timezones
  1. 设置时区:
sudo timedatectl set-timezone <时区>

例如,将时区设置为北京时间:

sudo timedatectl set-timezone Asia/Shanghai

设置完成后,可以再次运行 timedatectl 命令来验证时区是否已经修改成功。

2、安装NTP服务

1、查看是否安装NTP服务:rpm -qa|grep ntp
已安装会出现相应版本信息:
已安装

2、通过yum、apt、docker等方式安装:

yum install ntp ntpdate -y

linux——搭建NTP服务器_第1张图片

在Ubuntu上可以使用 apt命令安装:

sudo apt-get install ntp

3、安装完成后检查NTP状态:

systemctl status ntpd

linux——搭建NTP服务器_第2张图片
虚拟机是早已装好NTP,所以是running状态,如果是dead状态也正常,配置完成后启动即可。

3、NTP配置文件

1、root账号,编辑ntp.conf:

vi /etc/ntp.conf 

linux——搭建NTP服务器_第3张图片
restrict添加授时服务网址、网段,即可接入NTP的地址。
server添加NTP时钟源,此处添加的阿里云的NTP服务地址。若使用本地时钟作为时间源,只须保证本地时钟源IP正确即可。
如果server中存在操作系统默认的NTP时钟源(0.centos.pool.ntp.org、0.ubuntu.pool.n等),需将其注释掉。
server IP 后可接关键字iburst、prefer、minpoll、maxpoll等:

  • iburst:表示在启动时快速同步时间。通常情况下,NTP客户端会与服务器建立连接并等待一段时间才能同步时间。但是,如果使用"iburst"关键字,客户端将在启动时发送多个NTP请求到服务器,以加快同步时间的速度。。
  • prefer:表示将此服务器设置为首选服务器,如果多个服务器都可用,则NTP客户端将优先选择被标记为"prefer"的服务器进行时间同步。
  • minpollmaxpoll:指定NTP客户端与服务器之间的轮询间隔,单位为2的幂次方秒,取值4-17,旨在防止客户端过于频繁地向服务器发送请求或者太少地发送请求,从而影响时间同步的准确性。例如,minpoll 6表示轮询间隔为2^6=64秒,maxpoll 10表示轮询间隔为2^10=1024秒。
  • iburst minpoll 4 maxpoll 4:表示在启动时快速同步时间,并且将轮询间隔设置为2^4 = 16秒。
  • prefer iburst minpoll 6 maxpoll 10:表示将此服务器设置为首选服务器,快速同步时间,并将轮询间隔设置为2^6 = 64秒到 2^10 = 1024秒之间。
  • key: 用于NTP身份验证和安全性。通过指定一个密钥编号,可以将NTP请求与特定身份进行关联,并用于检查数据的完整性和真实性。
    注意:在配置文件中,server关键字后面只能跟一个参数,如果需要指定多个参数,可以使用多行来配置。

本地时钟源的fudge(默认的,未做修改):

fudge 127.127.1.0 stratum 10 :

  • fudge 表示对该服务器进行一些特殊的配置,比如调整时钟频率等。
  • 127.127.1.0 表示使用本地的时钟作为NTP服务器,这是一种常见的配置方式。127.127.0.1是一个特殊的IP地址,它是本地回环地址,也称为环回地址。它是一个保留的IP地址,用于在本地计算机上测试网络连接和通信。当计算机尝试连接127.127.0.1时,它实际上是在尝试与自己通信。
  • stratum 10 表示该服务器的时钟层级为10,即该服务器是一个较低层级的时钟,其时间参考可能来自于其他更高层级的时钟。NTP协议中,时钟层级越低,其时间参考越不可靠。

NTP服务器时间源配置:

  1. 使用本地时钟作为时间源:这种方式适用于没有可靠的外部时间源的情况。

  2. 使用外部NTP服务器作为时间源:这种方式适用于有可靠的外部时间源的情况。在这种情况下,NTP服务器将使用外部NTP服务器作为时间源,并尝试通过与其他NTP服务器同步来保持时间的准确性。

  3. 使用GPS或其他时间源作为时间源:这种方式适用于需要高精度时间同步的情况。

无论使用哪种方式,配置时间源的步骤大致相同:

        1. 打开NTP服务器的配置文件,通常是/etc/ntp.conf。

        2. 在配置文件中添加或修改server指令,指定要使用的时间源的IP地址或域名。例如:

                server 0.cn.pool.ntp.org
                server 1.cn.pool.ntp.org
                server 2.cn.pool.ntp.org

        3. 保存配置文件并重启NTP服务器,使其开始使用新的时间源。
               systemctl restart ntpd

       需要注意的是,为了保证时间同步的准确性,建议使用多个时间源,并将它们配置为层级结构,以便在一个时间源不可用时自动切换到另一个时间源。

配置文件中设置NTP同步日志:

# Specify the log file
logfile /var/log/ntp.log

# Enable sync status, peer events, and system stats logging
logconfig =syncstatus +peerevents +sysstats

# Specify the directory for storing statistics files
statsdir /var/log/ntpstats/

“logfile”:指定NTP服务器的日志文件路径和名称。
“logconfig”:指定日志记录级别和类型。
以上配置意思是:服务器将记录同步状态、对等方事件和系统统计信息,并在每条日志消息前添加对应的命令前缀。

选择要记录的事件类型和命令前缀。
日志级别包括:
     “sysstats”:系统统计信息,例如系统启动时间、偏差值等。
     “peerstats”:与对等方之间的交互信息,例如同步状态和数据报文。
     “loopstats”:内部时钟的调整信息。
      “clockstats”:关于本地系统时钟的统计信息。
     “syncstatus”:关于同步状态的信息。
     “all”:所有日志级别。
命令前缀包括:
     “+”:启用特定的日志级别或命令前缀。
      “-”:禁用特定的日志级别或命令前缀。
      “”:显示当前设置的日志级别和命令前缀。

“statsdir”:指定存储NTP服务器统计信息的目录路径。

2、配置完成后,启动或重启NTP服务

启动:systemctl start ntpd
重启:systemctl restart ntpd  

3、设置NTP服务开机自启:

systemctl enable ntpd

4、客户端配置

1、客户端只需要先安装NTP,然后编辑 /etc/ntp.conf 文件,将搭建的NTP服务端加入server 时钟源即可。
2、设置NTP自动同步(如果在配置文件中添加了轮询间隔控制,不需要设置——参考3.1服务端配置文件,客户端不需配置restrict 地址即可

打开NTP服务启动脚本/etc/init.d/ntp,找到以下一行:

NTPDATE_BIN=/usr/sbin/ntpdate

将其改为:

NTPDATE_BIN=/usr/sbin/ntpdate -u -s

3、重启NTP服务
使用以下命令重启NTP服务:

systemctl restart ntpd 

2、使用crontab 命令设置客户端自动同步:

 (crontab -l; echo "*/60 * * * * /usr/sbin/ntpdate 1.1.1.1 >>/tmp/ntp.log")| crontab

60 (分钟)为同步时间间隔
1.1.1.1 为NTP服务器地址
/tmp/ntp.log 为同步日志

使用sudo crontab -e即可看到设置的定时同步任务命令。
注意:定时同步的时间间隔不应该设置得太短,否则可能会对NTP服务器造成过大的负担。建议时间间隔至少1分钟以上。

5、常用的NTP命令

一些常用的ntp命令:

1、ntpdate:用于手动同步系统时钟和远程时间服务器的时间。例:ntpdate time.nist.gov。
2、ntpq:用于查询NTP服务器的状态和性能。例:ntpq -p。
ntpq -p查询网络中的NTP服务器,同时显示客户端和每个服务器的关系。

参数 含义 备注
remote 远程NTP服务器的IP地址或域名,带 “*” 的表示本地NTP服务器与该服务器同步 “*” – 当前作为优先主同步对象的远程节点或服务器
“+” – 良好的且优先使用的远程节点或服务器(包含在组合算法中)
“x” – 已不再使用
refid NTP服务器使用的更高一级服务器的名称
st 正在响应请求的NTP服务器的级别
when 上一次成功请求之后到现在的秒数
poll 地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小
reach 是一种衡量前8次查询是否成功的位掩码值,用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加 [1,3,7,17,37,77,177,377]一个0值表示服务器不能访问,377表示所有最近的查询都是成功
delay 从本地机发送同步要求到ntp服务器的往返时间 单位:微秒
offset 主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近 单位:毫秒
jitter 查询偏差的分布值,用于表示远程NTP服务器的网络延时是否稳定。简单地说这个数值的绝对值越小,主机的时间就越精确 单位:微秒
  1. ntpstat:用于显示系统时钟和NTP服务器之间的时间差。例:ntpstat。
  2. ntpdc:用于与NTP服务器进行交互和调试。例:ntpdc -c loopinfo。
  3. ntptrace:用于跟踪NTP服务器之间的路径。例:ntptrace time.nist.gov。
  4. ntp-wait:用于等待NTP服务器同步。例:ntp-wait -v。

你可能感兴趣的:(Linux,#,Linux操作系统,linux,服务器,运维)