MENU

Ubuntu18.04上安装NTP服务器和客户端

August 18, 2021 • Read: 153 • 默认分类

网络时间协议 ,通常称为NTP ,是一种负责同步网络中系统时钟的协议。 NTP指的是协议和客户端系统以及驻留在联网系统上的服务器程序。
本文实现以下目标:

  • 在Ubuntu 18.04服务器上安装和配置NTP服务器。
  • 在Ubuntu 18.04客户端计算机上安装NTP客户端,并确保它由服务器同步。

在Ubuntu 18.04服务器上安装和配置NTP服务器

下面是安装NTP服务器并进行必要修改以在网络中实现所需时间同步的分步过程。

第1步:更新系统存储库

首先,让我们从更新系统包开始:

apt update -y    //更新Ubuntu系统

第2步:在Ubuntu 18.04上安装NTP服务器

在已安装系统软件包的情况下,通过运行在Ubuntu 18.04 LTS上安装NTP协议。

apt install ntp //出现提示时,键入y并按Enter以完成安装过程。

第3步:在Ubuntu 18.04上配置NTP服务器池

默认情况下, NTP协议附带已在其配置文件中配置的默认NTP池服务器

vim /etc/ntp.conf
pool 0.ubuntu.pool.ntp.org iburst    //默认NTP服务器池
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

这些通常一样好。 但是,您可以考虑更改为距离您所在位置最近的NTP服务器池 。 下面的链接会将您引导至一个页面,您可以在其中选择最喜欢的NTP池列表。

https://www.ntppool.org/    //使用Europe/United Kingdom地区,可以发现有这么几个。

要替换默认的NTP池服务器 ,请使用您文本编辑器打开NTP配置文件。

vim /etc/ntp.conf
server 0.uk.pool.ntp.org 
server 1.uk.pool.ntp.org 
server 2.uk.pool.ntp.org 
server 3.uk.pool.ntp.org
要使更改生效,请重新启动NTP服务并使用命令验证其状态。
systemctl restart ntp 
systemctl status ntp    //验证NTP状态
查看ntp运行状态
命令:ntpq -p
ntp参数含义
remote    :    本地机器所连接的远程NTP服务器 
refid    :    指的是参考的上一层NTP主机的地址 
st    :    远程服务器的级别。
由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端.
所以服务器从高到低级别可以设定为1-16.为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的 
when    :    用做计时,用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步 
poll    :    本地主机和远程服务器多少时间进行一次同步(单位为秒) 
reach    :    这是一个八进制值,表示已经向上层NTP服务器要求更新的次数。每成功连接一次,它的值就加1 
delay    :    网络传输过程中延迟的时间,单位为微秒 
offset    :    我们本地机和服务器之间的时间差别。单位为毫秒 
jitter    :    Linux系统时间与BIOS硬件时间的差异时间,单位为微秒
服务器状态参数
*    :    它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供 
+    :    它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务.当*号服务器不可用时它就可以接管 
-    :    远程服务器被clustering algorithm认为是不合格的NTP Server 
x    :    远程服务器不可用

NTP安全设置

运行一个NTP Server不需要占用很多的系统资源,
所以也不用专门配置独立的服务器,就可以给很多client提供时间同步服务,
但是一些基本的安全设置还是很有必要的,提供一种思路:
只允许局域网内一部分的用户连接到我们的服务器
这些client不能修改我们服务器上的时间

安全设置:

在/etc/ntp.conf文件中我们可以用restrict关键字来配置上面的要求 :
[restrict]参数设定方式: restrict [your ip] mask [netmask_ip] [parameter] 
其中parameter的参数主要有: 
ignore    :    拒绝所有类型的ntp连接 
nomodify    :    客户端不能使用ntpc与ntpq两支程式来修改服务器的时间参数 
noquery    :    客户端不能使用ntpq、ntpc等指令来查询服务器时间,等于不提供ntp的网络校时 
notrap    :    不提供trap这个远程时间登录的功能 
notrust    :    拒绝没有认证的客户端 
nopeer    :    不与其他同一层的ntp服务器进行时间同步
参考配置
对于默认的client拒绝所有的操作  
restrict default kod nomodify notrap nopeer noquery
然后允许本机地址一切的操作  
restrict 127.0.0.1
最后允许局域网内指定的client连接到这台服务器同步时间,但是拒绝他们修改服务器时间  
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap

如果启用了UFW防火墙 ,我们需要在其上允许NTP服务,以便客户端计算机可以访问NTP服务器。

