第15章 chrony スイートを使用した NTP 設定

IT では、多くの理由で正確な時間の維持が重要です。たとえばネットワーキングでは、正確なタイムスタンプがパケットとログで必要になります。Linux システムでは、NTP プロトコルがユーザースペースで実行しているデーモンにより実装されます。
ユーザースペースのデーモンは、カーネルで実行しているシステムクロックを更新します。システムクロックは、数々のクロックソースを利用することで時間を維持できます。通常使用されるのは、タイムスタンプカウンター (TSC) です。TSC は、最後にリセットされてからのサイクル数を数える CPU レジスターです。これは非常に高速で精度が高く、割り込みがありません。
ntpdchronyd というデーモンの選択が可能で、これらはそれぞれ ntpchrony のパッケージから利用できます。本セクションでは、従来の常にネットワーク接続されている専用サーバーのカテゴリーに当てはまらないシステム上のシステムクロックを、chrony スイートのユーティリティーを使って更新する方法を説明します。

15.1. chrony スイートの概要

Chrony は、ユーザースペースで実行するデーモンである chronyd と、chronyd を調整するコマンドラインプログラムである chronyc で構成されています。常時接続でない、または常時電源が付いていないシステムでは、ntpd を使ったシステムクロックの調整は、比較的時間がかかります。これは、多くの小さな修正がクロックのずれと補正の観測に基づいてなされるためです。温度変化はシステムの電源を入れる際に大きくなる場合がありますが、これはハードウェアクロックの安定性に影響します。調節はシステムの起動のほんの数千秒以内に始まりますが、正確性についての許容範囲の幅としては、機器が温まっている場合の再起動では 10 秒、または要件や操作環境、およびハードウェアによっては数時間の時間がかかる可能性もあります。chrony は、ntpd とは異なる NTP プロトコルの実装で、システムクロックをより迅速に調整することが可能です。

15.1.1. ntpd と chronyd の違い

ntpdchronyd の大きな違いの 1 つは、コンピューターのクロックを管理するために使われるアルゴリズムにあります。chronydntpd よりも優れている点は、以下のとおりです。
  • chronyd は外部の時間参照が断続的にアクセス可能な場合でも機能しますが、ntpd が機能するには、規則的な時間参照のポーリングが必要になります。
  • chronyd はネットワークの混雑が長時間にわたる場合でも機能します。
  • chronyd のクロックの同期は通常より高速で、時間の正確性もより高いものです。
  • chronyd は、水晶振動子の温度変化などによってクロックのレートが突然変更しても素早く適応します。一方、ntpd の場合は、落ち着くまでに長時間かかる場合があります。
  • chronyd はデフォルト設定では、他の実行中のプログラムを乱さないように、クロックがシステム起動時に同期された後は、時間を更新しません。ntpd も時間を更新しないように設定できますが、クロックの調整に異なる手段を用いる必要があり、これは不利益となる面があります。
  • chronyd は Linux 上のクロックのレートを幅広い範囲で調整できるため、たとえば仮想マシン上など、壊れたクロックもしくは不安定なクロックのあるマシン上でも操作が可能になります。
chronyd では可能で、ntpd ではできない点は、以下のとおりです。
  • chronyd は、時間修正の方法が手動での入力のみという分離したネットワークのサポートを提供します。たとえば、管理者がクロックを見ている場合などです。chronyd は、異なる更新で修正されたエラーを見てコンピューターが時間を進めたり遅らせたりするレートを予測し、これを使ってコンピュータークロックを調整することができます。
  • chronyd は、コンピューターの電源を切った際に時間を維持するハードウェアクロックを進めたり遅らせたりするレートを計算するためのサポートを提供します。システムが起動して、リアルタイムのクロックから取ってきた時間の調整された値を使ってシステム時間を設定する際に、このデータを使うことができます。このガイドの執筆時点でこれが可能なのは、Linux のみです。
ntpd では可能で chronyd ではできない点は、以下のとおりです。
  • ntpd は完全に NTP バージョン 4 (『RFC 5905』) をサポートします。これには、ブロードキャスト、マルチキャスト、manycast のクライアントおよびサーバー、さらに孤立モードが含まれます。また、公開鍵の暗号化に基づく特別の認証スキームもサポートします (『RFC 5906』)。chronydNTP バージョン 3 (『RFC 1305』) を使用します。これは、バージョン 4 と互換性があります。
  • ntpd には多くの参照クロック用のドライバーが含まれていますが、chronydgpsd などの他のプログラムに依存して参照クロックからデータにアクセスします。

15.1.2. NTP デーモンの選択

  • Chrony は、頻繁にネットワーク接続が一時停止したり、断続的に切断され再接続されるようなシステムの場合に検討してください。たとえば、モバイルや仮想システムなどです。
  • NTP デーモン (ntpd) は、通常、常時接続のシステムの場合に検討してください。ブロードキャストまたはマルチキャスト IP を使用する必要のあるシステム、または Autokey プロトコル でパケット認証を実行する必要のあるシステムの場合は、ntpd の使用を検討してください。Chrony は、MD5、SHA1、またはより強力なハッシュ機能のあるメッセージ認証コード (MAC) を使用した対称鍵認証のみをサポートしますが、ntpd は PKI システムの活用も可能な Autokey 認証プロトコルもサポートします。Autokey は 『RFC 5906』 で説明されています。