加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • ntp是什么
    • 客戶端啟ntp服務(wù)器
    • openwrt服務(wù)端開啟ntp服務(wù)器下發(fā)功能
    • 簡單示例
    • 結(jié)語
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

openwrt中時(shí)間同步ntp使用

03/15 11:20
4970
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

作者:羽林君,轉(zhuǎn)載授權(quán)以及圍觀:歡迎關(guān)注微信公眾號(hào):羽林君,或者添加作者個(gè)人微信:become_me

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

ntp是什么

NTP(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議)是由RFC 1305定義的時(shí)間同步協(xié)議,用來在分布式時(shí)間服務(wù)器和客戶端之間進(jìn)行時(shí)間同步。NTP基于UDP報(bào)文進(jìn)行傳輸,使用的UDP端口號(hào)為123。

使用NTP的目的是對網(wǎng)絡(luò)內(nèi)所有具有時(shí)鐘的設(shè)備進(jìn)行時(shí)鐘同步,使網(wǎng)絡(luò)內(nèi)所有設(shè)備的時(shí)鐘保持一致,從而使設(shè)備能夠提供基于統(tǒng)一時(shí)間的多種應(yīng)用。

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

關(guān)于NTP原理分析,有人寫的很詳細(xì),這里貼一個(gè)連接:https://www.cnblogs.com/lsgxeva/p/16587984.html

客戶端啟ntp服務(wù)器

我們可以在界面直接選中Enable NTP client,在下方填寫自己需要的ntp同步的網(wǎng)站(具體網(wǎng)址可以自行搜索),然后openwrt就會(huì)幫你啟動(dòng)配置好網(wǎng)站的命令。

上面默認(rèn)123端口,當(dāng)然我們也可以在配置文件中指定NTP服務(wù)器的端口,在OpenWRT中,常見的NTP客戶端是"ntpd",其配置文件通常位于"/etc/ntp.conf"或"/etc/config/system"等位置:

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

在這個(gè)示例中,"port 123" 指定了NTP服務(wù)器的端口為123。請注意,大多數(shù)情況下,無需手動(dòng)指定端口,因?yàn)镹TP客戶端會(huì)默認(rèn)使用標(biāo)準(zhǔn)的UDP端口123與NTP服務(wù)器通信。一般情況下,默認(rèn)的UDP端口123對于NTP時(shí)間同步已經(jīng)足夠了。

下面是寫好了同步網(wǎng)站后openwrt啟動(dòng)的命令,填寫NTP網(wǎng)站,大家把網(wǎng)站前面序號(hào)去掉

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?

這個(gè)命令是在OpenWRT系統(tǒng)中用于啟動(dòng)ntpd(NTP守護(hù)進(jìn)程)的命令,具體解釋如下:

/usr/sbin/ntpd

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

-n:表示以前臺(tái)方式運(yùn)行,通常用于調(diào)試目的。

-N:表示不進(jìn)行守護(hù)進(jìn)程化,通常也是為了調(diào)試目的。

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

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

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

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

選中provide NTP server即可開啟路由器ntp服務(wù)器同步功能。

啟動(dòng)openwrt的ntp服務(wù)器后,原生的openwrt會(huì)幫你啟動(dòng)這樣命令:

{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?

這個(gè)命令是在OpenWRT系統(tǒng)中用于啟動(dòng)ntpd(NTP守護(hù)進(jìn)程)的命令,具體解釋如下:

**{ntpd}**:一個(gè)占位符,用于指代命令名稱,實(shí)際上應(yīng)該替換為"ntpd"。

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

-t 5:這是ujail命令的選項(xiàng)之一,表示設(shè)置超時(shí)時(shí)間為5秒。

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

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

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

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

-u:在后臺(tái)運(yùn)行進(jìn)程。

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

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

簡單示例

上面稍微詳細(xì)介紹了使用,這里我們直接命令簡單執(zhí)行一下,進(jìn)行NTP同步。服務(wù)端:

/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關(guān)鍵詞篩選

client請求:

server回應(yīng):

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

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

結(jié)語

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

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AT27C512R-12PC 1 Atmel Corporation OTP ROM, 64KX8, 120ns, CMOS, PDIP28, 0.600 INCH, PLASTIC, DIP-28
$2.63 查看
SN74AHC1G14DCKT 1 Texas Instruments Single 2-V to 5.5-V inverter with Schmitt-Trigger inputs 5-SC70 -40 to 125

ECAD模型

下載ECAD模型
$0.9 查看
ABLS-LR-3.000MHZ-T 1 Abracon Corporation CRYSTAL 3.0000MHZ 18PF SMD
$3.11 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

一個(gè)程序員,喜歡寫文章,還喜歡打籃球,也喜歡吉他鋼琴的駁雜之人。日常更新自己,分享包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習(xí)筆記,同時(shí),公眾號(hào)內(nèi)包含大量的學(xué)習(xí)資源。歡迎關(guān)注,一同交流學(xué)習(xí),共同進(jìn)步!