ntpd
通常のデーモンを使用して、仮想マシンが実際に実行されておらず、時間がかかっているかどうかをテストしたいと思います。調整時計。
macOSシステムのVirtualBoxでSolaris 11.4(Intel用Oracle標準イメージ)を実行していますが、正しく同期されません。仮想マシンがこれを実行するためにVirtualBox Guest Additionsを使用している可能性があります(これがどのように機能するのかわかりません)、ゲストがそれを実行してタイミングを台無しにする可能性ntpd
があると思いました。
ntpd
これをテストするためにSolaris VMに設定する必要があると思いました。監視装置いくつかのパブリックタイムサーバーですが、なんとかローカルクロックを変更するのを防ぎます。これにより、時間の経過とともに変化を確認して記録し、ローカル時計が実際に正確な時間を維持していることを確認できloopstats
ますpeerstats
。
問題は、ntpd
ローカル時計の調整を停止する方法のヒントが見つからないことです。
私はopenntpd
過去に実際のタイミングのためにOpenBSDによって使用されているシステムでこれをやりたかったです。その後、デーモンはntpd
邪魔することなくバックグラウンドに座って監視できます。しかし、当時はこれを達成する方法も見つかりませんでした。
答え1
エンテフード
あなたについて知っています〜しなければならないntpdを使用するときに私が知っている唯一のオプションは次のとおりです。
NTPの無効化
上から見たようにマニュアルntp.conf
ページntpを無効にできます。フィードバックループあるいは、一般人の観点から言えば、タイムサーバーとローカルクロックの間の時間修正を計算する機能を削除します。ntp.conf
このオプションを有効にするために必要な行は次のとおりです。
disable ntp
注:このオプションを使用すると、時間参照が必要な他のシステムにntpdが提供する時間が正しくないかオフになる可能性があります。外部システムの時間ドリフトを監視したくない場合(外部システムのIP拒否と許可を使用)、1行を使用して他のシステムからのすべての時間クエリを拒否するdeny
ことは合理的です。
メモ:システムクロックが実際にntpdによって「自由に実行される」かどうかは私にとって完全には明確ではありません。ただし、これは文書化されたオプションなので、ntpdが文書化されたオプションに従わない場合はバグです。
クレイジー
minsane minsane
これは、クラスタリングアルゴリズム用の1つ以上の実際のキメラを生成するためにクロック選択アルゴリズムで使用できる最小候補数です。該当数量より少ない数量の場合、時計は規律がなく、自由に動作することができます。。
これはntp.conf
行(in)を設定することによって行われます。たとえば、次のようになります。
tos minsane 100
または他の高い数字(使用可能または使用されているサーバーより大きい)。
注:クロック値の遅い変化を避けるために、カーネルドリフト値をゼロにリセットするかどうかは不明です。カーネル規律機能を無効にするために追加の設定をする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
、(デフォルト)RFC 868時間プロトコルの代わりにSNTP(RFC 2030)を使用してください。印刷その結果、実際の変更は不要です。
ただし、このプログラムは全体の秒(分数ではなく)解像度に制限されています。そして、それSolarisにはオプションはありません
慢性病患者
システムクロックを設定せずに視差テストを実行できるntp(chrony)用の代替パッケージ:
chronyd -Q 'pool pool.ntp.org iburst'
私はこれがインターネットのntp時間とシステム時間の間の時間差を検出(変更しない)する方法だと思います。
答え2
私はこれがntpd
すぐに可能だと思います。
- コアに
ntpd
「3番目」のクロックを保持しません。(最初の2つはシステム時計と鍛造時計)。 - 機能的に
ntpd
言えば、現在時刻を調整するだけでなく、システムクロックの実行速度を制御するパラメータを調整することもできます。。これは、これらの調整の効果を監視するために暗黙的に作成されました。
これら2つをまとめると、ntpdにリアルタイム調整なしでこれらのパラメータの値を正しく維持するモードがある可能性はほとんどありません。ㅏ時計、利用可能な唯一の時計はシステム時計です。
あなたの質問に本当に必要かどうかはわかりませんntpd
。すべての[S]NTPクライアントが可能です。
少しのコードが満足のいくものであれば、システムクロックを再調整しなくてもサーバーをポーリングする何かを一緒に構成できます。
たとえば、Python用のNTPライブラリは次のとおりです。ntplib。 60秒の極オフセットを印刷するスクリプトは次のとおりです。
import ntplib
import sys
import time
def main(*args):
ntp_client = ntplib.NTPClient()
while True:
for server in args:
try:
response = ntp_client.request(server, version=3)
print(response.offset)
time.sleep(60)
except ntplib.NTPException:
print("query failed: {}".format(server))
if __name__ == "__main__":
if len(sys.argv) == 1:
# Do not use this server for commertial software without permission
main('pool.ntp.org')
else:
main(sys.argv[1:])
ファイルに入れてくださいntp_check.py
。 ntplibpip install ntplib
または特定のディストリビューションがインストールされていることを確認してください(apt-get install python3-ntplib
)。次に、次のように呼び出します。
python3 ntp_check.py