Ubuntu20.04部署ntp服务

1.前期准备


系统版本

ip地址

Ubuntu20.04镜像

服务端

Ubuntu20.04

10.1.0.55

ubuntu-20.04.5-live-server-amd64

客户端

Ubuntu20.04

10.1.0.56

ubuntu-20.04.5-live-server-amd64

  • ntp服务安装包:

ntp_4.2.8p12+dfsg-3ubuntu4.20.04.1_amd64.deb

  • ntpdate安装包:

ntpdate_4.2.8p12+dfsg-3ubuntu4.20.04.1_amd64.deb

  • Ubuntu下载地址:

https://ubuntu.com/download/server

  • ntp安装包下载地址:

https://packages.ubuntu.com/focal/amd64/ntp/download

  • ntpdate安装包下载地址:

https://packages.ubuntu.com/focal/amd64/ntpdate/download

1.1修改时区

  • 查看服务器时区,执行如下命令:

timedatectl

  • 修改时区,执行如下命令:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  • 查看时区是否修改成功,执行如下命令:

date

1.2关闭systemd-timesyncd

如果不关闭systemd-timesyncd服务可能会在安装ntp服务的时候发生冲突

  • 停止systemd-timesyncd服务

systemctl stop systemd-timesyncd.service

  • 防止systemd-timesyncd服务开机自启

systemctl disable systemd-timesyncd.service

2.NTP部署


2.1服务端部署NTP服务

2.1.1上传安装包

将安装包上传至 /var/cache/apt/archives目录下

  • 获取最新软件包源,执行如下命令:

apt-get update

  • 安装ntp服务,执行如下命令:

apt-get install -y ntp

  • 安装ntpdate,执行如下命令:

apt-get install -y ntpdate

2.1.2修改ntp服务配置文件

执行如下命令:

vim /etc/ntpconf

按i键进入编辑模式,进行修改文件。

  • 服务端修改配置文件内容如下:

driftfile /var/lib/ntp/ntp.drift

restrict default nomodify notrap nopeer noquery

restrict 127.0.0.1

restrict ::1

#限制只允许10.1.0.0网段的主机访问本服务器

restrict 10.1.0.0 mask 255.255.255.0 nomodify notrap

#能联网的情况下设置上层服务器

server cn.pool.ntp.org prefer

#不能联网情况下的设置

#server 127.127.1.0

#当没有时间同步源的时候会以自身硬件时间为准

fudge 127.127.1.0 stratum 10

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

disable monitor

注意

driftfile:用来规定服务器与上层时间服务器沟通时所花费的时间,并记录在文件中。

server:设置上层时间服务器,语法为:server ip|域名。server后面接的就是上层的时间服务器,如果server参数后面加prefer,表示我们的ntp服务主要以该上层主机进行时间校对。

restrict:进行权限设定。

  1. ignore:关闭所有的NTP 连线服务

  1. nomodify:客户端不能更改服务端的时间参数,不过客户端仍然可以透过服务端來进行网络较时

  1. noquery:不提供客户端的时间查询

  1. notrap: 不提供trap远程登录功能,trap服务是一种远程时间日志服务

  1. nopeer: 提供时间服务,但不作为对等体。

  1. kod: 向不安全的访问者发送Kiss-Of-Death报文

2.2放开防火墙

如果有防火墙设置,必须设置防火墙放开对ntp的限制

  • 查看防火强端口启用状态,命令如下:

ufw status #active是已启动,inactive是未启动

  • 放开ntp,命令如下:

ufw ntp

  • 重启防火墙,命令如下:

ufw reload

2.3查看NTP服务

通过运行 "ntpq -p" 命令,可以快速查看当前系统与远程 NTP 服务器之间的时间同步情况,以及远程 NTP 服务器的健康状况。

以下是每列数据的含义:

  • remote:远程服务器的地址或DNS名称。

  • refid:远程服务器所同步的参考服务器。

  • st:远程服务器的层次(stratum),即该服务器与官方时间源的距离。

  • t:表示远程服务器所需的时间以及该时间的偏移量(时间戳)。

  • when:表示最后一次收到远程服务器时间戳的时间。

  • poll:表示与远程服务器同步的时间间隔。

  • reach:表示在最近的8个时间间隔中与远程服务器通信的情况。

  • delay:表示往返时间(Round-trip time,RTT),即从本地计算机发送请求到远程服务器并返回请求的时间。

  • offset:表示远程服务器时间戳与本地计算机时间戳之间的差异。

  • jitter:表示与远程服务器同步的偏差的变化率。