ufw allow ntp OR ufw allow 123/udp    //要实施更改,请如图所示重新加载防火墙。
ufw reload    //要验证所做的更改,请执行命令。
ufw status    //验证UFW防火墙上的NTP访问权限

我们已经在Ubuntu 18.04 LTS系统上成功设置了NTP服务器。 现在让我们在客户端系统上设置NTP 。

在Ubuntu 18.04客户端上安装和配置NTP客户端

在本节中,我们将在Ubuntu 18.04客户端系统上安装和配置NTP客户端,以便由Ubuntu 18.04 NTP服务器系统进行同步。

第1步:更新系统存储库

首先,通过运行更新系统。

apt update -y    //更新NTP客户端计算机

第2步:在Ubuntu 18.04上安装Ntpdate

ntpdate是一个实用程序/程序,可以通过查询NTP服务器快速允许系统同步时间和日期。
apt install ntpdate    //在Ubuntu Client上安装ntpdate

要使客户端系统按主机名解析NTP服务器,需要在/ etc / hosts文件中添加NTP服务器的IP地址和主机名。

vim /etc/hosts
10.0.16.101    BMCJ16101    //添加IP地址和主机名

第3步:验证客户端与NTP服务器的时间同步

要手动检查客户端系统是否与NTP服务器的时间同步,请运行该命令。

ntpdate -u BMCJ16101    //将显示NTP服务器和客户端系统之间的时间偏移
timedatectl set-ntp off    //要将客户端时间与NTP服务器同步,需要关闭客户端系统上的timesynchd服务。
vi /etc/ntp.conf    //禁止pool的公网调用

第4步:在Ubuntu 18.04上安装NTP客户端

接下来,您需要在客户端系统上安装NTP服务。 要实现此目的,请发出命令。

apt install ntp
出现提示时按Y 键 ,然后按Enter键继续安装过程。

第5步:在Ubuntu 18.04上配置NTP客户端

此步骤的目标是使用先前配置的NTP服务器充当我们的NTP服务器。 为此,我们需要编辑/etc/ntp.conf文件。

vim /etc/ntp.conf
在下面的行中添加bionic是NTP服务器的主机名。
server BMCJ16101 prefer iburst
or
echo server BMCJ16101 prefer iburst >> /etc/ntp.conf
要使更改生效,请重新启动NTP服务
systemctl restart ntp
systemctl enable ntp.service

第6步:验证NTP时间同步队列

通过客户端和NTP服务器不同步,您可以通过执行命令来查看同步详细信息。

ntpq -p    //查看与上层ntp服务器的状态
显示状态的意思是:
remote: 连接的远程NTP服务器; 
refid: 提供时间同步的服务器IP; 
st: 远程服务器的层级别(stratum)。
由于NTP是层型结构,有顶端的服务器、多层的Relay服务器、再到客户端。
所以服务器级别从高到低可以设定为1-16。为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器; 
when: 几秒钟前曾经做过时间同步更新的动作; 
poll: 本地主机和远程服务器多少时间进行一次同步(单位:s); 
reach: 已经向上层NTP服务器要求更新的次数; 
delay: 网络传输过程当中延迟的时间(单位:10^(-6)s,微秒); 
offset: 时间补偿的结果(单位与:10^(-3)s,毫秒); 
jitter: Linux系统时间与BIOS硬件时间的差值(单位:10^(-6)s,微秒)。其绝对值越小,主机和对时服务器的时间就越接近; 
*: 远端的服务器已经被确认为主NTP Server,系统时间将由这台机器所提供; 
+: 作为辅助的NTP Server,与带有*号的服务器一起为我们提供同步服务. 当```*```号服务器不可用时,它就可以接管;
-: 远程服务器被clustering algorithm认为是不合格的NTP Server; 
x: 远程服务器不可用;

此时,您已在Ubuntu 18.04 LTS上成功配置了NTP服务器 ,并将客户端系统配置为与NTP服务器同步。

ntpdate和ntpd的区别

ntpd不仅仅是时间同步服务器,他还可以做客户端与标准服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中应慎用ntpdate。
由于ntpdate是立即同步,在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,就会产生时钟的跃变。
用ntpdate调整时间的方式,会有几个非常明显的问题:

  • 这样做不安全。
  • 这样做不够精确
  • 这样做不够优雅
- - - The END - - -
  • 文章作者:谭先生
  • 版权所有:文章转载时,注明出处即可!
  • 本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!
  • Archives QR Code Tip
    QR Code for this page
    Tipping QR Code
    阅读:153