Chrony

提供: ArchWiki
移動先: 案内検索

この記事は、NTP クライアントとサーバーの代替である、Chrony の設定と起動の方法について記述しています。Chrony はローミングや、ネットワークに接続している時間が限られるシステムに向いています。

インストール

chrony公式リポジトリから入手できます。

設定

まず /etc/chrony.conf に設定することは、マシンが同期するサーバの設定です。 NTP サーバは階層的なシステムによって strata と呼ばれるたくさんのレベルにクラス分けされています。その定義は、独立したタイムソースとされるデバイスは stratum 0 ソース、stratum 0 のデバイスに直接接続しているサーバーを stratum 1 ソース、stratum 1 ソースに接続しているサーバーを stratum 2 ソース、と続きます。

サーバーの stratum は正確性や信頼性を表しているわけではないことを理解する必要があります。一般的に、stratum 2 のサーバーが時刻同期に使われます: どのサーバーに接続するのかまだ決めてない場合、pool.ntp.org サーバー (alternate link) を使って一番地理的に近いサーバープールを選んで下さい。

サンプル:

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org

起動時にコンピュータがインターネットに接続しない場合、offline オプションを使うことが推奨されます。サーバーに接続できるようになるまで chrony に接続を試みないようにすることができます:

server 0.pool.ntp.org offline
server 1.pool.ntp.org offline
server 2.pool.ntp.org offline
server 3.pool.ntp.org offline

ホストネームの代わりに IP アドレスを使ったり、/etc/hosts に使うホストネームの IP アドレスを記述するのは、DNS による名前解決が省略できるのでいいアイデアと言えます。

chronyd に接続が確立したことを知らせるには、chronyc と一緒にログインできるようにする必要があります。このために、管理者パスワードを chronyd に設定しなくてはなりません。管理者パスワードを設定するには /etc/chrony.keys を作って一行加えるだけです:

/etc/chrony.keys
1 xyzzy

さらに /etc/chrony.conf に以下の行を追加します:

commandkey 1

利用するために必要最小限に設定するとファイルの中身は次のようになります(ホストネームの代わりに IP アドレスを利用):

/etc/chrony.conf
server 1.2.3.4 offline
server 5.6.7.8 offline
server 9.10.11.12 offline
keyfile /etc/chrony.keys
commandkey 1
driftfile /etc/chrony.drift

chronyd にインターネット接続が確立されたことを知らせる

これをするには、上で示したように /etc/chrony.confcommandkey オプションを設定する必要があります。それが終わっているならば、インターネットに接続したときに chronyc を起動して次のコマンドを入力してください:

chronyc> password xyzzy
200 OK
chronyc> online
200 OK
chronyc> exit

これで Chrony は設定された時刻サーバーに接続して必要なときにあなたの時刻のアップデートを行うはずです。

Chrony にインターネットに接続していないことを知らせるには、次を実行してください:

chronyc> password xyzzy
200 OK
chronyc> offline
200 OK
chronyc> exit

最後に、/usr/share/doc/chrony/chrony.txt のユーザーガイドを覚えておいてください、疑問がでたときに役にたつはずです。オンラインでも利用できます。関連する man ページも参照しましょう: man {chrony|chronyc|chronyd|chrony.conf})。

使用方法

chronyd の起動

Chrony パッケージは chrony.service を提供しています、詳しくは systemd を見て下さい。

システムクロックとハードウェアクロックを同期させる

起動中に起動時刻をハードウェアクロック (RTC) から読み込みシステム時刻がセットされます。そして chrony デーモンが動いている間、数分毎に同期されます。ハードウェアクロックの時刻がズレていると、システム時刻も数分のあいだ時刻がズレることになります。この場合ハードウェアクロックをリセットする必要があります。2つの方法があります。hwclock コマンドを使って時刻をセットするには一時的に chrony サービスを止めなくてはなりません:

# systemctl stop chrony

それから時刻を設定します:

# hwclock --set --date="2013-02-15 16:45:05"

もしくはシステム時刻を使って RTC を設定します:

# hwclock --systohc

そして chrony サービスをもう一度起動します:

# systemctl start chrony

コマンドラインから chronyc を使うことで、chronyd を動かしながら RTC を設定することもできます:

# chronyc> password xyzzy
Password:
200 OK
chronyc> trimrtc
200 OK
chronyc> quit

RTC とシステム時刻の差は数マイクロ秒以内になるはずです。また、起動時にもほとんど正しいはずで、そのすぐ後に完全に同期されます。

NetworkManager を使って chronyd をオンラインにする

NetworkManager の dispatcher スクリプト を使うことで、ネットワークの接続によって chronyd のオンライン/オフラインモードを切り替えることができます。AUR から networkmanager-dispatcher-chronyAUR をインストールできます。

代替

Chrony の代わりになるものとして、Linux の標準 NTP クライアント/デーモンである NTPd や、OpenBSD プロジェクトの一部である OpenNTPD (現在は Linux 向けのメンテナンスはされていません) があります。

外部リンク