Chrony
この記事は、NTP クライアントとサーバーの代替である、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 デーモンが動いている間、数分毎に同期されます。ハードウェアクロックの時刻がズレていると、システム時刻も数分のあいだ時刻がズレることになります。この場合ハードウェアクロックをリセットする必要があります。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 向けのメンテナンスはされていません) があります。