Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

IT では、多くの理由で正確な時間の維持が重要です。たとえばネットワーキングでは、正確なタイムスタンプがパケットとログで必要になります。Linux システムでは、NTP プロトコルがユーザースペースで実行しているデーモンにより実装されます。
ユーザースペースのデーモンは、カーネルで実行されているシステムクロックを更新します。システムクロックは様々なクロックソースを使用して時間を維持しています。一般に使用されるのは Time Stamp Counter (TSC) です。TSC は、最後にリセットされた時点からのサイクル数を計測する CPU レジスタです。非常に高速で高い分解能を持ち、中断も発生しません。
デーモンは、ntpchrony の各パッケージにあるリポジトリーで利用できる ntpd デーモンと chronyd デーモンから選びます。
本章では、chrony スイートの使い方について説明します。

17.1. chrony スイートの概要

Chrony は、ネットワークタイムプロトコル (NTP) の実装です。Chrony を使用すると以下のことが行えます。
  • システムクロックを NTP サーバーと同期する
  • システムクロックを GPS レシーバーなどの基準クロックと同期する
  • システムクロックをマニュアルの時間入力と同期する
  • ネットワーク内の他のコンピューターにタイムサービスを提供する NTPv4(RFC 5905) サーバーまたはピアとして
Chrony は、ネットワーク接続が頻繁に切断される、ネットワークの混雑が長時間続く、温度が変わる (一般的なコンピューターのクロックは温度に敏感) といった様々な条件下や、継続的に実行されない、または仮想マシンで実行されているといったシステムにおいても、良好に動作します。
インターネット上で同期している 2 つのマシン間の一般的精度は数ミリ秒以内、LAN 上のマシン間では数十マイクロ秒以内です。ハードウェアタイムスタンプまたはハードウェア基準クロックは、同期している 2 つのマシン間の精度をサブマイクロ秒レベルにまで高めることができます。
Chrony は、ユーザースペースで実行されるデーモンの chronyd と、chronyd のパフォーマンスを監視したり様々なオペレーティングパラメーターをその実行中に変更したりすることに使用できるコマンドラインプログラム chronyc から構成されています。

17.1.1. ntpd と chronyd の違い

chronydntpd よりも優れている点として、以下が挙げられます。
  • chronyd は、時間参照へのアクセスが途切れやすい環境でも良好に機能します。一方 ntpd は、良好に機能するためには時間参照の定期的なポーリングを必要とします。
  • chronyd はネットワークの混雑が長時間にわたる場合でも機能します。
  • chronyd は通常、クロックをより高速に、より高い精度で同期できます。
  • chronyd は、水晶振動子の温度変化などによってクロックのレートが突然変更しても素早く適応します。一方、ntpd の場合は、落ち着くまでに時間がかかる場合があります。
  • デフォルトの設定では、chronyd は、実行中の他のプログラムを混乱させないようにするため、システムの起動時にクロックを同期した後は時間をステップしません。ntpd も時間をステップしないように設定することは可能ですが、そうするとクロックの調整に異なる方法を用いなければならず、それによってクロックの精度にマイナスの影響が出るというデメリットがあります。
  • chronyd は Linux 上のクロックのレートを幅広い範囲で調整できるため、たとえば仮想マシン上など、壊れたクロックもしくは不安定なクロックのあるマシン上でも操作が可能になります。
  • chronyd の方が小型でメモリ使用量が少なく、必要なときだけ CPU を起動させるので、省電力性に優れています。
chronyd では可能で、ntpd ではできない点は、以下のとおりです。
  • chronyd は、時間補正の方法がクロックを監視している管理者などによる手動入力のみである隔離されたネットワークにサポートを提供します。chronyd は、異なる更新時に修正されたエラーを検証し、コンピューターの時刻が進んだり遅れたりする時点のレートを予測して、この予測を使用してその後のコンピュータークロックの調整を行います。
  • chronyd は、たとえばコンピューターの電源を切った後も作動し続けるクロックのような、リアルタイムクロックの時間の増減率の計算をサポートしています。このデータがあれば、システムの起動時に、リアルタイムクロックから取得した適合された時間の値を使用してシステム時間を設定できます。これらのリアルタイムクロック機能が利用できるのは、現在 Linux のシステムのみです。
  • chronyd は Linux のハードウェアタイムスタンプに対応しており、ローカルネットワークにおける非常に精度の高い同期を可能にしています。
ntpd では可能で chronyd ではできない点は、以下のとおりです。
  • ntpd は、ブロードキャスト、マルチキャスト、メニーキャストのクライアントやサーバーなど、NTP バージョン 4 (『RFC 5905』) のすべてのオペレーティングモードに対応しています。ただし、ブロードキャストとマルチキャストの各モードは、認証はされても、本来、一般的なサーバーやクライアントのモードと比べて精度と安全性が低いため、通常は回避することが推奨されます。
  • ntpd は、公開鍵暗号でサーバーを認証する Autokey プロトコル (『RFC 5906』) に対応します。ただし、このプロトコルは安全性が低いことが実証されており、将来 Network Time Security (NTS) 仕様の実装に置き換えられる可能性があるため注意してください。
  • ntpd には多くの基準クロックのドライバーが含まれています。一方の chronyd は、共有メモリー (SHM) または Unix ドメインソケット (SOCK) を使用して基準クロックのデータにアクセスするために、gpsd のような他のプログラムに依存しています。

17.1.2. NTP デーモンの選択

Chrony は、chrony に対応していないツールで管理または監視されているシステムや、chrony と互換性のないハードウェア基準クロックを搭載しているシステムを除いた、すべてのシステムに推奨されます。

注記

chronydAutokey プロトコルをサポートしていないため、このプロトコルを使ってパケット認証を行う必要があるシステムには ntpd しか使用できません。Autokey プロトコルには重大なセキュリティ上の問題があるため、使用を回避することが推奨されます。煮ん主には、Autokey ではなく、対称鍵を使用してください。この方法は、chronydntpd の両方が対応しています。Chrony は SHA256 や SHA512 といったより強力なハッシュ関数に対応しています。一方、ntpd が使用できるのは MD5 と SHA1 のみです。