当前位置: 首页 > article >正文

两个控制器NTP/ptp时间同步

在两个Ubuntu系统之间设置NTP时间同步,确保一个作为NTP服务器,另一个作为客户端,具体步骤如下:


步骤 1:设置NTP服务器

1.1 安装NTP服务

在作为服务器的Ubuntu系统上,安装NTP服务:

 

bash

复制代码

sudo apt update sudo apt install ntp -y

1.2 配置NTP服务

编辑 NTP 配置文件:

 

bash

复制代码

sudo nano /etc/ntp.conf

  • 配置时间源: 保留默认的公共时间服务器,或替换为可信任的NTP服务器:

     

    text

    复制代码

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

    如果无法连接外部服务器,可以使用本地时钟作为时间源:

     

    text

    复制代码

    server 127.127.1.0 fudge 127.127.1.0 stratum 10

  • 允许客户端访问: 添加允许的客户端网段。例如,如果客户端在 192.168.1.0/24 网段:

     

    text

    复制代码

    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

1.3 启动并检查服务

启动并检查 NTP 服务:

 

bash

复制代码

sudo systemctl enable ntp sudo systemctl start ntp sudo systemctl status ntp

检查 NTP 服务是否正在同步:

 

bash

复制代码

ntpq -p


步骤 2:设置NTP客户端

2.1 安装NTP服务

在客户端Ubuntu系统上,安装 NTP:

 

bash

复制代码

sudo apt update sudo apt install ntp -y

2.2 配置客户端同步NTP服务器

编辑客户端的 /etc/ntp.conf 文件:

 

bash

复制代码

sudo nano /etc/ntp.conf

  • 指定NTP服务器: 将服务器设置为前面配置的NTP服务器(例如,服务器IP为 192.168.1.100):
     

    text

    复制代码

    server 192.168.1.100 iburst

2.3 启动并检查服务

启动并检查 NTP 服务:

 

bash

复制代码

sudo systemctl enable ntp sudo systemctl start ntp sudo systemctl status ntp

检查是否已同步到服务器:

 

bash

复制代码

ntpq -p


步骤 3:验证时间同步

3.1 检查服务器时间状态

在服务器上运行:

 

bash

复制代码

timedatectl status

3.2 检查客户端时间状态

在客户端上运行:

 

bash

复制代码

timedatectl status

两者显示的时间应一致。如果时间仍不同,可手动强制同步时间:

 

bash

复制代码

sudo ntpd -gq sudo systemctl restart ntp


步骤 4:防火墙设置(可选)

确保服务器的 UDP 123 端口开放:

 

bash

复制代码

sudo ufw allow 123/udp # Ubuntu防火墙

如果客户端无法连接到服务器,检查防火墙或网络设置是否阻止NTP通信。


步骤 5:持续监控同步

在客户端和服务器上,可以通过以下命令持续监控时间同步:

 

bash

复制代码

watch ntpq -p

数据列如延迟(delay)、偏移(offset)和抖动(jitter)应逐渐趋于稳定。

================================PTP========================================

步骤 1:准备工作

  1. 确保两个Ubuntu系统在同一局域网内,并且可以互相通信。
  2. 选择一个控制器作为PTP主时钟(Master),另一个作为从时钟(Slave)
  3. 确保系统安装了 ptp4lchrony 工具。

步骤 2:安装 PTP 工具

在两个Ubuntu系统上安装 linuxptp 软件包(包含 ptp4l 工具):

 

bash

复制代码

sudo apt update sudo apt install linuxptp -y


步骤 3:配置 PTP 主时钟(Master)

在主时钟控制器上执行以下操作:

  1. 编辑配置文件
    创建或编辑 ptp4l 的配置文件:
 

bash

复制代码

sudo nano /etc/ptp4l.conf

内容如下:

 

text

复制代码

[global] # 网络接口名称,替换为实际接口名称(如 eth0) interface eth0 # 使用主时钟模式 tx_timestamp_timeout 50

  1. 启动 PTP 主时钟服务
    运行以下命令启动 PTP 服务:
 

bash

复制代码

