在NTS授時狀態(tài)監(jiān)控系統(tǒng)的同步日志頁面中,記錄著所有客戶端向NTS服務(wù)器校時的日志信息,我們可以看到有些同步日志中的客戶端時間是隨機的。如下圖所示:
經(jīng)過統(tǒng)計后得知,隨機時間的客戶端均是centos7(redhat7)及以上版本的Linux系統(tǒng),centos6.5及以下版本中客戶端同步時間均是正常的。我們都知道Linux7之前的版本同步時間用的是ntpd服務(wù)
,Linux7以及7之后的版本都改用chrony
了,兩者區(qū)別參考:https://chrony.tuxfamily.org/comparison.html。
在centos7.9的測試環(huán)境中對123端口進(jìn)行抓包后發(fā)現(xiàn),客戶端發(fā)送給服務(wù)器的NTP包中,transmit
timestamp(T3)的時間戳是隨機的,同時,服務(wù)器收到客戶端請求后,原封不動的將時間賦值給origin
timestamp(T1),如下圖所示:(時間戳參考文末附1)
但是這種情況在使用ntpdate
同步本地時間時并不存在,時間都是正確的:
經(jīng)過抓包后,可以初步確定問題出現(xiàn)在chrony上了。經(jīng)過查詢資料發(fā)現(xiàn),自chrony2.3
開始不顯示客戶端數(shù)據(jù)包中的本地時間和同步狀態(tài),這個版本是2016年2月16日發(fā)布的。參考:https://chrony.tuxfamily.org/news.html
而centos7.9的測試環(huán)境中,chrony的版本是3.4。
但是,chrony2.3版本更新記錄中,只是說明不再顯示客戶端數(shù)據(jù)包中的本地時間和同步狀態(tài),但是沒說明本地時間為什么是隨機的。
經(jīng)過查詢資料發(fā)現(xiàn),chrony與NTP對比官方文檔的安全性對比表格中,有關(guān)于隨機時間戳的說明,如下圖所示
同時RFC5905(NTPv4)中也給出了隨機時間戳的說明:雖然該備忘錄要求客戶端數(shù)據(jù)包中的大部分字段設(shè)置為零,但發(fā)送時間戳應(yīng)該是隨機的。這個決定是出于安全和隱私的動機。在沒有密碼認(rèn)證的情況下,驗證原始時間戳是客戶端對NTP響應(yīng)進(jìn)行盲欺騙的主要防御手段。因此,客戶端的傳輸時間戳不可預(yù)測是很重要的。
chrony官方為了安全考慮,從chrony2.3起不在客戶端數(shù)據(jù)包中顯示本地時間和同步狀態(tài),即客戶端發(fā)起NTP校時的數(shù)據(jù)包中的本地時間直接被賦值為隨機時間,這樣NTP服務(wù)器收到客戶端的校時請求后,經(jīng)過解析后保存同步日志,我們看到的客戶端時間就是一個隨機時間。
根據(jù)上面的分析可得出:
使用chrony2.3及以上版本作為同步服務(wù)的系統(tǒng),客戶端時間(T1)均是隨機時間戳。
一些遵循NTPv4(RFC5905)協(xié)議開發(fā)的時間同步工具,客戶端時間(T1)均是隨機時間戳。
Linux7及以下版本系統(tǒng)使用的同步服務(wù)是ntpd,客戶端時間(T1)是客戶端本地時間。
NTS授時狀態(tài)監(jiān)控系統(tǒng)同步日志中的客戶端時間只是將T1時間戳展示出來,作為對客戶端進(jìn)行同步超時告警和客戶端時間偏差告警時的參考依據(jù)。所以,當(dāng)客戶端時間隨機化后,NTS授時狀態(tài)監(jiān)控系統(tǒng)將無法對此類客戶端進(jìn)行同步超時告警和時間偏差告警。
目前可以先將chrony的版本降低至chrony2.2.1,這樣可保證正常監(jiān)控客戶端時間偏差。后續(xù)我們會繼續(xù)對NTS授時狀態(tài)監(jiān)控系統(tǒng)進(jìn)行升級,屆時可不降低chrony版本的同時監(jiān)控高版本的Linux客戶端。
一個完整的NTP協(xié)議校時請求數(shù)據(jù)包中有4個時間戳(T1、T2、T3、T4),分別表示:
起源時間戳 T1(origin timestamp):請求離開服務(wù)器時在客戶端的時間,即:請求數(shù)據(jù)包離開客戶端時,客戶端本地時間
接收時間戳 T2(receive timestamp):請求從客戶端到達(dá)時在服務(wù)器的時間,即:請求數(shù)據(jù)包到達(dá)服務(wù)器時,服務(wù)器本地時間
發(fā)送時間戳 T3(transmit timestamp):響應(yīng)離開客戶端時在服務(wù)器的時間,即:響應(yīng)數(shù)據(jù)包離開服務(wù)器時,服務(wù)器本地時間
目的地時間戳 T4(destination timestamp):響應(yīng)到達(dá)客戶端時在客戶端的時間,即:響應(yīng)數(shù)據(jù)包到達(dá)客戶端時,客戶端本地時間
通過這4個時間戳可以得出:
網(wǎng)絡(luò)延遲: delay=(T4-T1)-(T3-T2)
客戶端時間偏差: offset=((T2-T1)+(T3-T4))/2
上一篇:AIX主機配置時間同步的方法
下一篇:大華攝像頭時間同步配置方法