Show Table of Contents
17.2. chrony の概要および設定
17.2.1. chronyd の概要
chrony のデーモンである
chronyd は、コマンドラインユーティリティーの chronyc を使って監視と管理を行います。このユーティリティーは、chronyd の現在の状態にクエリを実行しその設定に変更を加えるための、多数のコマンドの入力を可能にするコマンドプロンプトを提供しています。デフォルトでは、chronyd は chronyc のローカルインスタンスのコマンドのみを受け付けますが、リモートホストから監視コマンドを受け付けるように設定することも可能です。リモートアクセスは制限を設けることが推奨されます。
17.2.2. chronyc の概要
chrony のデーモンである
chronyd は、コマンドラインユーティリティーを使って管理します。このユーティリティーは、chronyd の現状にクエリを実行しその設定に変更を加える、多数のコマンドの入力を可能にするコマンドプロンプトを提供しています。デフォルトの設定では、chronyd は chronyc のローカルインスタンスのコマンドのみを受け付けますが、リモートホストから監視コマンドを受け付けるように設定することも可能です。リモートアクセスは、制限を付けることが推奨されます。
17.2.3. chrony 設定コマンドの概要
chronyd のデフォルトの設定ファイルは /etc/chrony.conf です。-f オプションは、代替の設定ファイルのパスを指定するときに使用します。その他のオプションについては chronyd の man ページをご覧ください。使用できるディレクティブの一覧は 『http://chrony.tuxfamily.org/manual.html#Configuration-file』 をご覧ください。
以下は、
chronyd の設定オプションの一例です。
- コメント
- コメントの前には、#、%、;、または ! を付けます。
- allow
- オプションとして、
NTPサーバーとして動作しているマシンへの接続が許可されるNTPの接続元となるホスト、サブネット、またはネットワークを指定します。デフォルトでは、接続は許可されません。例:
allow 192.0.2.0/24
特定のネットワークへのアクセスを許可するときにこのコマンドを使用します。allow 2001:0db8:85a3::8a2e:0370:7334
IPv6へのアクセスを許可するときにこのコマンドを使用します。
- UDP ポート番号 123 は、クライアントアクセスを可能にするため、ファイアウォールで開いておく必要があります。
~]#
firewall-cmd --zone=public --add-port=123/udpポート 123 を永続的に開きたいときは、--permanentオプションを使用します。~]#
firewall-cmd --permanent --zone=public --add-port=123/udp - cmdallow
- これは
allowディレクティブ (allowセクションを参照) と似ていますが、特定のサブネットやホストに (NTPクライアントアクセスではなく) 制御アクセスを許可します。(「制御アクセス」 とは、chronyc がこれらのホスト上で実行可能であり、このコンピューター上でchronydに正常に接続できることを意味します。) 構文は同じです。また、cmdallow allディレクティブと動作が似通っているcmddeny allディレクティブもあります。 - dumpdir
chronydの再起動にまたがる測定履歴を保存するディレクトリーへのパスです (この実行中にシステムクロックの動作が変更されていないことを想定しています)。この機能が (設定ファイルのdumponexitコマンド、または chronycdumpコマンド経由で) 使用される場合は、dumpdirコマンドを使って測定履歴が保存されるディレクトリーを定義してください。- dumponexit
- このコマンドが存在する場合は、プログラムの終了時に常に記録された時間ソースの測定履歴を
chronydが保存すべきということを示しています (上記のdumpdirコマンドを参照)。 - hwtimestamp
hwtimestampディレクティブは、ハードウェアタイムスタンプの非常に精度の高い同期を可能にします。詳細はchrony.conf(5)のマニュアルページをご覧ください。- local
localキーワードは、chronydに現行の同期ソースがない場合でも、(クライアントがポーリングしているという観点で) リアルタイムに同期しているように見えるようにします。このオプションは通常、分離されたネットワーク上の 「master」 コンピューターで使用され、ここではいくつかのコンピューターが相互に同期する必要があり、「master」 は手動入力でほぼリアルタイムと一致します。コマンド例:local stratum 10
10 という大きな値が示しているのは、参照しているクロックからのホップ数が非常に多いので時間の信頼性がかなり低い、ということです。参照クロックに最終的に同期している別のコンピューターにアクセスのあるコンピューターは、確実に 10 よりも下の階層に存在することになります。このため、10 のように高い値をlocalコマンドに選ぶと、リアルサーバーの視認性があるクライアントにリークしたとしても、マシン自体の時間がリアルタイムと混乱することを防ぎます。- log
logコマンドは、特定情報がログ記録されることを意味します。以下のオプションを取ります。ログファイルは、- measurements
- このオプションは、生の
NTP測定と関連情報をmeasurements.logと呼ばれるファイルにログ記録します。 - statistics
- このオプションは、回帰処理についての情報を
statistics.logと呼ばれるファイルにログ記録します。 - tracking
- このオプションは、システムが進むまたは遅れるレートの予測に対する変更、およびなされたスルーを
tracking.logと呼ばれるファイルにログ記録します。 - rtc
- このオプションは、システムのリアルタイムクロックについての情報をログ記録します。
- refclocks
- このオプションは、生およびフィルター処理された参照クロックの測定を
refclocks.logと呼ばれるファイルにログ記録します。 - tempcomp
- このオプションは、温度測定とシステムレートの補正を
tempcomp.logと呼ばれるファイルにログ記録します。
logdirコマンドが指定するディレクトリーに書き込まれます。コマンドの例は以下のようになります。log measurements statistics tracking
- logdir
- このディレクティブは、ログファイルが書き込まれるディレクトリーを指定します。以下のようになります。
logdir /var/log/chrony
- makestep
- 通常、
chronydは、必要に応じてクロックの速度を下げるかまたは上げることで、システムに時間オフセットの段階的修正を実施します。特定の状況では、システムクロックが修正されるまでのこのスルーイングプロセスに非常に時間がかかり、システムクロックが不安定な状態になることがあります。このディレクティブは、調整がしきい値を上回ったときに、chronydにシステムクロックを強制的にステップさせます。ただし、chronydが起動した後に、特定の制限値を越える (負の数は制限値の無効化に使用されます) クロックの更新が行われなかった場合に限ります。initstepslewディレクティブはNTPのソースのみに対応しているので、この方法は基準クロックを使用しているときに特に有用です。このディレクティブの使用例は、以下のようになります。makestep 1000 10
この場合、調整幅が 1000 秒よりも大きければシステムクロックは更新されますが、これは最初の 10 回のクロック更新のみです。 - maxchange
- このディレクティブは、クロック更新で修正される片寄りの最大値を設定します。指定された回数の更新の後でのみチェックが実行されることで、システムクロックの初回の調整が大幅なものにできます。指定された最大値よりも大きな片寄りが発生した場合、これは指定された回数無視され、その後に
chronydがあきらめ、終了します (マイナス値を使うと、終了しないようになります)。どちらの場合も、メッセージは syslog に送信されます。このディレクティブの使用例は、以下のようになります。maxchange 1000 1 2
最初のクロック更新後に、chronydがすべてのクロック更新で片寄りをチェックし、1000 秒よりも大きい調整を 2 回無視した後に、3 回目に終了します。 - maxupdateskew
chronydのタスクの 1 つは、コンピューターのクロックが参照ソースと比較してどれくらい早くまたは遅く動いているかを調べることです。さらに、予想される値のエラーの範囲を予測することです。エラーの範囲が広すぎる場合は、測定が落ち着いておらず、予想される進みまたは遅れのレートがあまり信頼性の高いものではないことを示すことになります。maxupdateskewパラメーターでは、予想の信頼性が高くないため使用すべきでないかどうかを判断するしきい値が使えるようになります。デフォルトでは、しきい値は 1000 ppm になります。構文は以下のようになります。maxupdateskew skew-in-ppm
電話を使ったサーバーへのダイアルアップ接続の場合、通常の skew-in-ppm の値は 100 で、LAN 回線上のコンピューターの場合は 5 または 10 です。信頼性のない予測の使用に対する保護の方法は、これだけではないことに注意してください。chronydは常に予想される進みまたは遅れのレートと、予測のエラー範囲を追跡しています。ソースの 1 つからの別の測定の後に新たな予測が生成されると、加重組み合わせのアルゴリズムを使ってマスター予測が更新されます。このため、chronydに信頼性の高い既存のマスター予測があり、エラー範囲の広い新たな予測が生成されると、既存のマスター予測が新規のマスター予測を特徴づけることになります。- minsources
minsourcesディレクティブは、ローカルクロックが更新される前にソース選択アルゴリズムで選択可能なものとして考慮されるべきソースの最小数を設定します。構文は以下のようになります。minsources number-of-sources
デフォルトでは number-of-sources は 1 です。これより大きな数に設定すると、信頼性が向上します。複数のソースが互いに対応することが必要となるためです。- noclientlog
- このディレクティブは引数を取らず、クライアントのアクセスをログ記録しないように指定します。通常、クライアントアクセスはログ記録され、chronyc でクライアントコマンドを使って統計数字が報告されます。
- reselectdist
chronydが利用可能なソースから同期ソースを選ぶ際には、同期距離が最短のものを優先します。しかし、同様の距離のソースが複数存在して再選択を繰り返すことを避けるため、現在選択されていないソースの距離に固定距離が追加されます。これを、reselectdistオプションで設定できます。デフォルトでは、この距離は 100 マイクロ秒になります。構文は以下のようになります。reselectdist dist-in-seconds
- stratumweight
stratumweightディレクティブは、chronydが利用可能なソースから同期ソースを選択する際に、階層ごとに追加される同期距離を設定します。構文は以下のようになります。stratumweight dist-in-seconds
デフォルトでは、dist-in-seconds は 1 ミリ秒です。つまり、より低い stratum を持つソースは、たとえ距離が著しく離れていても、一般的により高い stratum を持つソースを選びます。stratumweightを 0 に設定すると、chronydはソースを選択するときに stratum を無視します。- rtcfile
rtcfileディレクティブは、システムのリアルタイムクロック (RTC) の正確性の追跡に関連するパラメーターをchronydが保存することができるファイル名を定義します。構文は以下のようになります。rtcfile /var/lib/chrony/rtc
chronydは、このファイルが存在し、writertcコマンドが chronyc で発行されると、情報をこのファイルに保存します。保存される情報は、あるエポックでの RTC のエラー、そのエポック (1970 年 1 月 1 日以降の秒数)、および RTC の時間が早まるもしくは遅れるレートです。リアルタイムクロックのコードはシステム固有のものなので、すべてのリアルタイムクロックがサポートされるわけではありません。このディレクティブを使用する場合、リアルタイムクロックは手動で調整しないでください。リアルタイムクロックがランダムな間隔で調整されると、その片寄りのレートを測定する chrony の必要性が干渉されるためです。- rtcsync
rtcsyncディレクティブは、デフォルトで/etc/chrony.confファイルにあります。これは、カーネルにシステムクロックが同期されていることを知らせ、カーネルはリアルタイムクロックを 11 分ごとに更新します。
17.2.4. chronyc のセキュリティー
Chronyc は
chronyd へ 2 通りの方法でアクセスすることができます。
- インターネットプロトコル (IPv4 または IPv6、
- Unix ドメインソケット。
rootまたは chrony ユーザーがローカルにアクセスできます。
デフォルトでは、chronyc は Unix ドメインソケットに接続します。デフォルトのパスは
/var/run/chrony/chronyd.sock です。この接続に失敗した場合 (chronyc が非 root ユーザーの下で実行されているときに失敗する可能性がある) 、chronyc は 127.0.0.1 と then ::1 へ接続を試みます。
chronyd の動作に影響しない次の監視コマンドのみが、ネットワークに許可されています。
- activity
- manual list
- rtcdata
- smoothing
- sources
- sourcestats
- tracking
- waitsync
chronyd がこれらのコマンドを受け取るホストは、chronyd の設定ファイルにある cmdallow ディレクティブ、または、 chronyc にある cmdallow コマンドで設定できます。デフォルトでは、これらのコマンドはローカルホスト (127.0.0.1 または ::1) のみが受け取ります。
その他のコマンドはすべて、Unix ドメインソケットのみを介して許可されます。ネットワーク上で送信されると、たとえローカルホストであっても、
chronyd は Not authorised エラーを返します。
手順17.1 chronyc を使った chronyd へのリモートアクセス
- 以下を
/etc/chrony.confファイルに追加すると、IPv4 と IPv6 の両方のアドレスからアクセスが可能になります。bindcmdaddress 0.0.0.0
またはbindcmdaddress :
cmdallowディレクティブを使用すると、リモート IP アドレス、ネットワーク、またはサブネットからのコマンドが許可されます。例17.1
次の内容を/etc/chrony.confファイルへ追加します。cmdallow 192.168.1.0/24
- ファイアウォールでポート 323 を開き、リモートシステムから接続します。
~]#
firewall-cmd --zone=public --add-port=323/udpポート 323 を永続的に開きたいときは、--permanentを使用します。~]#
firewall-cmd --permanent --zone=public --add-port=323/udp
allow ディレクティブは NTP のアクセス用であり、一方 cmdallow ディレクティブは、リモートコマンドの受け取りを可能にします。ローカルに実行されている chronyc を使うと、これらの変更を一時的なものにできます。永続的に変更するときは設定ファイルを編集します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.