よくある質問・用語集

Chronyとは

Chronyとは、NTPサーバ及びNTPクライアントの実装の1つである。Chronyは、Richard Curnow氏によって開発され、現在はMiroslav Lichvar氏が保守している。ライセンスはGNU GPL v2(GNU General Public License version 2)の下で公開され、Linux、FreeBSD、NetBSD、macOS、Solaris等、様々なOSで動作する。

NTPサーバ(Network Time Protocol Server)とは、インターネット上で現在時刻の情報を配信するサーバのことである。NTP(Network Time Protocol)とは、コンピュータ上の1秒 以下の誤差をms、us単位で識別して時刻を修正し、正しい時刻に同期するプロトコルである。この仕組みがある事で、最終的に正確な時間を維持することが可能となる。Chronyは、CentOS7やRed Hat Enterprise Linux7以降、ntpdに代わりNTPサーバ及びNTPクライアントのデフォルトになっている。Chronyはntpdとは異なる時刻同期アルゴリズムを採用し、より効率良く正確な時刻同期を提供することが可能となる。この記事では、Chronyの特徴やChronyの仕様についてまとめている。

Chronyと時刻同期

時刻同期の重要性

では、時刻同期がなぜ重要であるかというと、システムを管理するに当たって信頼できる基準の一つが時刻であるためである。時刻がずれてしまうと、例えばメールであれば、相手の時刻が誤って正しい時刻よりも先に進んでいた時、こちらに届くメールは未来からのメールとなってしまう。そのため、メールが届いた時刻を正確に把握する事ができず、業務に支障をきたす可能性がある。また、複数のサーバからログを解析することがあったとしてもクライアント側とサーバ側で違った時刻が記録されていると、その時刻状況やどの通信で障害が起きているのかを解析することが困難となり、解決するのに時間を要してしまう。

このように世界中のネットワークと共有接続するなかで、必ず共通して重要なことは正しい時刻が設定されていることである。時刻はクライアント側とサーバ側の両方のシステムを関連づける重要な基準となる。時刻を合わせることは、コンピュータ間の信頼につながるため、時刻同期は必須となる。時刻合わせを自動化するNTPサーバを利用することで、サーバの時刻の精度を高め、正確な時刻を保つことが可能となる。

NTPサーバの仕組み

CentOS7やRed Hat Enterprise Linux7以降、ntpdに代わりNTPサーバとNTPクライアントのデフォルトとなっている。NTPは、ネットワークにアクセスされた機器の時刻同期を行うためのプロトコルである。インターネット上には、時刻が正確なNTPサーバがいくつも公開・運用されている。これらのサーバにNTPクライアントが接続し時間情報を確認して取得することで、サーバやPC内部の時刻を正しい時刻に調整することができる。取得した時刻の情報は、さらに他のサーバやPCから参照することができる。NTPサーバはstratumという階層構造になって、最上位のサーバは原子時計やGPSから正確な時刻を取得している。下位のサーバは上位のサーバに時刻の問い合わせを定期的におこなっているが、この時刻同期を行っているのがChronyである。

Chronyの特徴

ntpdと比べたときの特徴は以下である。

  • 常に高速で正確に時刻同期ができる

  • 様々な条件で適切に機能する

    例えばコンピュータの電源が切れる、ネットワークが頻繁に切断される、時刻同期が継続的に実行されない、仮想マシンで実行されるシステムなど、様々な条件下でも適切に機能するように設計されている。しかしntpdが良好に機能するためには時間参照の定期的なポーリングが必要になる。

  • 環境の変化でもすばやく適応する

    ntpdは環境の変化で、落ち着くまで時間がかかる場合があるが、Chronyは温度が変わるといった変化でも素早く対応できる。

  • 仮想マシンのようなシステムクロックが正確でない環境でも、柔軟に時間調整することができる

  • NTPバージョン3(RFC1305)を使用している

    chronydはNTPバージョン3(RFC 1305)、ntpdはNTPバージョン4(RFC 5905)を使用している。バージョン3はバージョン4と完全互換性がある。

  • NTPサービスが停止することがない

    ntpdは、時間のずれが大きくなると調整をすることができず、NTPサービスが停止してしまう場合があるが、Chronyは大きな時間のずれが生じても、適切に対応して時刻同期する機能が備わっているためNTPサービスが停止することがない。

Chronyの仕様

Chronyの仕様

クライアントとサーバの両方の役割を持っている。クライアントからサーバへ時刻を問い合わせすることやサーバからクライアントへ正確な時刻を伝えることができる。

ユーザスペースで実行されるデーモンのchronydと、chronydの状態を閲覧したり様々なオペレーティングパラメーターを実行中に変更することに使用できるコマンドラインプログラムchronycから構成されている。それぞれ、NTPクライアントの機能をchronyc、NTPサーバの機能をchronydと呼ぶが、設定ファイルに違いはなく、設定ファイルは/etc/chrony.confの1つのみである。confファイルにrtcsyncという設定で、ハードウェアクロックとの同期が可能となっている。

chronycを利用した同期確認

chronycコマンドにsourcesサブコマンドを指定して入力する方法で、NTPサーバとの同期確認を行うことができる。実行してみると以下のような出力結果が表示される。

# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- y.ns.gin.ntt.net              2  10   377   634  +6622us[+6439us] +/-   93ms
^- sh11.paina.net                2   9   365  1066  +1767us[+1586us] +/-   74ms
^- kuroa.me                      2   9   377   432  -1646us[-1830us] +/-   56ms
^* ntp-a2.nict.go.jp             1  10   377    91   -893us[-1080us] +/- 6677us

NTPサーバはstratumという階層構造になっており、最上位のサーバは原子時計やGPSから正確な時刻を取得している。最上位のNTPサーバは「stratum 1」であり、階層を降りるごとにstratumの値が増える。

以上の結果からchronycコマンドにある「Stratum(階層数)」の項目を確認すると、「ntp-a2.nict.go.jp」という名前のサーバが最上位のNTPサーバであることを示している。また、「ntp-a2.nict.go.jp」の左側に「*(アスタリスク)」がついていることから、このNTPサーバと同期をとっていることを特定できる。

デージーネットの取り組み

デージーネットでは、Chronyを含むNTPサーバの設定や管理について記載したCentOSについての書籍を多数出版している。また、デージーネットでネットワークサーバを構築した際には、Chronyのインストールを含むNTPサーバの設定を行っている。

【Webセミナー】CentOS8 サポート終了に伴う今後の考え方

日程: 1月22日(金)Webセミナー「BigBlueButton」を使用します。
内容: CentOS8のサポートが2021年に終了すると発表されました。CentOS8を利用していたユーザは今後、どのようにしていくとよいのかわかりやすく解説します!
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

Chronyに関連するページ(事例など)

Chronyとは先頭へ