12.4. chrony の使用
次のセクションでは、chronyd
を起動および停止する方法と、chrony
が同期されているかどうかを確認する方法について説明します。また、システムクロックを手動で調整する方法も説明されています。
12.4.1. chrony の管理 リンクのコピーリンクがクリップボードにコピーされました!
chronyd
を起動、停止し、そのステータスを確認できます。
Red Hat Enterprise Linux では、chrony スイートがデフォルトでインストールされます。インストールされていることを確認するには、
root
で以下のコマンドを実行します。yum install chrony
# yum install chrony
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chrony デーモンのデフォルトの場所は、
/usr/sbin/chronyd
です。このコマンドラインユーティリティーは/usr/bin/chronyc
にインストールされます。chronyd
のステータスを確認するには、以下のコマンドを実行します。systemctl status 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chronyd
を開始するには、root
で以下のコマンドを実行します。systemctl start chronyd
# systemctl start chronyd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムの起動時に
chronyd
を自動的に起動するように設定するには、root
で以下のコマンドを実行します。systemctl enable chronyd
# systemctl enable chronyd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chronyd
を停止するには、root
で以下のコマンドを実行します。systemctl stop chronyd
# systemctl stop chronyd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムの起動時に
chronyd
を自動的に起動しないように設定するには、root
で以下のコマンドを実行します。systemctl disable chronyd
# systemctl disable chronyd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.2. chrony の同期確認 リンクのコピーリンクがクリップボードにコピーされました!
chrony が同期されているかどうかは、tracking
、sources
、sourcestats
コマンドを使用して確認できます。
手順
chrony のトラッキングを確認するには、次のように入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chronyc
の sources コマンドは、chronyd
がアクセスしている現在の時間ソースに関する情報を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプションの
-v
引数を指定すると、より詳細な情報を出力できます。この例では、余分なキャプション行は、コラムの意味を説明するものとして表示されます。sourcestats
コマンドは、chronyd
が現在調べている各ソースに関するドリフト量とオフセット推定プロセスの情報を表示します。chrony ソースの統計情報を確認するには、以下のコマンドを実行します。chronyc sourcestats
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 任意の引数
-v
(verbose (詳細) の意) を指定できます。この例では、余分なキャプション行は、コラムの意味を説明するものとして表示されます。
12.4.3. システムクロックの手動調整 リンクのコピーリンクがクリップボードにコピーされました!
システムクロックは手動で調整できます。
手順
システムクロックを徐々に調整していく (slew) のをやめ、一度に修正 (step) するには、次のように入力します。
chronyc makestep
# chronyc makestep
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
rtcfile
ディレクティブを使用している場合は、リアルタイムクロックを手動で調整しないでください。ランダムな調整を行うと、リアルタイムクロックがずれる変化量を測定する必要がある chrony に影響を与えます。
12.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
#!/bin/sh exit 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記chrony
パッケージをアップグレードまたは再インストールすると、変更したディスパッチャースクリプトがパッケージ化されたバージョンのディスパッチャースクリプトに置き換えられます。
12.4.5. 分離されたネットワークでの chrony の設定 リンクのコピーリンクがクリップボードにコピーされました!
インターネットに接続されていないネットワークの場合、1 台のコンピューターがプライマリータイムサーバーとして選択されます。他のコンピューターは、サーバーの直接のクライアント、またはクライアントのクライアントです。サーバーでは、ドリフトファイルは、システムクロックのドリフトの平均率を使用して手動で設定します。サーバーを再起動すると、周囲のシステムから時間を取得し、システムクロックを設定するために平均値を計算します。その後、drift ファイルに基づいて調整の適用を再開します。drift ファイルは、settime
コマンドが使用されたときに自動的に更新されます。
分離されたネットワーク内のシステムに chrony を設定するには、次の手順に従います。
手順
サーバーとして選択したシステムで、
/etc/chrony.conf
を次のように編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <subnet>
は、クライアントの接続元として許可するネットワークです。サブネットを指定するには、Classless Inter-Domain Routing (CIDR) 表記を使用します。サーバーの直接のクライアントとして選択したシステムで、
/etc/chrony.conf
を次のように編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <server_fqdn>
はサーバーのホスト名、<server_ip_address>
はサーバーのアドレスです。この設定のクライアントは、再起動するとサーバーと再同期します。
サーバーの直接のクライアントにはならないクライアントシステムの /etc/chrony.conf
ファイルでは、local
ディレクティブおよび allow
ディレクティブが省略される以外は、同じになるべきです。
孤立したネットワークでは、ローカルの参照モードを有効にする local
ディレクティブも使用できます。これにより、NTP
サーバーとして動作している chronyd
は、サーバーが一度も同期されていなかったり、クロックの最終更新から長い時間が経過している場合でも、リアルタイムに同期してるように見えます。
複数のサーバーをポーリングしているクライアントを混同することなく、ネットワーク上の複数のサーバーに同じローカル設定を使用し、互いを同期させるには、Orphan モードを有効にする local
ディレクティブの orphan
オプションを使用します。各サーバーは、他のすべてのサーバーを local
でポーリングするように設定する必要があります。これにより、最小の参照 ID を持つサーバーでのみローカル参照が有効になり、他のサーバーはそれに同期します。サーバーが失敗すると別のサーバーが引き継ぎます。
12.4.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 0.0.0.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow および
bindcmdaddress ::
bindcmdaddress ::
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リモート IP アドレス、ネットワーク、サブネットからのコマンドを許可します。
/etc/chrony.conf
ファイルに以下の内容を追加します。cmdallow 192.168.1.0/24
cmdallow 192.168.1.0/24
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cmdallow 2001:db8::/64
cmdallow 2001:db8::/64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイアウォールでポート 323 を開き、リモートシステムからの接続を許可します。
firewall-cmd --permanent --add-port=323/udp
# firewall-cmd --permanent --add-port=323/udp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイアウォール設定を再読み込みします。
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.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
ロールを適用する方法を示しています。
例12.1 サーバーの 1 つのプールに、timesync ロールを適用する Playbook の例
timesync
ロール変数の詳細は、rhel-system-roles
パッケージをインストールし、/usr/share/doc/rhel-system-roles/timesync
ディレクトリーの README.md
または README.html
ファイルを参照してください。