openwrt中时间同步ntp使用

前言

openwrt开发中,我们可能遇到这样需求,使用路由器支持局域网内设备ntp授时功能。

作者:羽林君

转载授权以及围观:欢迎关注微信公众号:羽林君

或者添加作者个人微信:become_me


ntp是什么

NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。

使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。

对于运行NTP的本地系统,既可以接收来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。

关于NTP原理分析,有人写的很详细,这里贴一个连接:https://www.cnblogs.com/lsgxeva/p/16587984.html

客户端启ntp服务器

我们可以在界面直接选中Enable NTP client,在下方填写自己需要的ntp同步的网站(具体网址可以自行搜索),然后openwrt就会帮你启动配置好网站的命令。

上面默认123端口,当然我们也可以在配置文件中指定NTP服务器的端口,在OpenWRT中,常见的NTP客户端是"ntpd",其配置文件通常位于"/etc/ntp.conf"或"/etc/config/system"等位置:

server 1.openwrt.pool.ntp.org iburst port 123

在这个示例中,“port 123” 指定了NTP服务器的端口为123。请注意,大多数情况下,无需手动指定端口,因为NTP客户端会默认使用标准的UDP端口123与NTP服务器通信。一般情况下,默认的UDP端口123对于NTP时间同步已经足够了。

下面是写好了同步网站后openwrt启动的命令,填写NTP网站,大家把网站前面序号去掉

r/sbin/ntpd -n -N -S /usr/sbin/ntpd-hotplug -p openwrt.pool.ntp.org -p openwrt.pool.ntp.org -p openwrt.pool.ntp.org -p tp1.aliyun.com 

这个命令是在OpenWRT系统中用于启动ntpd(NTP守护进程)的命令,具体解释如下:

  1. /usr/sbin/ntpd:这是要执行的程序,即NTP守护进程。
ntpd就是ntp daemon。是一个系统的后台进程(system daemon),用来同步本地系统时钟和远程NTP时间服务器的时间,或者其他参考时间源。
该程序实现了全部的NTP4协议,并对版本3,2,1,进行了兼容。
的定义该程序可以工作在client/server模式,symmetric模式,broadcast模式。
ntpd通常需要一个配置文件/etc/ntp.conf,ntpd后面的选项和命令可以写在该配置文件中。通常,ntpd启动后会读取ntp.conf文件。也可以在ntpd后面接相应指令,让ntpd不考虑该配置文件。
ntpd可以自动发现远程服务器并自动配置。
nptd通常连续工作,隔一段时间调整一次系统时间。也可以在调整完系统时间后自动退出,如果没有收到NTP服务器的回复,将会超时退出。
  1. -n:表示以前台方式运行,通常用于调试目的。

  2. -N:表示不进行守护进程化,通常也是为了调试目的。

  3. -S /usr/sbin/ntpd-hotplug:指定了一个脚本或程序,可能是在NTP时间同步发生变化时触发的热插拔脚本。

  4. -p openwrt.pool.ntp.org -p openwrt.pool.ntp.org -p ntp1.aliyun.com:这些是指定的NTP服务器地址。"-p"参数后面跟着的是NTP服务器的地址,这里包括了openwrt官方的NTP服务器和阿里云的NTP服务器。

综合来看,这个命令的作用是以前台方式运行ntpd(NTP守护进程),不进行守护进程化,同时指定了一组NTP服务器地址用于时间同步,并且可能在时间同步发生变化时会触发"/usr/sbin/ntpd-hotplug"脚本。

openwrt服务端开启ntp服务器下发功能


选中provide NTP server即可开启路由器ntp服务器同步功能。

启动openwrt的ntp服务器后,原生的openwrt会帮你启动这样命令:

{ntpd} /sbin/ujail -t 5 -n ntpd -U ntp -G ntp -C /etc/capabilities/ntpd.json -c -u -r /bin/ubus -r /usr/bin/env -r /usr/bin/jshn -r /usr/sbin/ntpd-hotplug -r /usr/share/libubox/jshn.sh -- /usr/sbin/ntpd -n -N 

