11.3. chrony の使用
次のセクションでは、chronyd を起動および停止する方法と、chrony が同期されているかどうかを確認する方法について説明します。また、システムクロックを手動で調整する方法も説明されています。
11.3.1. chrony の管理 リンクのコピーリンクがクリップボードにコピーされました!
chronyd を起動、停止し、そのステータスを確認できます。
Red Hat Enterprise Linux では、chrony スイートがデフォルトでインストールされます。インストールされていることを確認するには、
rootで以下のコマンドを実行します。# dnf install chronychrony デーモンのデフォルトの場所は、
/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 agochronydを開始するには、rootで以下のコマンドを実行します。# systemctl start chronydシステムの起動時に
chronydを自動的に起動するように設定するには、rootで以下のコマンドを実行します。# systemctl enable chronydchronydを停止するには、rootで以下のコマンドを実行します。# systemctl stop chronydシステムの起動時に
chronydを自動的に起動しないように設定するには、rootで以下のコマンドを実行します。# systemctl disable chronyd
11.3.2. chrony の同期確認 リンクのコピーリンクがクリップボードにコピーされました!
chrony が同期されているかどうかは、tracking、sources、sourcestats コマンドを使用して確認できます。
手順
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 : Normalchronycの sources コマンドは、chronydがアクセスしている現在の時間ソースに関する情報を表示します。$ 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 (詳細) の意) を指定できます。この例では、余分なキャプション行は、コラムの意味を説明するものとして表示されます。
11.3.3. システムクロックの手動調整 リンクのコピーリンクがクリップボードにコピーされました!
システムクロックは手動で調整できます。
手順
システムクロックを徐々に調整していく (slew) のをやめ、一度に修正 (step) するには、次のように入力します。
# chronyc makestep
rtcfile ディレクティブを使用している場合は、リアルタイムクロックを手動で調整しないでください。ランダムな調整を行うと、リアルタイムクロックがずれる変化量を測定する必要がある chrony に影響を与えます。
11.3.4. chrony ディスパッチャースクリプトの無効化 リンクのコピーリンクがクリップボードにコピーされました!
chrony ディスパッチャースクリプトは、NTP サーバーのオンラインとオフラインの状態を管理します。システム管理者は、ディスパッチャースクリプトを無効にして、chronyd がサーバーを常にポーリングし続けるようにすることができます。
NetworkManager は、インターフェイスの再設定、停止、または起動操作中に chrony ディスパッチャースクリプトを実行します。ただし、NetworkManager の外部で特定のインターフェイスまたはルートを設定すると、次の状況が発生する可能性があります。
- NTP サーバーへのルートが存在しない場合にディスパッチャースクリプトが実行され、NTP サーバーがオフライン状態に切り替わる可能性があります。
- 後でルートを確立すると、デフォルトではスクリプトは再実行されず、NTP サーバーはオフライン状態のままになります。
chronyd が、個別に管理されたインターフェイスを持つ NTP サーバーと確実に同期できるようにするには、ディスパッチャースクリプトを無効にします。
手順
chronyディスパッチャースクリプトを無効にするには、/dev/nullへのシンボリックリンクを作成します。# ln -f -s /dev/null /etc/NetworkManager/dispatcher.d/20-chrony-onoffline注記この変更後、NTP サーバーは常にオンライン状態になります。
11.3.5. 分離されたネットワークでの chrony の設定 リンクのコピーリンクがクリップボードにコピーされました!
インターネットに接続されていないネットワークの場合、1 台のコンピューターがプライマリータイムサーバーとして選択されます。他のコンピューターは、サーバーの直接のクライアント、またはクライアントのクライアントです。サーバーでは、ドリフトファイルは、システムクロックのドリフトの平均率を使用して手動で設定します。サーバーを再起動すると、周囲のシステムから時間を取得し、システムクロックを設定するために平均値を計算します。その後、drift ファイルに基づいて調整の適用を再開します。drift ファイルは、settime コマンドが使用されたときに自動的に更新されます。
分離されたネットワーク内のシステムに chrony を設定するには、次の手順に従います。
手順
サーバーとして選択したシステムで、
/etc/chrony.confを次のように編集します。driftfile /var/lib/chrony/drift commandkey 1 keyfile /etc/chrony.keys initstepslew 10 client1 client3 client6 local stratum 8 manual allow <subnet><subnet>は、クライアントの接続元として許可するネットワークです。サブネットを指定するには、Classless Inter-Domain Routing (CIDR) 表記を使用します。サーバーの直接のクライアントとして選択したシステムで、
/etc/chrony.confを次のように編集します。server <server_fqdn> 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 <server_ip_address><server_fqdn>はサーバーのホスト名、<server_ip_address>はサーバーのアドレスです。この設定のクライアントは、再起動するとサーバーと再同期します。
サーバーの直接のクライアントにはならないクライアントシステムの /etc/chrony.conf ファイルでは、local ディレクティブおよび allow ディレクティブが省略される以外は、同じになるべきです。
孤立したネットワークでは、ローカルの参照モードを有効にする local ディレクティブも使用できます。これにより、NTP サーバーとして動作している chronyd は、サーバーが一度も同期されていなかったり、クロックの最終更新から長い時間が経過している場合でも、リアルタイムに同期してるように見えます。
複数のサーバーをポーリングしているクライアントを混同することなく、ネットワーク上の複数のサーバーに同じローカル設定を使用し、互いを同期させるには、Orphan モードを有効にする local ディレクティブの orphan オプションを使用します。各サーバーは、他のすべてのサーバーを local でポーリングするように設定する必要があります。これにより、最小の参照 ID を持つサーバーでのみローカル参照が有効になり、他のサーバーはそれに同期します。サーバーが失敗すると別のサーバーが引き継ぎます。
11.3.6. リモート監視アクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
chronyc ユーティリティーは、次の方法を使用して chronyd にアクセスできます。
- IPv4 または IPv6
-
rootおよびchronyユーザーがローカルでアクセスできるドメインソケット
デフォルトでは、chronyc は、Unix ドメインソケットに接続します。デフォルトのパスは /var/run/chrony/chronyd.sock です。この接続が失敗した場合、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ファイルに以下を追加して、chronyがローカルインターフェイスでリッスンするように設定します。bindcmdaddress 0.0.0.0および
bindcmdaddress ::リモート IP アドレス、ネットワーク、サブネットからのコマンドを許可します。
/etc/chrony.confファイルに以下の内容を追加します。cmdallow 192.168.1.0/24cmdallow 2001:db8::/64ファイアウォールでポート 323 を開き、リモートシステムからの接続を許可します。
# firewall-cmd --permanent --add-port=323/udpファイアウォール設定を再読み込みします。
# firewall-cmd --reload
11.3.7. RHEL システムロールを使用した時刻同期の管理 リンクのコピーリンクがクリップボードにコピーされました!
timesync ロールを使用して、複数のターゲットマシンで時刻同期を管理できます。timesync ロールは、NTP または PTP 実装をインストールして、NTP または PTP クライアントとして動作してシステムクロックと同期するように設定します。
timesync ロールは、マネージドホストで指定または検出されたプロバイダーサービスの設定を置き換えます。以前の設定は、ロール変数で指定されていなくても失われます。timesync_ntp_provider 変数が定義されていない場合は、プロバイダーの唯一の設定が適用されます。
以下の例は、サーバーにプールが 1 つしかない場合に、timesync ロールを適用する方法を示しています。
例11.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 ファイルを参照してください。