第一列的符号代表服务器状态参数:

  • * : 表示的是该服务器已经被确认为我们的主NTP服务器,系统的时间将由这台机器所提供。

  • + : 表示的是该服务器将作为辅助的NTP服务器和带有*号的服务器⼀起为我们提供同步服务.当带有*号的服务器不可用时它就可以提供时间。

  • -: 不合格的NTP服务器。

  • x : 远程服务器不可用。

2.4使用ntpdate更新时间

ntp服务是一点一点的自动时间同步,比较柔和,同步时间较慢,具有高精度和高可靠性。

ntpdate是一个命令行实用程序,用于手动同步系统时间。它从指定的时间服务器获取时间信息,并将系统时间设置为与服务器时间同步。ntpdate通常是作为ntp客户端的一部分安装的,但它不能像ntp那样自动同步时间,并且可能存在时间同步错误的情况。

这里使用ntpdate主要是节省时间,执行情况如下:

  • 执行ntpdate命令需要停止ntp服务,命令如下:

systemctl stop ntp

  • 手动同步时间,命令如下:

服务端:

ntpdate cn.pool.ntp.org

客户端:

ntpdate 10.1.0.55 #客户端在手动同步时间时 ntpdate后接服务端ip地址

  • 系统时间同步后需要将系统时间写入硬件中,命令如下:

hwclock -w

  • 重启NTP服务器,命令如下:

systemctl restart ntp

  • 设置NTP服务自启

ssystemctl enable ntp

2.5制作离线包(只在服务端操作)

  • 跳转到/opt目录下

cd /opt

  • 创建目录ntp

mkdir ntp

  • 进入ntp目录

cd ntp

  • 列出ntp软件包所依赖的其他软件包和依赖关系链的层次结构

apt-cache depends coturn

  • 将安装包和依赖下载搭配ntp目录中

apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends ntp:amd64 | grep -v i386 | grep "^\w")

  • 创建Debian软件包索引文件

dpkg-scanpackages . | gzip -9c > Packages.gz

  • 压缩文件软件包和依赖

tar -zcf packages.tar.gz ./*

packages.tar.gz就是制作好的离线包

2.6客户端部署ntp服务

上传之前制作的离线包packages.tar.gz 到/opt目录下

  • 创建离线文件存放目录

mkdir -p /offline/packages

  • 解压离线包文件

tar -zxvf packages.tar.gz -C /offline/packages/

  • 备份apt-get源文件

mv /etc/apt/sources.list /etc/apt/sources.list.bak

  • 映射本地源

cat >>/etc/apt/sources.list <<EOF

deb [trusted=yes] file:///offline/packages/ ./

EOF

  • 更新源

apt-get update

  • 安装ntp服务和ntpdate

apt-get install -y ntp

apt-get install -y ntpdate

  • 修改客户端ntp服务配置文件:

执行如下命令:

vim /etc/ntpconf

按i键进入编辑模式,进行修改文件。

driftfile /var/lib/ntp/ntp.drift

restrict default nomodify notrap nopeer noquery

restrict 127.0.0.1

restrict ::1

#限制只允许10.1.0.0网段的主机访问本服务器

restrict 10.1.0.0 mask 255.255.255.0 nomodify notrap

#设置上层服务器

server 10.1.0.55

#当没有时间同步源的时候会以自身硬件时间为准

server 127.127.1.0

fudge 127.127.1.0 stratum 10

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

disable monitor

注意:客户端配置ntp服务其它的操作和服务端一致

FQA


1.执行ntpdate手动同步时间时出现错误


在Ubuntu系统下出现 "the NTP socket is in use, exiting" 的错误通常表示NTP服务已经在运行,无法启动新的实例。要解决此问题,可以尝试以下步骤:

  • 停止NTP服务

systemctl stop ntp

  • 再次执行ntpdate

ntpdate cn.pool.ntp.org

2.系统无法解析NTP服务器的主机名,导致NTP同步失败。


出现这种情况可以尝试以下步骤:

  • 检查您的网络连接,确保您可以访问互联网和NTP服务器。您可以尝试使用ping命令来测试网络连接,例如:

ping cn.pool.ntp.org

如果ping成功,表示您的网络连接正常

  • 确认您的DNS配置是否正确。您可以尝试使用dig命令来查找NTP服务器的IP地址。命令如下:

dig cn.pool.ntp.org

如果dig成功,并返回一个IP地址,则表示您的DNS配置正确。

  • 如果您的DNS配置不正确,您可以尝试更改DNS配置,例如更改/etc/resolv.conf文件中的DNS服务器。命令如下:

vim /etc/resolv.conf

  • 在nameserver后面接正确的DNS地址,例如4.2.2.1

nameserver 4.2.2.1

保存文件并退出。

  • 再次尝试使用ntpdate命令手动同步NTP服务器,命令如下:

ntpdate cn.pool.ntp.org

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值