私のNTPが更新されないのはなぜですか?

私のNTPが更新されないのはなぜですか?

Debainコンソールのみを含むシステムがあります。

ちょうど時計が更新されないことに気づきました。

$ date
Mon 10 Aug 20:33:23 BST 2020

$ ntpdate
10 Aug 20:27:45 ntpdate[8029]: no servers can be used, exiting

$ ntpdate-debian
10 Aug 20:28:20 ntpdate[8038]: the NTP socket is in use, exiting

$ sudo ntpdate
10 Aug 20:33:53 ntpdate[8371]: no servers can be used, exiting

$ sudo ntpdate-debian
10 Aug 20:28:20 ntpdate[8038]: the NTP socket is in use, exiting

事実:

  • 誤った設定のため、ntpdateは機能しません(後で設定を確認してください)。
  • ソケットが使用中のため、ntpdate-debinは機能しません(ntpサービスが実行されています)。

「ntpサービス」を停止した後:

$ sudo service ntp stop
$ sudo ntpdate
10 Aug 20:33:53 ntpdate[8371]: no servers can be used, exiting
$ sudo ntpdate-debian
1 Apr 17:25:24 ntpdate[8383]: step time server a.b.c.d offset 83278265.128578 sec
$ sudo service ntp start

ご覧のとおり、ntpサービスを停止してもntpdate実行できませんが、ntpdate-debian最終的に正しい日付を設定できます。

「ntpサービス」がバックグラウンドで自動的にタスクを実行するように、次の設定をどのように変更できますか?

driftfile /var/tmp/ntp/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
pool 0.europe.pool.ntp.org iburst
pool 1.europe.pool.ntp.org iburst
pool 2.europe.pool.ntp.org iburst
pool 3.europe.pool.ntp.org iburst
server 0.debian.pool.ntp.org
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict ::1
restrict source notrap nomodify noquery

私の設定に問題がありますか?手動で実行すると動作する「0.debian.pool.ntp.org」も含まれています。

ntpdate -q 0.debian.pool.ntp.org

ベストアンサー1

Debianのバージョンについては言及していませんが、Debian 10(buster現在「oldstable」)以下のようです。 NTPコードの状態は、NTPファミリの主要開発者が引退した後に停滞しました(David L. Mills、84)。

Debian 11がリリースされたとき、2つの最新のアップストリームバージョンはかなり古く、いくつかの既知のセキュリティの脆弱性があっntpdatentpdため、Debian 11は最終的に最新のNTP実装を推奨しましたchrony。しかし、クラシックntpdatentpd

使用される唯一の構成ファイル/usr/sbin/ntpdateはです/etc/ntp.keys。他のすべてのファイルは、コマンドラインまたは呼び出されたスクリプトで指定する必要があります/usr/sbin/ntpdate

ntpdate-debian/etc/default/ntpdateその中に設定されたタイムサーバを読み込んで使用するスクリプトです。

/etc/ntp/ntp.confNTPサービス(プロセス)にのみ適用されますntpd

ntpdatesudo ntpdate他のパラメータがないと、ntpdateこのように呼び出すときにどのサーバーを使用するのかわからないため、エラーは正常で予期されているように見えます。

およびntpdate( ntpd=ntp サービス) は両方ともローカル UDP ポート 123 を使用しようとするため、同時に両方を実行することはできません。どちらかでなければなりません。これは、sudo ntpdateNTPサービスが停止した場合にのみ機能する理由を説明します。 UDP ポート番号は 1024 未満なので、root 権限がないとこのポートを使用できません。

コンテンツが表示されていないため、/etc/default/ntpdateどのサーバーを使用したのか推測できませんが、NTPサービスを停止した後は機能しているようです。引数なしで実行すると、ntpdate同期に使用するNTPサーバーは指定されませんsudo

システム時間は次のとおりであるため、NTPサービスは時計を同期できません。方法(何年も!)本当ではありません。デフォルトでは、NTPサービス(= process ntpd)にはセキュリティ制限があり、約+ / - 1000秒のようです。システム時間がこの範囲を超えている場合は、修正しようとしないntpdであろう。長いジャンプは、データベースが時間を管理する他のソフトウェアに問題を引き起こす可能性があります。システム時計をおおよその現在時刻に似て作成し、それをntpd同期できるようにすることはシステム管理者の責任です。

ntpdこのオプションから始めると、最初の調整-g(のみ!)が1000秒の安全制限より大きくなる可能性があります。システムがDebian 10のデフォルト設定を使用している場合は、サービスを起動するときにこのオプションを使用するように求められ/etc/default/ntpます。このような設定がある場合は、NTPサービス()を停止して再起動するだけで時間を変更できます。 1年以上調整を拒否する最終完全性検査がない限り。NTPD_OPTS='-g'ntpdsudo service ntp stop; sudo service ntp startntpd

(このデフォルトは実際に時間に敏感なアプリケーションを実行している場合はDebian 10のNTPサービスを再起動するのが少し危険です。他のディストリビューションは2つの別々のサービスを提供することでこの問題を解決します。1つはブートサービスの初期で実行され、大規模なntpdate調整が可能です。開始する前に、必要に応じて増分調整のみを実行すると、いつでもntpdサービスを再起動する方が安全になります。)ntpd

システムがPCに似たx86ハードウェアを使用し、バッテリ駆動のリアルタイムクロック(RTC、「BIOSクロック」とも呼ばれる)を使用できると仮定すると、RTCが正確な時間を得るためにポストタスクをsudo hwclock --systohc --utc実行する必要があります。sudo ntpdate-debianRTCが低精度で動作している場合は、システムが完全に同期できるように、システムのntpdシャットダウン時にシステム時間を安全な制限内に保つ必要があります。ntpd

おすすめ記事