「Chrony」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(関連ページを更新)
 
(3人の利用者による、間の4版が非表示)
1行目: 1行目:
  +
{{Lowercase title}}
[[Category:ネットワーク]]
 
  +
[[Category:Network Time Protocol]]
 
[[en:Chrony]]
 
[[en:Chrony]]
  +
この記事は、NTP クライアントとサーバーの代替である、[http://chrony.tuxfamily.org/ Chrony] の設定と起動の方法について記述しています。Chrony はローミングや、ネットワークに接続している時間が限られるシステムに向いています。
{{Related articles start}}
 
{{Related|時刻}}
 
{{Related|Network Time Protocol daemon}}
 
{{Related|systemd-timesyncd}}
 
{{Related|OpenNTPD}}
 
{{Related articles end}}
 
この記事は、NTP クライアントとサーバーの代替である、Chrony の設定と起動の方法について記述しています。Chrony はローミングや、ネットワークに接続している時間が限られるシステムに向いています。
 
   
 
==インストール==
 
==インストール==
{{Pkg|chrony}} [[公式リポジ]]から入手できます
+
{{Pkg|chrony}} パッケージを[[インスール]]してください
   
==設定==
+
== 設定 ==
まず {{ic|/etc/chrony.conf}} に設定することは、マシンが同期するサーバの設定です。
 
NTP サーバは階層的なシステムによって ''strata'' と呼ばれるたくさんのレベルにクラス分けされています。その定義は、独立したタイムソースとされるデバイスは ''stratum 0'' ソース、''stratum 0'' のデバイスに直接接続しているサーバーを ''stratum 1'' ソース、''stratum 1'' ソースに接続しているサーバーを ''stratum 2'' ソース、と続きます。
 
   
  +
最小限の設定ファイルは以下のようになります (ホストネームの代わりに IP アドレスを使用):
サーバーの stratum は正確性や信頼性を表しているわけではないことを理解する必要があります。一般的に、stratum 2 のサーバーが時刻同期に使われます: どのサーバーに接続するのかまだ決めてない場合、[http://www.pool.ntp.org/ pool.ntp.org] サーバー ([http://support.ntp.org/bin/view/Servers/NTPPoolServers alternate link]) を使って一番地理的に近いサーバープールを選んで下さい。
 
   
  +
{{hc|/etc/chrony.conf|
サンプル:
 
  +
server 1.2.3.4 offline
  +
server 5.6.7.8 offline
  +
server 9.10.11.12 offline
  +
driftfile /etc/chrony.drift
  +
rtconutc
  +
rtcsync
  +
}}
  +
  +
=== NTP サーバー ===
  +
まず {{ic|/etc/chrony.conf}} にマシンが同期するサーバーを設定する必要があります。NTP サーバーは ''strata'' と呼ばれる多数の階層でクラス分けされています。独立したソースとされるデバイスは ''stratum 0'' ソース、''stratum 0'' デバイスに直接接続しているサーバーは ''stratum 1'' ソース、''stratum 1'' ソースに接続しているデバイスは ''stratum 2'' ソースというふうに分類されます。
  +
  +
サーバーの stratum は正確性や信頼性を表しているわけではないことに注意してください。一般的に時刻同期に使われるのは stratum 2 のサーバーです。どのサーバーに接続するのかまだ決めてない場合、[http://www.pool.ntp.org/ pool.ntp.org] サーバー ([http://support.ntp.org/bin/view/Servers/NTPPoolServers 別リンク]) を使って一番地理的に近いサーバープールを選んでください。
  +
  +
設定例:
   
server 0.pool.ntp.org
+
server 0.pool.ntp.org iburst
server 1.pool.ntp.org
+
server 1.pool.ntp.org iburst
server 2.pool.ntp.org
+
server 2.pool.ntp.org iburst
server 3.pool.ntp.org
+
server 3.pool.ntp.org iburst
   
 
起動時にコンピュータがインターネットに接続しない場合、''offline'' オプションを使うことが推奨されます。サーバーに接続できるようになるまで chrony に接続を試みないようにすることができます:
 
起動時にコンピュータがインターネットに接続しない場合、''offline'' オプションを使うことが推奨されます。サーバーに接続できるようになるまで chrony に接続を試みないようにすることができます:
32行目: 39行目:
 
server 3.pool.ntp.org offline
 
server 3.pool.ntp.org offline
   
ホストネームのわりに IP アドレスを使ったり、{{ic|/etc/hosts}} に使うホストネーム IP アドレスを記述するのは、DNS による名前解決が省略きるのでいいアイデアと言えます
+
接続が確立されるまで DNS 解決は利用できないため、ホストネームのわりに IP アドレスを使ったり、{{ic|/etc/hosts}} ファイルでホストネームに対して IP アドレスを指定すると良いしょう
   
  +
=== chronyd にインターネット接続が確立されたことを知らせる ===
chronyd に接続が確立したことを知らせるには、chronyc と一緒にログインできるようにする必要があります。このために、管理者パスワードを chronyd に設定しなくてはなりません。管理者パスワードを設定するには {{ic|/etc/chrony.keys}} を作って一行加えるだけです:
 
   
  +
インターネットに接続したら、以下のコマンドを実行:
{{hc|/etc/chrony.keys|1 xyzzy}}
 
   
さらに {{ic|/etc/chrony.conf}} に以下の行を追加します:
 
 
commandkey 1
 
 
利用するために必要最小限に設定するとファイルの中身は次のようになります(ホストネームの代わりに IP アドレスを利用):
 
 
{{hc|/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 にインターネット接続が確立されたことを知らせる===
 
これをするには、上で示したように {{ic|/etc/chrony.conf}} の {{ic|commandkey}} オプションを設定する必要があります。それが終わっているならば、インターネットに接続したときに {{ic|chronyc}} を起動して次のコマンドを入力してください:
 
 
{{bc|
 
{{bc|
chronyc> password xyzzy
+
# chronyc
200 OK
 
 
chronyc> online
 
chronyc> online
 
200 OK
 
200 OK
63行目: 52行目:
 
}}
 
}}
   
  +
{{ic|activity}} オプションを使うことで状態を表示できます:
これで Chrony は設定された時刻サーバーに接続して必要なときにあなたの時刻のアップデートを行うはずです。
 
   
Chrony にインターネットに接続していないことを知らせるには、次を実行してください:
 
 
{{bc|
 
{{bc|
  +
# chronyc activity
chronyc> password xyzzy
 
 
200 OK
 
200 OK
  +
3 sources online
chronyc> offline
 
  +
0 sources offline
  +
0 sources doing burst (return to online)
  +
0 sources doing burst (return to offline)
  +
0 sources with unknown address
  +
}}
  +
  +
コマンドを実行すると Chrony はあらかじめ設定された時刻サーバーに接続して必要であれば時刻を更新します。インターネットに接続しなくなったことを通知するには、以下のコマンドを実行:
  +
  +
{{bc|
  +
# chronyc offline
 
200 OK
 
200 OK
  +
chronyc> exit
 
  +
# chronyc activity
  +
200 OK
  +
0 sources online
  +
3 sources offline
  +
0 sources doing burst (return to online)
  +
0 sources doing burst (return to offline)
  +
0 sources with unknown address
 
}}
 
}}
   
  +
{{Pkg|networkmanager}} や {{Pkg|connman}} のディスパッチャサービスを使うことでオンライン・オフラインの状態を自動的に管理することができます。下を見てください。
最後に、{{ic|/usr/share/doc/chrony/chrony.txt}} のユーザーガイドを覚えておいてください、疑問がでたときに役にたつはずです。[http://chrony.tuxfamily.org/manual.html オンラインでも利用できます。]関連する man ページも参照しましょう: {{ic|man <nowiki>{chrony|chronyc|chronyd|chrony.conf}</nowiki>}})。
 
   
  +
最後に、{{ic|/usr/share/doc/chrony/chrony.txt}} のユーザーガイドを覚えておいてください、疑問がでたときに役にたつはずです。オンラインから読むこともできます [http://chrony.tuxfamily.org/manual.html]。関連する man ページも参照しましょう: {{ic|man <nowiki>{chrony|chronyc|chronyd|chrony.conf}</nowiki>}}。
==使用方法==
 
===chronyd の起動===
 
   
  +
=== For intermittently running desktops ===
Chrony パッケージは {{ic|chrony.service}} を提供しています、詳しくは [[systemd]] を見て下さい。
 
   
  +
The configuration described here is not really suited well for intermittently running desktops. A machine running Arch Linux for five years, accumulated a 300 s error within the RTC. After a reboot it took chrony a long time to adjust this difference.
===システムクロックとハードウェアクロックを同期させる===
 
起動中に起動時刻をハードウェアクロック (RTC) から読み込みシステム時刻がセットされます。そして chrony デーモンが動いている間、数分毎に同期されます。ハードウェアクロックの時刻がズレていると、システム時刻も数分のあいだ時刻がズレることになります。この場合ハードウェアクロックをリセットする必要があります。2つの方法があります。hwclock コマンドを使って時刻をセットするには一時的に chrony サービスを止めなくてはなりません:
 
   
  +
{{hc|/etc/sysconfig/chronyd|output=OPTIONS='-r -s'
{{bc|# systemctl stop chrony}}
 
  +
}}
   
  +
{{hc|/etc/chrony.conf|
それから時刻を設定します:
 
  +
dumponexit
  +
dumpdir /var/lib/chrony
  +
rtcfile /var/lib/chrony/rtc
  +
}}
   
  +
This keeps, interestingly, the RTC still out-of-date, but after each re-start, chrony adjusts the accumulated error of the RTC and the system time is quite synchronous to NTP even shortly after a start.
{{bc|# hwclock --set --date<nowiki>=</nowiki>"2013-02-15 16:45:05"}}
 
   
  +
== 使用方法 ==
もしくはシステム時刻を使って RTC を設定します:
 
   
  +
=== chronyd の起動 ===
{{bc|# hwclock --systohc}}
 
   
  +
パッケージには {{ic|chronyd.service}} が含まれています。詳しくは [[systemd]] を参照してください。
そして chrony サービスをもう一度起動します:
 
   
  +
{{Note|{{ic|systemd-timesyncd.service}} は {{ic|chronyd}} と衝突するため、{{ic|chronyd}} を[[有効化]]するには先に {{ic|systemd-timesyncd.service}} を無効にする必要があります。}}
{{bc|# systemctl start chrony}}
 
   
  +
=== システムクロックとハードウェアクロックを同期させる ===
コマンドラインから chronyc を使うことで、chronyd を動かしながら RTC を設定することもできます:
 
   
  +
起動中に起動時刻をハードウェアクロック (RTC) から読み込みシステム時刻がセットされます。そして chrony デーモンが動いている間、数分毎に同期されます。ハードウェアクロックの時刻がズレていると、システム時刻も数分のあいだ時刻がズレることになります。この場合ハードウェアクロックをリセットする必要があります。
{{bc|# chronyc> password xyzzy
 
  +
Password:
 
  +
chronyc を使うことで強制的にシステム時刻をハードウェアに同期させることができます:
200 OK
 
  +
  +
{{bc|
  +
# chronyc
 
chronyc> trimrtc
 
chronyc> trimrtc
 
200 OK
 
200 OK
chronyc> quit}}
+
chronyc> quit
  +
}}
  +
  +
RTC とシステム時刻の差は数マイクロ秒以内になるはずです。すぐ後に完全に同期されます。
  +
  +
== ネットワーク状態の通知 ==
  +
  +
{{ic|chrony.conf}} でプールを offline で指定した場合、ネットワーク状態が変わったことを ''chrony'' に通知する必要があります。
  +
  +
ネットワーク状態を ''chrony'' に通知する方法としては ''chronyc'' を使用する方法と、使用しているネットワーク設定マネージャのディスパッチャを使用する方法があります。
  +
  +
=== NetworkManager ===
  +
  +
[[NetworkManager#ネットワークサービスと NetworkManager dispatcher|NetworkManager の dispatcher スクリプト]]を使うことで、ネットワークの接続によって ''chronyd'' をオンライン/オフラインモードに切り替えることができます。AUR から {{AUR|networkmanager-dispatcher-chrony}} をインストールして使うことができます。
   
  +
=== netctl ===
RTC とシステム時刻の差は数マイクロ秒以内になるはずです。また、起動時にもほとんど正しいはずで、そのすぐ後に完全に同期されます。
 
   
  +
AUR から {{AUR|netctl-dispatcher-chrony}} をインストールしてください。netctl にフックが追加され接続時に自動的に実行されます。
===NetworkManager を使って chronyd をオンラインにする===
 
[[NetworkManager#ネットワークサービスと NetworkManager dispatcher|NetworkManager の dispatcher スクリプト]] を使うことで、ネットワークの接続によって ''chronyd'' のオンライン/オフラインモードを切り替えることができます。AUR から {{AUR|networkmanager-dispatcher-chrony}} をインストールできます。
 
   
==代替==
+
== 参照 ==
Chrony の代わりになるものとして、Linux の標準 NTP クライアント/デーモンである [[Network Time Protocol daemon|NTPd]] や、OpenBSD プロジェクトの一部である [[OpenNTPD]] (現在は Linux 向けのメンテナンスはされていません) があります。
 
   
  +
* [[時刻]] (コンピュータの時刻同期に関する情報が揃っています)
==外部リンク==
 
 
* http://chrony.tuxfamily.org/
 
* http://chrony.tuxfamily.org/
 
* http://www.ntp.org/
 
* http://www.ntp.org/

2022年11月14日 (月) 17:30時点における最新版

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

インストール

chrony パッケージをインストールしてください。

設定

最小限の設定ファイルは以下のようになります (ホストネームの代わりに IP アドレスを使用):

/etc/chrony.conf
server 1.2.3.4 offline
server 5.6.7.8 offline
server 9.10.11.12 offline
driftfile /etc/chrony.drift
rtconutc
rtcsync

NTP サーバー

まず /etc/chrony.conf にマシンが同期するサーバーを設定する必要があります。NTP サーバーは strata と呼ばれる多数の階層でクラス分けされています。独立したソースとされるデバイスは stratum 0 ソース、stratum 0 デバイスに直接接続しているサーバーは stratum 1 ソース、stratum 1 ソースに接続しているデバイスは stratum 2 ソースというふうに分類されます。

サーバーの stratum は正確性や信頼性を表しているわけではないことに注意してください。一般的に時刻同期に使われるのは stratum 2 のサーバーです。どのサーバーに接続するのかまだ決めてない場合、pool.ntp.org サーバー (別リンク) を使って一番地理的に近いサーバープールを選んでください。

設定例:

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

起動時にコンピュータがインターネットに接続しない場合、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

接続が確立されるまで DNS 解決は利用できないため、ホストネームのかわりに IP アドレスを使ったり、/etc/hosts ファイルでホストネームに対して IP アドレスを指定すると良いでしょう。

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

インターネットに接続したら、以下のコマンドを実行:

# chronyc
chronyc> online
200 OK
chronyc> exit

activity オプションを使うことで状態を表示できます:

# chronyc activity
200 OK
3 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

コマンドを実行すると Chrony はあらかじめ設定された時刻サーバーに接続して必要であれば時刻を更新します。インターネットに接続しなくなったことを通知するには、以下のコマンドを実行:

# chronyc offline
200 OK

# chronyc activity
200 OK
0 sources online
3 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

networkmanagerconnman のディスパッチャサービスを使うことでオンライン・オフラインの状態を自動的に管理することができます。下を見てください。

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

For intermittently running desktops

The configuration described here is not really suited well for intermittently running desktops. A machine running Arch Linux for five years, accumulated a 300 s error within the RTC. After a reboot it took chrony a long time to adjust this difference.

/etc/sysconfig/chronyd
OPTIONS='-r -s'
/etc/chrony.conf
dumponexit
dumpdir /var/lib/chrony
rtcfile /var/lib/chrony/rtc

This keeps, interestingly, the RTC still out-of-date, but after each re-start, chrony adjusts the accumulated error of the RTC and the system time is quite synchronous to NTP even shortly after a start.

使用方法

chronyd の起動

パッケージには chronyd.service が含まれています。詳しくは systemd を参照してください。

ノート: systemd-timesyncd.servicechronyd と衝突するため、chronyd有効化するには先に systemd-timesyncd.service を無効にする必要があります。

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

起動中に起動時刻をハードウェアクロック (RTC) から読み込みシステム時刻がセットされます。そして chrony デーモンが動いている間、数分毎に同期されます。ハードウェアクロックの時刻がズレていると、システム時刻も数分のあいだ時刻がズレることになります。この場合ハードウェアクロックをリセットする必要があります。

chronyc を使うことで強制的にシステム時刻をハードウェアに同期させることができます:

# chronyc
chronyc> trimrtc
200 OK
chronyc> quit

RTC とシステム時刻の差は数マイクロ秒以内になるはずです。すぐ後に完全に同期されます。

ネットワーク状態の通知

chrony.conf でプールを offline で指定した場合、ネットワーク状態が変わったことを chrony に通知する必要があります。

ネットワーク状態を chrony に通知する方法としては chronyc を使用する方法と、使用しているネットワーク設定マネージャのディスパッチャを使用する方法があります。

NetworkManager

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

netctl

AUR から netctl-dispatcher-chronyAUR をインストールしてください。netctl にフックが追加され接続時に自動的に実行されます。

参照