• 正文
    • ntp是什么
    • 客戶端啟ntp服務器
    • openwrt服務端開啟ntp服務器下發(fā)功能
    • 簡單示例
    • 結語
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

openwrt中時間同步ntp使用

2024/03/15
4508
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者:羽林君,轉載授權以及圍觀:歡迎關注微信公眾號:羽林君,或者添加作者個人微信:become_me

openwrt開發(fā)中,我們可能遇到這樣需求,使用路由器支持局域網內設備ntp授時功能。

ntp是什么

NTP(Network Time Protocol,網絡時間協(xié)議)是由RFC 1305定義的時間同步協(xié)議,用來在分布式時間服務器和客戶端之間進行時間同步。NTP基于UDP報文進行傳輸,使用的UDP端口號為123。

使用NTP的目的是對網絡內所有具有時鐘的設備進行時鐘同步,使網絡內所有設備的時鐘保持一致,從而使設備能夠提供基于統(tǒng)一時間的多種應用。

對于運行NTP的本地系統(tǒng),既可以接收來自其他時鐘源的同步,又可以作為時鐘源同步其他的時鐘,并且可以和其他設備互相同步。

關于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系統(tǒng)中用于啟動ntpd(NTP守護進程)的命令,具體解釋如下:

/usr/sbin/ntpd

    :這是要執(zhí)行的程序,即NTP守護進程。
ntpd就是ntp daemon。是一個系統(tǒng)的后臺進程(system daemon),用來同步本地系統(tǒng)時鐘和遠程NTP時間服務器的時間,或者其他參考時間源。
該程序實現了全部的NTP4協(xié)議,并對版本3,2,1,進行了兼容。
的定義該程序可以工作在client/server模式,symmetric模式,broadcast模式。
ntpd通常需要一個配置文件/etc/ntp.conf,ntpd后面的選項和命令可以寫在該配置文件中。通常,ntpd啟動后會讀取ntp.conf文件。也可以在ntpd后面接相應指令,讓ntpd不考慮該配置文件。
ntpd可以自動發(fā)現遠程服務器并自動配置。
nptd通常連續(xù)工作,隔一段時間調整一次系統(tǒng)時間。也可以在調整完系統(tǒng)時間后自動退出,如果沒有收到NTP服務器的回復,將會超時退出。

-n:表示以前臺方式運行,通常用于調試目的。

-N:表示不進行守護進程化,通常也是為了調試目的。

-S /usr/sbin/ntpd-hotplug:指定了一個腳本或程序,可能是在NTP時間同步發(fā)生變化時觸發(fā)的熱插拔腳本。

-p openwrt.pool.ntp.org -p openwrt.pool.ntp.org -p ntp1.aliyun.com:這些是指定的NTP服務器地址。"-p"參數后面跟著的是NTP服務器的地址,這里包括了openwrt官方的NTP服務器和阿里云的NTP服務器。

綜合來看,這個命令的作用是以前臺方式運行ntpd(NTP守護進程),不進行守護進程化,同時指定了一組NTP服務器地址用于時間同步,并且可能在時間同步發(fā)生變化時會觸發(fā)"/usr/sbin/ntpd-hotplug"腳本。

openwrt服務端開啟ntp服務器下發(fā)功能

選中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系統(tǒng)中用于啟動ntpd(NTP守護進程)的命令,具體解釋如下:

**{ntpd}**:一個占位符,用于指代命令名稱,實際上應該替換為"ntpd"。

/sbin/ujail:這是一個命令,通常用于在OpenWRT系統(tǒng)中以受限制的環(huán)境中執(zhí)行其他程序。它提供了對OpenWRT的沙盒(sandboxing)支持,以增加系統(tǒng)安全性。

-t 5:這是ujail命令的選項之一,表示設置超時時間為5秒。

-n ntpd:指定要運行的程序名稱為"ntpd"。

-U ntp -G ntp:分別指定了新的進程用戶和組,這里將ntpd進程的用戶設置為"ntp",組也設置為"ntp"。

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

-c:表示創(chuàng)建一個新的控制終端。

-u:在后臺運行進程。

-r /bin/ubus -r /usr/bin/env -r /usr/bin/jshn -r /usr/sbin/ntpd-hotplug -r /usr/share/libubox/jshn.sh:這些都是指定了要在沙盒環(huán)境中可用的程序或腳本。

-- /usr/sbin/ntpd -n -N:最后部分是實際要執(zhí)行的命令,包括路徑和參數。這里運行了"/usr/sbin/ntpd"命令,帶有"-n"和"-N"參數。

這個命令的作用是以沙盒環(huán)境中以"ntp"用戶和組的身份運行ntpd(NTP守護進程),并且使用指定的能力配置文件以及相關的必要程序和腳本。

簡單示例

上面稍微詳細介紹了使用,這里我們直接命令簡單執(zhí)行一下,進行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協(xié)議抓?。?/strong>使用wireshark 抓取,用ntp關鍵詞篩選

client請求:

server回應:

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

實際執(zhí)行:大家可以下面看到設備的date查詢中時間更新了:

結語

這就是我自己在openwrt使用ntp的記錄。如果大家有更好的想法,也歡迎大家加我好友交流分享哈。

作者:良知猶存,白天努力工作,晚上原創(chuàng)公號號主。公眾號內容除了技術還有些人生感悟,一個認真輸出內容的職場老司機,也是一個技術之外豐富生活的人,攝影、音樂 and 籃球。關注我,與我一起同行。

推薦器件

更多器件
器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
OPB829CZ 1 TT Electronics Resistors Transistor Output Slotted Switch, 1-Channel, 3.18mm Slot Width, ROHS COMPLIANT, PLASTIC PACKAGE-4
$4.52 查看
IL420-X007T 1 Vishay Intertechnologies Optocoupler Triac AC-OUT 1-CH 600VDRM 6-Pin PDIP SMD T/R
$4.61 查看
DS24B33+T&R 1 Maxim Integrated Products EEPROM, 4KX1, Serial, CMOS, PBCY3, ROHS COMPLIANT, TO-92, 3 PIN
$2.92 查看

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

一個程序員,喜歡寫文章,還喜歡打籃球,也喜歡吉他鋼琴的駁雜之人。日常更新自己,分享包括但不限于C/C++、嵌入式、物聯網、Linux等編程學習筆記,同時,公眾號內包含大量的學習資源。歡迎關注,一同交流學習,共同進步!