14.2. chrony の使用
次のセクションでは、chronyd
のインストール、起動、停止の方法や、chrony
が同期しているかどうかを確認する方法を説明します。また、システムクロックを手動で調整する方法も説明されています。
14.2.1. chrony の管理
以下の手順では、chronyd
のインストール、起動、停止、およびステータスの確認方法を説明します。
手順
Red Hat Enterprise Linux では、chrony スイートがデフォルトでインストールされます。インストールされていることを確認するには、
root
で以下のコマンドを実行します。# yum install chrony
chrony デーモンのデフォルトの場所は、
/usr/sbin/chronyd
です。このコマンドラインユーティリティーは/usr/bin/chronyc
にインストールされます。chronyd
のステータスを確認するには、以下のコマンドを実行します。$ systemctl status chronyd chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled) Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h ago
chronyd
を開始するには、root
で以下のコマンドを実行します。# systemctl start chronyd
システムの起動時に
chronyd
を自動的に起動するように設定するには、root
で以下のコマンドを実行します。# systemctl enable chronyd
chronyd
を停止するには、root
で以下のコマンドを実行します。# systemctl stop chronyd
システムの起動時に
chronyd
を自動的に起動しないように設定するには、root
で以下のコマンドを実行します。# systemctl disable chronyd
14.2.2. chrony の同期確認
以下の手順では、tracking
コマンド、sources
コマンド、および sourcestats
コマンドを使用して、chrony が同期されているかどうかを確認する方法を説明します。
手順
chrony の追跡を確認するには、以下のコマンドを実行します。
$ chronyc tracking Reference ID : CB00710F (ntp-server.example.net) Stratum : 3 Ref time (UTC) : Fri Jan 27 09:49:17 2017 System time : 0.000006523 seconds slow of NTP time Last offset : -0.000006747 seconds RMS offset : 0.000035822 seconds Frequency : 3.225 ppm slow Residual freq : 0.000 ppm Skew : 0.129 ppm Root delay : 0.013639022 seconds Root dispersion : 0.001100737 seconds Update interval : 64.2 seconds Leap status : Normal
sources コマンドは、
chronyd
がアクセスしている現在の時間ソースの情報を表示します。chrony ソースを確認するには、以下のコマンドを実行します。$ chronyc sources 210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* GPS0 0 4 377 11 -479ns[ -621ns] /- 134ns ^? a.b.c 2 6 377 23 -923us[ -924us] +/- 43ms ^ d.e.f 1 6 377 21 -2629us[-2619us] +/- 86ms
オプションの
-v
引数を指定すると、より詳細な情報を出力できます。この例では、余分なキャプション行は、コラムの意味を説明するものとして表示されます。sourcestats
コマンドは、chronyd
が現在調べている各ソースに関するドリフト量とオフセット推定プロセスの情報を表示します。chrony ソースの統計情報を確認するには、以下のコマンドを実行します。$ chronyc sourcestats 210 Number of sources = 1 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev =============================================================================== abc.def.ghi 11 5 46m -0.001 0.045 1us 25us
任意の引数
-v
(verbose (詳細) の意) を指定できます。この例では、余分なキャプション行は、コラムの意味を説明するものとして表示されます。
関連情報
-
システム上の
chronyc(1)
man ページ
14.2.3. システムクロックの手動調整
以下の手順では、システムクロックを手動で調整する方法を説明します。
手順
システムクロックを徐々に調整していく (slew) のを止め、一度に修正 (step) するには、
root
で以下のコマンドを実行します。# chronyc makestep
rtcfile
ディレクティブを使用している場合は、リアルタイムクロックを手動で調整しないでください。ランダムな調整を行うと、リアルタイムクロックがずれる変化量を測定する必要がある chrony に影響を与えます。
14.2.4. chrony ディスパッチャースクリプトの無効化
chrony
ディスパッチャースクリプトは、NTP サーバーのオンラインとオフラインの状態を管理します。システム管理者は、ディスパッチャースクリプトを無効にして、chronyd
がサーバーを常にポーリングし続けるようにすることができます。
システムで NetworkManager を有効にしてネットワーク設定を管理する場合、NetworkManager はインターフェイスの再設定中、操作の停止または開始中に chrony
ディスパッチャースクリプトを実行します。ただし、NetworkManager の外部で特定のインターフェイスまたはルートを設定すると、次の状況が発生する可能性があります。
- NTP サーバーへのルートが存在しない場合にディスパッチャースクリプトが実行され、NTP サーバーがオフライン状態に切り替わる可能性があります。
- 後でルートを確立すると、デフォルトではスクリプトは再実行されず、NTP サーバーはオフライン状態のままになります。
chronyd
が、個別に管理されたインターフェイスを持つ NTP サーバーと確実に同期できるようにするには、ディスパッチャースクリプトを無効にします。
前提条件
- システムに NetworkManager をインストールして有効にしました。
- Root アクセス
手順
chrony
ディスパッチャースクリプトを無効にするには、/etc/NetworkManager/dispatcher.d/20-chrony-onoffline
ファイルを次のように編集します。#!/bin/sh exit 0
注記chrony
パッケージをアップグレードまたは再インストールすると、変更したディスパッチャースクリプトがパッケージ化されたバージョンのディスパッチャースクリプトに置き換えられます。
14.2.5. 孤立したネットワークでのシステムにおける chrony の設定
インターネットに接続されていないネットワークの場合、1 台のコンピューターがプライマリータイムサーバーとして選択されます。他のコンピューターは、サーバーの直接のクライアント、またはクライアントのクライアントです。サーバーでは、ドリフトファイルは、システムクロックのドリフトの平均率を使用して手動で設定します。サーバーを再起動すると、周囲のシステムから時間を取得し、システムクロックを設定するために平均値を計算します。その後、drift ファイルに基づいて調整の適用を再開します。drift ファイルは、settime
コマンドが使用されたときに自動的に更新されます。
以下の手順では、分離ネットワークでシステムに chrony を設定する方法を説明します。
手順
マスターに選ばれたシステムで、
root
でテキストエディターを実行し、以下のように/etc/chrony.conf
を実行します。driftfile /var/lib/chrony/drift commandkey 1 keyfile /etc/chrony.keys initstepslew 10 client1 client3 client6 local stratum 8 manual allow 192.0.2.0/24
192.0.2.0/24
は、クライアントが接続できるネットワークアドレスまたはサブネットアドレスです。詳細は、システム上のchrony.conf(7)
man ページを参照してください。サーバーのダイレクトクライアントに選ばれたシステムで、
root
でテキストエディターを実行し、以下のように/etc/chrony.conf
を実行します。server ntp1.example.net driftfile /var/lib/chrony/drift logdir /var/log/chrony log measurements statistics tracking keyfile /etc/chrony.keys commandkey 24 local stratum 10 initstepslew 20 ntp1.example.net allow 192.0.2.123
192.0.2.123
はサーバーのアドレスで、ntp1.example.net
はサーバーのホスト名です。この設定のクライアントは、再起動するとサーバーと再同期します。
サーバーの直接のクライアントにはならないクライアントシステムの /etc/chrony.conf
ファイルでは、local
ディレクティブおよび allow
ディレクティブが省略される以外は、同じになるべきです。
孤立したネットワークでは、ローカルの参照モードを有効にする local
ディレクティブも使用できます。これにより、NTP
サーバーとして動作している chronyd
は、サーバーが一度も同期されていなかったり、クロックの最終更新から長い時間が経過している場合でも、リアルタイムに同期してるように見えます。
複数のサーバーをポーリングしているクライアントを混同することなく、ネットワーク上の複数のサーバーに同じローカル設定を使用し、互いを同期させるには、Orphan モードを有効にする local
ディレクティブの orphan
オプションを使用します。各サーバーは、他のすべてのサーバーを local
でポーリングするように設定する必要があります。これにより、最小の参照 ID を持つサーバーでのみローカル参照が有効になり、他のサーバーはそれに同期します。サーバーが失敗すると別のサーバーが引き継ぎます。
14.2.6. リモート監視アクセスの設定
chronyc は、以下の 2 つの方法で chronyd
にアクセスします。
- インターネットプロトコル (IPv4 または IPv6)
-
Unix ドメインソケット (ユーザー
root
またはchrony
がローカルにアクセス可能)
デフォルトでは、chronyc は、Unix ドメインソケットに接続します。デフォルトのパスは /var/run/chrony/chronyd.sock
です。この接続に失敗すると (たとえば非特権ユーザーで chronyc を実行していると失敗する可能性があります)、chronyc は 127.0.0.1 への接続を試み、その後 ::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
エラーを返します。
以下の手順では、chronyc を使用して chronyd にリモートでアクセスする方法を説明します。
手順
以下を
/etc/chrony.conf
ファイルに追加すると、IPv4 と IPv6 の両方のアドレスからアクセスが可能になります。bindcmdaddress 0.0.0.0
または
bindcmdaddress ::
cmdallow
ディレクティブを使用すると、リモート IP アドレス、ネットワーク、またはサブネットからのコマンドが許可されます。/etc/chrony.conf
ファイルに以下の内容を追加します。cmdallow 192.168.1.0/24
ファイアウォールでポート 323 を開き、リモートシステムから接続します。
# firewall-cmd --zone=public --add-port=323/udp
必要に応じて、
--permanent
オプションを使用してポート 323 を永続的に開くことができます。# firewall-cmd --permanent --zone=public --add-port=323/udp
ポート 323 を永続的に開く場合は、ファイアウォール設定を再読み込みします。
# firewall-cmd --reload
関連情報
-
システム上の
chrony.conf(5)
man ページ
14.2.7. RHEL システムロールを使用した時刻同期の管理
timesync
ロールを使用して、複数のターゲットマシンで時刻同期を管理できます。timesync
ロールは、NTP または PTP 実装をインストールして、NTP または PTP クライアントとして動作してシステムクロックと同期するように設定します。
timesync
ロールを使用すると、システムが ntp または chrony を使用して NTP プロトコルを実装するかどうかにかかわらず、RHEL 6 以降のすべてのバージョンの Red Hat Enterprise Linux で同じ Playbook を使用できるため、chrony への移行 も容易になる点に留意してください。
timesync
ロールは、マネージドホストで指定または検出されたプロバイダーサービスの設定を置き換えます。以前の設定は、ロール変数で指定されていなくても失われます。timesync_ntp_provider
変数が定義されていない場合は、プロバイダーの唯一の設定が適用されます。
以下の例は、サーバーにプールが 1 つしかない場合に、timesync
ロールを適用する方法を示しています。
例14.1 サーバーの 1 つのプールに、timesync ロールを適用する Playbook の例
--- - hosts: timesync-test vars: timesync_ntp_servers: - hostname: 2.rhel.pool.ntp.org pool: yes iburst: yes roles: - rhel-system-roles.timesync
timesync
ロール変数の詳細は、rhel-system-roles
パッケージをインストールし、/usr/share/doc/rhel-system-roles/timesync
ディレクトリーの README.md
または README.html
ファイルを参照してください。
14.2.8. 関連情報
-
システム上の
chronyc(1)
およびchronyd(8)
man ページ - よくある質問 (FAQ)