sudo ptp4l -i eth0 -m

  • -i eth0:指定网络接口。
  • -m:启用日志输出到控制台。
  1. 确认服务运行
    检查主时钟状态输出,确保其工作正常,显示内容类似:
 

text

复制代码

ptp4l[...]: selected /dev/ptp0 as PTP clock ptp4l[...]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED


步骤 4:配置 PTP 从时钟(Slave)

在从时钟控制器上执行以下操作:

  1. 编辑配置文件
    创建或编辑 ptp4l 的配置文件:
 

bash

复制代码

sudo nano /etc/ptp4l.conf

内容如下:

 

text

复制代码

[global] # 网络接口名称,替换为实际接口名称(如 eth0) interface eth0 # 使用从时钟模式 tx_timestamp_timeout 50

  1. 启动 PTP 从时钟服务
    运行以下命令启动 PTP 服务:
 

bash

复制代码

sudo ptp4l -i eth0 -s -m

  • -i eth0:指定网络接口。
  • -s:将本机设置为从时钟。
  • -m:启用日志输出到控制台。
  1. 同步系统时间
    从时钟需要使用 phc2sys 将硬件时钟同步到系统时钟:
 

bash

复制代码

sudo phc2sys -s eth0 -c CLOCK_REALTIME -w

  • -s eth0:指定网络接口的 PTP 时钟。
  • -c CLOCK_REALTIME:同步到系统时钟。
  • -w:启用同步日志。

步骤 5:验证时间同步

  1. 在从时钟上检查同步状态: 查看 ptp4lphc2sys 的日志,确认同步状态:

     

    bash

    复制代码

    sudo journalctl -u ptp4l

  2. 对比主从时钟的时间: 在主从时钟上运行以下命令,检查时间是否一致:

     

    bash

    复制代码

    date

  3. 查看同步精度: 使用 pmc 命令检查同步状态:

     

    bash

    复制代码

    sudo pmc -u -b 0 'GET CURRENT_DATA_SET'

    输出中可查看时间偏移(Offset)等信息。


步骤 6:优化与长期运行

  1. 设置服务开机自启:ptp4lphc2sys 创建 systemd 服务文件,实现开机自动运行:

     

    bash

    复制代码

    sudo systemctl enable ptp4l sudo systemctl enable phc2sys

  2. 网络配置优化:

    • 优先选择低延迟网络接口(如物理网卡)。
    • 确保网络通信无抖动或过多丢包。

通过以上步骤,您可以成功在两个Ubuntu控制器之间配置并实现高精度的PTP时间同步。


http://www.kler.cn/a/455748.html

相关文章:

  • Python 敲电子木鱼,见机甲佛祖,修赛博真经
  • STM32高级物联网通信之以太网通讯
  • SpringCloudAlibaba升级手册-nacos问题记录
  • v语言介绍
  • RestTemplate关于https的使用详解
  • 【ES6复习笔记】迭代器(10)
  • UE(虚幻)学习(四) 第一个C++类来控制小球移动来理解蓝图和脚本如何工作
  • 使用Python实现智慧城市数据平台:走向未来的智能城市管理
  • 如何使用Python和PIL库生成带竖排文字的封面图像
  • IS-IS(Intermediate System to Intermediate System)
  • Peter Lax线性代数教材:Linear Algebra and Its Applications 2nd Ed
  • vue3项目使用scss报错相关处理
  • 使用Vue+Django开发的旅游路书应用
  • 专业版pycharm与服务器连接
  • HarmonyOS Next 应用元服务开发-应用接续动态配置迁移按需退出
  • 关于uni-forms组件的bug【提交的字段[‘*‘]在数据库中并不存在】
  • [Unity Shader][图形渲染] Shader数学基础11 - 复合变换详解
  • SpringBoot3整合MyBatisPlus时遇到的问题及解决办法
  • leetCode 292Nim游戏
  • 工作编码案例--UDP多播 和 本地套接字bind
  • 5.UE5横板2D游戏,摄像机移动和停止移动,
  • Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)
  • NCR+可变电荷块——文献hub1
  • Ftrans数据摆渡系统 搭建安全便捷跨网文件传输通道
  • 如何循序渐进的学习人工智能
  • 国际版JAVA同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5