Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
第18章 chrony スイートを使用した NTP 設定
IT では、多くの理由で正確な時間の維持が重要です。たとえばネットワーキングでは、パケットとログのタイムスタンプが正確であることが必要になります。Linux システムでは、NTP
プロトコルがユーザー領域で実行しているデーモンにより実装されます。
ユーザー領域のデーモンは、カーネルで実行しているシステムクロックを更新します。システムクロックは、さまざまなクロックソースを使用して時間を維持します。一般的に使用されるのは Time Stamp Counter (TSC) です。TSC は、最後にリセットされた時点からのサイクル数を計測する CPU レジスターです。非常に高速でハイレゾリューションであり、中断も発生しません。
デーモンは、ntp と chrony の各パッケージにあるリポジトリーで利用できる ntpd
デーモンと chronyd
デーモンから選びます。
本章では、chrony スイートの使い方について説明します。
18.1. chrony スイートの概要
Chrony は Network Time Protocol (NTP) の実装です。Chrony を使用すると、以下のことができます。
-
システムクロックを、
NTP
サーバーと同期する - システムクロックを、GPS レシーバーなどの基準クロックと同期する
- システムクロックを、手動で入力した時間と同期する
-
ネットワーク内の他のコンピューターにタイムサービスを提供する
NTPv4(RFC 5905)
サーバーまたはピアとして
chrony は、ネットワーク接続が頻繁に切断される、ネットワークの混雑が長時間続く、温度が変わる (一般的なコンピューターのクロックは温度に敏感) といったさまざまな状況や、継続して実行されない、または仮想マシンで実行されているといったシステムにおいても、良好に動作します。
インターネット上で同期している 2 つのマシン間の一般的精度は数ミリ秒以内、LAN 上のマシン間では数十マイクロ秒以内です。ハードウェアのタイムスタンプまたはハードウェア基準クロックは、同期している 2 つのマシン間の精度をサブマイクロ秒レベルにまで高めることができます。
chrony は、ユーザー領域で実行する chronyd
と、chronyd
のパフォーマンスを監視し、実行時にさまざまなオペレーティングパラメーターを変更するのに使用できるコマンドラインプログラムである chronyc で設定されます。
18.1.1. ntpd と chronyd の相違点
chronyd
が ntpd
よりも優れている点として、以下が挙げられます。
-
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 のような他のプログラムに依存しています。
18.1.2. NTP デーモンの選択
Chrony は、chrony に対応していないツールで管理または監視されているシステムや、chrony と互換性のないハードウェア基準クロックを搭載しているシステムを除いた、すべてのシステムに推奨されます。
chronyd
は Autokey
プロトコルをサポートしていないため、このプロトコルを使ってパケット認証を行う必要があるシステムには ntpd
しか使用できません。Autokey
プロトコルには重大なセキュリティー上の問題があるため、使用を回避することが推奨されます。Autokey
の代わりに、chronyd
と ntpd
の両方に対応している、対称鍵を使用してください。Chrony は SHA256 や SHA512 といったより強力なハッシュ関数に対応しています。一方、ntpd
が使用できるのは MD5 と SHA1 のみです。