14.4. chrony の使用
次のセクションでは、chronyd を
起動および停止する方法と、chrony
が同期されているかどうかを確認する方法について説明します。また、システムクロックを手動で調整する方法も説明されています。
14.4.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.4.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 : Normal
chronyc
ソースコマンドは、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 (詳細) の意) を指定できます。この例では、余分なキャプション行は、コラムの意味を説明するものとして表示されます。
関連情報
-
システム上の
chronyc(1)
man ページ
14.4.3. システムクロックの手動調整
システムクロックを手動で調整できます。
手順
スルーによる進行中の調整をバイパスして、システムクロックを直ちにステップするには、次のように入力します。
# chronyc makestep
rtcfile
ディレクティブを使用している場合は、リアルタイムクロックを手動で調整しないでください。ランダムな調整を行うと、リアルタイムクロックがずれる変化量を測定する必要がある chrony に影響を与えます。
14.4.4. chrony ディスパッチャースクリプトの無効化
chrony
ディスパッチャースクリプトは、NTP サーバーのオンラインとオフラインの状態を管理します。システム管理者は、ディスパッチャースクリプトを無効にして、chronyd
がサーバーを常にポーリングし続けるようにすることができます。
NetworkManager は、インターフェイスの再設定、停止、または開始操作中に chrony
ディスパッチャースクリプトを実行します。ただし、NetworkManager の外部で特定のインターフェイスまたはルートを設定すると、次の状況が発生する可能性があります。
- NTP サーバーへのルートが存在しない場合にディスパッチャースクリプトが実行され、NTP サーバーがオフライン状態に切り替わる可能性があります。
- 後でルートを確立すると、デフォルトではスクリプトは再実行されず、NTP サーバーはオフライン状態のままになります。
chronyd
が、個別に管理されたインターフェイスを持つ NTP サーバーと確実に同期できるようにするには、ディスパッチャースクリプトを無効にします。
手順
chrony
ディスパッチャースクリプトを無効にするには、/etc/NetworkManager/dispatcher.d/20-chrony-onoffline
ファイルを次のように編集します。#!/bin/sh exit 0
注記chrony
パッケージをアップグレードまたは再インストールすると、変更したディスパッチャースクリプトがパッケージ化されたバージョンのディスパッチャースクリプトに置き換えられます。
14.4.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 を持つサーバーでのみローカル参照が有効になり、他のサーバーはそれに同期します。サーバーが失敗すると別のサーバーが引き継ぎます。
14.4.6. リモート監視アクセスの設定
chronyc ユーティリティーは、次の方法を使用して chronyd
にアクセスできます。
- IPv4 または IPv6。
-
ルート
および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/24
cmdallow 2001:db8::/64
リモートシステムからの接続を許可するには、ファイアウォールでポート 323 を開きます。
# firewall-cmd --permanent --add-port=323/udp
ファイアウォール設定を再読み込みします。
# firewall-cmd --reload
関連情報
-
システム上の
chrony.conf(5)
man ページ
14.4.7. RHEL システムロールを使用した時刻同期の管理
timesync
ロールを使用して、複数のターゲットマシンで時刻同期を管理できます。timesync
ロールは、NTP または PTP 実装をインストールして、NTP または PTP クライアントとして動作してシステムクロックと同期するように設定します。
timesync
ロールを使用すると、システムが NTP プロトコルを実装するために ntp または chrony のどちら を使用しているかに関係なく、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.4.8. 関連情報
-
システム上の
chronyc(1)
およびchronyd(8)
man ページ - よくある質問 (FAQ)