# Chrony (日本語)

この記事は、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.conf` の `commandkey` オプションを設定する必要があります。それが終わっているならば、インターネットに接続したときに `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 デーモンが動いている間、数分毎に同期されます。ハードウェアクロックの時刻がズレていると、システム時刻も数分のあいだ時刻がズレることになります。この場合ハードウェアクロックをリセットする必要があります。２つの方法があります。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-chrony をインストールできます。

## 代替

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

## 参照

- Time (日本語) (コンピュータの時間管理の詳細)

## 外部リンク

- http://chrony.tuxfamily.org/
- http://www.ntp.org/
- http://support.ntp.org/
- http://www.pool.ntp.org/
- http://www.eecis.udel.edu/~mills/ntp/html/index.html
- http://www.akadia.com/services/ntp_synchronize.html

Category:

- Networking (日本語)