这个命令是在OpenWRT系统中用于启动ntpd(NTP守护进程)的命令,具体解释如下:

  1. {ntpd}:一个占位符,用于指代命令名称,实际上应该替换为"ntpd"。

  2. /sbin/ujail:这是一个命令,通常用于在OpenWRT系统中以受限制的环境中执行其他程序。它提供了对OpenWRT的沙盒(sandboxing)支持,以增加系统安全性。

  3. -t 5:这是ujail命令的选项之一,表示设置超时时间为5秒。

  4. -n ntpd:指定要运行的程序名称为"ntpd"。

  5. -U ntp -G ntp:分别指定了新的进程用户和组,这里将ntpd进程的用户设置为"ntp",组也设置为"ntp"。

  6. -C /etc/capabilities/ntpd.json:指定了一个JSON格式的文件,其中包含了ntpd进程的能力(capabilities)配置。

  7. -c:表示创建一个新的控制终端。

  8. -u:在后台运行进程。

  9. -r /bin/ubus -r /usr/bin/env -r /usr/bin/jshn -r /usr/sbin/ntpd-hotplug -r /usr/share/libubox/jshn.sh:这些都是指定了要在沙盒环境中可用的程序或脚本。

  10. – /usr/sbin/ntpd -n -N:最后部分是实际要执行的命令,包括路径和参数。这里运行了"/usr/sbin/ntpd"命令,带有"-n"和"-N"参数。

这个命令的作用是以沙盒环境中以"ntp"用户和组的身份运行ntpd(NTP守护进程),并且使用指定的能力配置文件以及相关的必要程序和脚本。

简单示例

上面稍微详细介绍了使用,这里我们直接命令简单执行一下,进行NTP同步。
服务端:

/usr/sbin/ntpd -n -N -l -S /usr/sbin/ntpd-hotplug -p ntp1.aliyun.com -p ntp2.aliyun.com -p ntp.tencent.com -p ntp1.tencent.com -p time.windows.com


客户端:

ntpd -n -N  -p 192.168.1.1

我的openwrt路由器ip为192.168.1.1
协议抓取:
使用wireshark 抓取,用ntp关键词筛选
https://img-blog.csdnimg.cn/direct/d8ef3836b35b4e009231778a95d72bbf.png
client请求:

server回应:

wireshark抓包分析可以参考这篇:https://blog.csdn.net/chen1415886044/article/details/112549133

实际执行:
大家可以下面看到设备的date查询中时间更新了:

结语

这就是我自己在openwrt使用ntp的记录。如果大家有更好的想法,也欢迎大家加我好友交流分享哈。


作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。

                              ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推荐阅读

【1】jetson nano开发使用的基础详细分享

【2】Linux开发coredump文件分析实战分享

【3】CPU中的程序是怎么运行起来的 必读

【4】cartographer环境建立以及建图测试

【5】设计模式之简单工厂模式、工厂模式、抽象工厂模式的对比

本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/457534.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32-V5开发板和树莓派的区别介绍

STM32-V5开发板和树莓派是两种不同类型的嵌入式开发平台,它们在设计理念、性能、用途和编程方式上都有所区别。 STM32-V5开发板 STM32-V5开发板是基于STM32微控制器的开发平台,通常用于嵌入式系统开发、教学和实验。 区别: - **核心*…

冒泡排序,详详解解

目录 基本概念: 上图: 核心思路: 基本步骤: 关键: 代码核心: 补充: 代码(规范) : 代码(优化): 今天我们不刷力扣了&…

【Node.js从基础到高级运用】十二、身份验证与授权:JWT

身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制,将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWT(Json Web Token) JWT是一种用于双方之间…

使用HttpRequest工具类调用第三方URL传入普通以及文件参数并转换MultipartFile成File

使用HttpRequest工具类调用第三方URL传入普通以及文件参数 一、依赖及配置二、代码1、模拟第三方服务2、调用服务3、效果实现 一、依赖及配置 <!--工具依赖--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId&g…

IP在网络通信中的重要作用

IP&#xff0c;全称Internet Protocol&#xff0c;即网际互连协议&#xff0c;是TCP/IP体系中的网络层协议。IP作为整个TCP/IP协议族的核心&#xff0c;是构成互联网的基础。它的作用重大且深远&#xff0c;下面将详细阐述IP的定义及其在网络通信中的重要作用。 首先&#xff0…

.NET高级面试指南专题十七【 策略模式模式介绍,允许在运行时选择算法的行为】

介绍&#xff1a; 策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法的行为。它定义了一系列算法&#xff0c;将每个算法封装到一个对象中&#xff0c;并使它们可以互相替换。这使得算法可独立于使用它的客户端变化。 原理&#xff1a; 策略接口&#xff08;Strat…

【JavaScript 漫游】【036】CORS 通信总结

文章简介 CORS 是一个 W3C 标准&#xff0c;全称是“跨域资源共享”&#xff08;Cross-origin resource sharing&#xff09;。它允许浏览器向跨域的服务器&#xff0c;发出 XMLHttpRequest 请求&#xff0c;从而克服了 AJAX 只能同源使用的限制。 本篇文章为【JavaScript 漫…

