使用 ntpd 監控時間漂移,但不用於調整
我想使用通用
ntpd
守護程序來測試虛擬機是否保持時間,而不讓它實際調整時鐘。我在 macOS 系統上的 VirtualBox 中執行 Solaris 11.4(Oracle 的英特爾標準映像),但我無法獲得正確同步的時間。讓我感到震驚的是,VM 很可能已經在使用 VirtualBox Guest Additions 來執行此操作(我不知道這是如何工作的),並且我可能會因為
ntpd
在來賓中執行而擾亂了時間保持。為了測試這一點,我想我
ntpd
應該在 Solaris VM 中設置來監控一些公共時間伺服器,但不知何故阻止它修改本地時鐘。這樣我就可以查看loopstats
和peerstats
日誌如何隨著時間的推移而查看本地時鐘是否真的保持良好的時間。問題是我找不到任何關於如何停止
ntpd
調整本地時鐘的提示。我過去也想在我使用
openntpd
(來自 OpenBSD)進行實際計時的系統上執行此操作。然後,ntpd
守護程序可以坐在後台進行監控,而不會干擾。但是我當時也找不到任何方法來實現這一點。
ntpd
了解您必須使用 ntpd,AFAIK 的唯一選項是:
禁用ntp
如手冊頁所示,
ntp.conf
有可能禁用 ntp回饋循環,或者用外行的話來說:刪除計算時間伺服器和本地時鐘之間時間校正的能力。ntp.conf
啟動此類選項所需的行是:disable ntp
注意:使用此選項時,ntpd 可能給其他系統要求時間參考的時間可能是錯誤的/關閉的。使用一行
deny
來拒絕來自其他系統的所有時間查詢似乎是合理的,除非您想監視來自外部系統的時間漂移(使用拒絕並允許外部系統的 IP)。**注意:**我並不完全清楚 ntpd 實際上讓系統時鐘“自由執行”。但是,它是一個記錄的選項,因此如果 ntpd 不符合記錄的內容,則它是一個錯誤。
敏思
minsane minsane
這是時鐘選擇算法可用的最小候選數,以便為分群算法生成一個或多個真嵌合體。如果可用的數量少於此數量,則時鐘不受約束並允許自由執行。
這是通過設置一行( in
ntp.conf
)來完成的,例如:tos minsane 100
或其他一些高數字(大於可用或使用的伺服器)。
注意:我不清楚核心漂移值是否被重置為 0 以避免時鐘緩慢改變值。
disable kernel
額外設置禁用核心規程功能可能是合理的。有關的
ntpd -qn
當
ntpd
伺服器執行時ntpq -pn
,可以報告 ntpd 伺服器在保持系統時鐘同步方面的工作情況。這是記錄時差的另一種方法。ntpdate -q
該軟體包
ntpdate
(標記為已棄用)可用於檢查時差:ntpdate -q 'pool.ntp.org' # marked as deprecated.
使用
ntpdate -qu 'pool.ntp.org'
該命令不需要 root 權限即可執行(-u
意味著“使用非特權網路埠”,但執行檔必須可供使用者訪問)。sntp
有一個簡單的程序可以查詢(如果沒有使用 -s 或 -S 選項,則不會更改):
sntp pool.ntp.org
日期
該程序
rdate
能夠顯示遠端時間(和本地時間):rdate -np pool.ntp.org; date
其中
-n
意味著:使用 SNTP (RFC 2030) 而不是(預設)RFC 868 時間協議;並且,只列印結果而不進行任何實際更改。但是,此程序僅限於整秒(而不是分數)的解析度。而且,它在 solaris 中沒有選項
計時碼表
ntp(chrony)的替換包可以在不設置系統時鐘的情況下執行時差測試:
chronyd -Q 'pool pool.ntp.org iburst'
我相信這些都是檢測(不改變)網際網路ntp時間和系統時間之間時間差的方法。