Skip to main content

ubuntu18.04安装ntp,并配置内网校时,含离线安装NTP方法

在你的场景里,本质是做一个NTP层级结构

  • server-1:能访问互联网 → 作为上游时间源(NTP Server)

  • server-2:不能访问互联网 → 从 server-1 同步时间(NTP Client)

下面一步步配置 👇


一、在 server-1 上配置(作为 NTP 服务器)

1. 安装 NTP 服务

sudo apt update
sudo apt install ntp

2. 修改配置文件

编辑:

sudo vim /etc/ntp.conf

确保有公网时间源(默认一般已经有):

server 0.ubuntu.pool.ntp.org iburst
server 1.ubuntu.pool.ntp.org iburst
server 2.ubuntu.pool.ntp.org iburst

3. 允许内网 client(server-2)访问

在配置中添加(很关键):

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

👉 根据你的内网网段修改,比如:

  • 192.168.0.0

  • 10.0.0.0


4. 重启服务

sudo systemctl restart ntp

5. 检查是否正常同步公网

ntpq -p

看到类似:

*ntp1.aliyun.com

说明已经同步成功 ✅


6. 确认监听端口

sudo netstat -lnup | grep 123

二、在 server-2 上配置(作为客户端)


1. 安装 NTP

sudo apt update
sudo apt install ntp

2. 修改配置文件

sudo vim /etc/ntp.conf

👉 注释掉所有公网 server:

# server 0.ubuntu.pool.ntp.org iburst
# server 1.ubuntu.pool.ntp.org iburst

👉 添加 server-1:

server 192.168.1.10 iburst

(这里填 server-1 的IP)


3. 重启服务

sudo systemctl restart ntp

4. 验证同步状态

ntpq -p

看到:

*192.168.1.10

说明已经成功同步 🎉


三、可选优化(推荐)

1. 强制 server-1 作为时间源(避免无外网时漂移)

在 server-1 的 /etc/ntp.conf 添加:

local stratum 10

2. 防火墙放行(如果有防火墙)

server-1 需要开放 UDP 123:

sudo ufw allow 123/udp

3. 手动立即校时(客户端)

server-2 可以执行一次:

sudo ntpdate 192.168.1.10

四、整体结构图

互联网 NTP
     ↓
 server-1(有公网)
     ↓
 server-2(内网)

五、常见问题排查

❌ server-2 不同步?

检查:

  1. 能否 ping 通 server-1

  2. 防火墙是否放行 123/UDP

  3. server-1 是否在监听

  4. ntpq -p 是否有 reach 值(非0)


如果你愿意,我可以帮你把这套改成更现代的 chrony方案(Ubuntu 18.04更04 上离线安装 ntp,核心思路是:在有网的机器上下载 .deb 安装包及其所有依赖包,拷贝到无网机器上,然后使用 dpkg 进行批量安装。

由于 ntp 依赖于 libopts25 等库,直接拷贝一个 ntp.deb 通常会报错缺失依赖。最稳妥的方法是下载整个依赖树。

以下是具体操作步骤:

准备工作

  • 机器 A:有互联网权限的服务器(或任何一台能上网的 Ubuntu 18.04/相似环境电脑)。
  • 机器 B:目标服务器(无网,需要安装 ntp)。
  • 传输工具:U 盘、或者通过 scp 从机器 A 传到机器 B。

第一步:在机器 A(有网)上下载安装包及依赖

我们需要利用 apt-get download 配合 --print-deps 来一次性下载所有需要的包。

  1. 创建存放目录

    mkdir ~/ntp-offline-packages
    cd ~/ntp-offline-packages
    
  2. 下载 ntp 及其所有依赖包
    执行以下命令。这条命令会解析 ntp 的所有依赖,并下载当前系统架构(通常是 amd64)对应的所有 .deb 文件。

    # 获取依赖列表并下载
    apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances ntp | grep "^\w")
    

    解释:

    • apt-cache depends ...:列出 ntp 的所有深层依赖。
    • grep "^\w":过滤出有效的包名。
    • apt-get download:只下载 .deb 包到当前目录,不进行安装(所以不会报依赖错误)。
  3. 确认下载结果
    查看目录下是否有多个 .deb 文件:

    ls -lh *.deb
    

    您应该能看到类似 ntp_*.deb, libopts25_*.deb, libedit2_*.deb 等文件(具体依赖数量视系统环境而定,通常 5-10 个左右)。

  4. 打包文件
    为了方便传输,打个包:

    cd ..
    tar -czvf ntp-offline.tar.gz ntp-offline-packages
    

第二步:传输到机器 B(无网)

ntp-offline.tar.gz 复制到机器 B。

  • 方法 1 (U 盘):拷贝到 U 盘,插到机器 B 上挂载复制。
  • 方法 2 (SCP):如果机器 B 虽然没外网但能和机器 A 内网互通:
    # 在机器 A 上执行
    scp ntp-offline.tar.gz user@server2-ip:/home/user/
    

第三步:在机器 B(无网)上安装

  1. 解压文件

    tar -xzvf ntp-offline.tar.gz
    cd ntp-offline-packages
    
  2. 批量安装所有 .deb 包
    使用 dpkg -i 配合通配符 *.deb 一次性安装当前目录下所有的包。dpkg 会自动处理同一批次内的依赖关系。

    sudo dpkg -i *.deb
    
  3. 验证安装结果

    • 检查状态

      dpkg -l | grep ntp
      

      如果状态显示 ii,说明安装成功。

    • 检查服务

      systemctl status ntp
      

      如果看到 active (running),说明服务已启动。

    • 如果报错 "dependency problems":
      如果在第 2 步中仍然报错缺少某个特定的包(极少见,除非机器 A 和 B 的系统版本差异巨大,比如一个是 18.04.1 一个是 18.04.6 且基础库不同),您需要记下缺少的包名,回到机器 A,单独下载那个包:

      # 在机器 A 上
      apt-get download <缺失的包名>
      

      然后再次拷贝到机器 B 运行 sudo dpkg -i *.deb


第四步:配置时间同步

安装完成后,您就可以按照之前的方案配置 /etc/ntp.conf 了:

  1. 编辑配置

    sudo vim /etc/ntp.conf
    
    • 注释掉所有 pool 或 server 指向外网的行。
    • 添加指向服务器 1 的内网 IP:
      server 192.168.x.x iburst  # 替换为服务器 1 的 IP
      
  2. 重启服务

    sudo systemctl restart ntp
    
  3. 验证同步

    ntpq -p
    

    看到服务器 1 的 IP 前面出现 * 号即表示成功。

💡 备选方案:如果无法下载依赖

如果机器 A 和机器 B 的小版本号差异太大导致依赖包不匹配,或者您觉得下载依赖太麻烦,还有一个“简单粗暴”但推荐用于生产环境的方法:

使用 ntpdate 命令(无需守护进程,只需一个二进制文件

  1. 在机器 A 上下载 ntpdate 包:apt-get download ntpdate
  2. 如果它依赖 libopts25,也一起下载。
  3. 在机器 B 上 dpkg -i *.deb
  4. 在机器 B 上写个定时任务:*/5 * * * * /usr/sbin/ntpdate -u 192.168.x.x
    (缺点:时间是跳变的,不是平滑过渡,可能导致日志时间错乱,但在极度受限环境下可用)

首选方案依然是上述的完整 ntp 离线安装。,同步更快更稳定。