Frustum PointNets for 3D Object Detection from RGB-D Data(2018)

3D空间的几何和拓扑结构 直接在3D空间操作可以更自然的参数化以及捕捉 重复、平面、对称等几何结构 2. Related Work 3D Object Detection from RGB-D Data Front view image based methods&#xff08;只是介绍了一种表示方法&#xff09; Bird’s eye view based methods&a…

【Ubuntu20.04】Clion 配置 Libtorch + OpenCV

首先根据自己的CUDA版本安装正确对应的cuda和cudnn并进行配置。 这里安装的是cuda-11.3版本&#xff0c;以下基于这个版本进行安装。 1. 安装 Clion 因为Clion更容易直接编写CMakelists.txt&#xff0c;所以使用Clion作为IDE。 需要在File -> Setting -> CMake的CMake…

C# wpf 使用GDI实现截屏

wpf截屏系列 第一章 使用GDI实现截屏&#xff08;本章&#xff09; 第二章 使用GDI实现截屏 第三章 使用DockPanel制作截屏框 第四章 实现截屏框热键截屏 第五章 实现截屏框实时截屏 第六章 使用ffmpeg命令行实现录屏 文章目录 wpf截屏系列前言一、导入gdi32方法一、NuGet获取…

ChatGPT赋能遥感研究:精准分析处理遥感影像数据,推动科研新突破

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能在解…

数字排列 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 小明负责公司年会&#xff0c;想出一个趣味游戏: 屏幕给出 1−9 中任意 4 个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第 n 位置…

Linux操作系统——线程概念

1.什么是线程&#xff1f; 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行&#xff0c;本质是在进程地址空间内运行在Linux系统中&#x…

K8S上安装LongHorn(分布式块存储) --use

要在 Kubernetes上安装 LongHorn&#xff0c;您可以按照以下步骤进行操作&#xff1a; 准备工作 将LongHorn只部署在k8s-worker5节点上。 给节点设置污点 $. kubectl taint nodes k8s-worker5 longhorn:PreferNoSchedule # 参考 # # 删除污点 # kubectl taint nodes k8s-w…

【趣味项目】一键生成LICENSE

【趣味项目】一键生成LICENSE 项目地址&#xff1a;GitHub(最新版本) | GitCode(旧版本) 项目介绍 一款用于自动生成开源项目协议的工具&#xff0c;可以通过 npm 进行安装后在命令行使用&#xff0c;非常方便 使用方式 npm install xxhls/get-license -gget-license --l…

MATLAB画图:错误使用plot无效的颜色或线型...

指定绘图颜色 - MATLAB & Simulink (mathworks.com) 使用matlab画图&#xff0c;想要使用其他颜色时&#xff0c;如想要从上面的颜色类型修改为下面的颜色类型 只需要在后面修改color属性即可 s1 plot(C3, LineWidth,2); s1.Color [0.8500 0.3250 0.0980]; hold on s2 …

node.js入门—day02

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;给自己一个梦想&#xff0c;给世界一个惊喜。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章目录 什么是单线程…

尚硅谷SpringBoot3笔记 (二) Web开发

Servlet&#xff0c;SpringMVC视频推荐&#xff1a;53_尚硅谷_servlet3.0-简介&测试_哔哩哔哩_bilibili HttpServlet 是Java Servlet API 的一个抽象类&#xff0c;用于处理来自客户端的HTTP请求并生成HTTP响应。开发人员可以通过继承HttpServlet类并重写其中的doGet()、do…

自然语言处理NLP:tf-idf原理、参数及实战

大家好&#xff0c;tf-idf作为文体特征提取的常用统计方法之一&#xff0c;适合用于文本分类任务&#xff0c;本文将从原理、参数详解和实际处理方面介绍tf-idf&#xff0c;助力tf-idf用于文本数据分类。 1.tf-idf原理 tf 表示词频&#xff0c;即某单词在某文本中的出现次数与…

蓝牙耳机链接电脑莫名奇妙关机问题(QQ浏览器)

蓝牙耳机连接电脑听歌的时候&#xff0c;如果听歌软件是暴风影音&#xff0c;或者其它播放器&#xff0c;蓝牙不会自动关机&#xff0c;但如果是QQ浏览器&#xff0c;蓝牙耳机经常莫名其妙的关机&#xff0c;时间间隔忽长忽短&#xff0c;没有规律&#xff0c;解决办法就是重启…