ubuntu22.04系统如何自建2级ntp服务器

发布于:2025-02-27 ⋅ 阅读:(11) ⋅ 点赞:(0)

一:ntp服务器详情

服务器型号

系统版本

IP地址

主机名

ntp服务版本

虚拟机8c-32g-1T

Ubuntu22.04

10.20.30.2

DMZ-NTP-SERVER

4.2.8p15

二:ntp服务端部署配置脚本

#!/bin/bash  

# 脚本信息  
echo "----------------------------------------"  
echo "NTP 服务器安装脚本"  
echo "----------------------------------------"  

# 更新软件包列表  
echo "正在更新软件包列表..."  
sudo apt update  

# 安装 NTP 服务,避免交互提示  
echo "正在安装 NTP 服务..."  
sudo DEBIAN_FRONTEND=noninteractive apt install -y ntp  

# 备份原配置文件  
echo "正在备份原配置文件 ntp.conf..."  
sudo cp /etc/ntp.conf /etc/ntp.conf.bak  

# 配置 NTP 服务器  
echo "正在配置 NTP 服务器..."  
sudo bash -c 'cat > /etc/ntp.conf << EOF  
# 使用来自 pool.ntp.org 项目的公共服务器  
server ntp1.aliyun.com iburst  
server ntp2.aliyun.com iburst  
server ntp3.aliyun.com iburst  

# 允许本地网络中的机器与 NTP 服务器同步  
restrict default nomodify notrap nopeer noquery  
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap  # 请根据您的内部网络进行适当修改  

# 启用日志记录  
logfile /var/log/ntp.log  
EOF'  

# 确保配置文件没有多余的空格或隐藏字符  
sudo sed -i 's/[[:space:]]*$//' /etc/ntp.conf  # 删除行尾的空格  
sudo sed -i '/^$/d' /etc/ntp.conf  # 删除空行  

# 启动 NTP 服务  
echo "正在启动 NTP 服务..."  
sudo systemctl start ntp  
sudo systemctl enable ntp  

# 显示服务状态  
echo "NTP 服务状态:"  
sudo systemctl status ntp  

# 提示用户在其他服务器上配置 NTP 客户端  
echo "----------------------------------------"  
echo "要配置其他服务器,请将此 NTP 服务器的 IP 地址添加到 /etc/ntp.conf:"  
echo "server <NTP_SERVER_IP> iburst"  
echo "最后,在客户端上重启 NTP 服务。"

三:ntp服务维护相关命令

查看服务状态:systemctl status ntp.service

重启服务:systemctl restart ntp.service 
关闭服务:systemctl stop ntp.service 
启动服务:systemctl start ntp.service
查看日志:tail -20f /var/log/ntp.log 或者  
查看服务的系统日志:journalctl -u ntp
查看或者编辑配置文件:cat /etc/ntp.conf

四:客户端安装配置测试ntp服务

(1)提前保证要配置 ntp 服务的机器和10.20.30.2 ntp 服务端网络且端口互通:

telnet 10.20.30.2 123

(2)在客户端机器上安装 ntp 服务:

sudo apt update 
sudo apt install -y ntp

(3)配置ntp客户端,编辑 ntp 客户端的配置文件 /etc/ntp.conf,将 ntp 服务端的 IP 地址添加到配置文件中:

sudo vim /etc/ntp.conf

并添加以下行:

server 10.20.30.2 iburst

(4)完成配置后,重启客户端 ntp 服务使配置生效:

sudo systemctl restart ntp

(5)测试 ntp 时间同步是否生效,使用 ntpq 命令检查 ntp 同步状态。运行以下命令:

ntpq -p

此命令会列出已配置的 ntp 服务器及其状态。如果配置正确应该能够看到 ntp 服务器的条目以及它的响应时间。会看到类似于以下的输出(10.20.30.2      202.112.29.82    2 u    1   64    1    0.262  +25.187   1.040 这一列代表配置成功,但是还需要测试时间同步是否成功):

root@DMZ-DNS-SERVER:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 10.20.30.2      202.112.29.82    2 u    1   64    1    0.262  +25.187   1.040
 ntp1.flashdance 194.58.202.20    2 u    1   64    1  186.576   +5.922   1.366
 dns2.synet.edu. 202.118.1.48     2 u    1   64    1   33.411  +17.579   0.000
 electrode.felix 131.188.3.221    2 u    1   64    1  269.660  -17.697   1.204
 ntp5.flashdance 194.58.202.20    2 u    2   64    1  189.559   +4.068   0.000
 ntp.wdc2.us.lea 130.133.1.10     2 u    1   64    1  333.790  -17.704   0.000
 ntp8.flashdance 194.58.202.148   2 u    1   64    1  216.010  +14.262   1.806
 119.28.183.184  100.122.36.196   2 u    2   64    1   57.018  +18.580   0.852
 185.125.190.58  79.243.60.50     2 u    4   64    1  279.504  +36.708   0.000
 time.cloudflare 10.191.8.4       3 u    2   64    1  200.383  +17.699   0.000
 185.125.190.56  17.253.28.123    2 u    1   64    1  460.684  -39.013   0.000

列名释义:

  • remote 列显示了当前连接的 NTP 服务器,包括 10.20.30.2

  • refid 列显示了该 NTP 服务器的参考时钟(在您的情况下是 202.112.29.82)。

  • st 列表示服务器的层级(2 表示这是一个二级 NTP 服务器)。

  • reach 列显示了与该 NTP 服务器的连接状态,值为 1 表示最近的请求已经成功接收。

  • delay、offset 和 jitter 列显示了网络延迟、时间偏移和抖动等信息。

(6)检查时间是否同步,可以通过以下命令查看当前时间:

date

然后,等待一段时间(通常是几分钟),ntp 客户端会自动与ntp服务端进行同步。再次运行 ntpq -p 查看 ntp 同步状态,直到 reach 列显示为 377(即所有请求的回复都成功)。

root@DMZ-DNS-SERVER:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000   +0.000   0.000
+10.20.30.2      203.107.6.88     3 u  116  128  377    0.287  -14.026   2.050
*dns2.synet.edu. 202.118.1.48     2 u   69  128  377   32.561  -13.713   1.781
-ntp8.flashdance 194.58.202.148   2 u   65  256  377  193.624  -21.543   4.956
+119.28.183.184  100.122.36.196   2 u  231  128  366   55.292   -9.522   3.699
-101.43.66.2     202.112.29.82    2 u    9  128  377   37.396  -12.486   3.318

(7)确保防火墙未阻止 ntp 流量

如果无法同步,请确认防火墙未阻止 ntp 流量。默认情况下,ntp 使用 udp 123 端口。需要在 ntp 服务器上检查防火墙规则:

sudo ufw status

如果 ntp 服务被阻止,则可以通过以下命令允许 ntp 流量:

sudo ufw allow ntp

(8)备注:自建的ntp还是依赖于阿里云的1级ntp服务器,我们这里属于2级ntp服务器

ntp1.aliyun.com 
ntp2.aliyun.com 
ntp3.aliyun.com