「Chrony」の版間の差分
細 |
Kusanaginoturugi (トーク | 投稿記録) |
||
(3人の利用者による、間の7版が非表示) | |||
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
− | [[Category:ネットワーク]] |
||
+ | [[Category:ネットワークタイムプロトコル]] |
||
[[en:Chrony]] |
[[en:Chrony]] |
||
− | この記事は、NTP クライアントとサーバーの代替である、Chrony の設定と起動の方法について記述しています。Chrony は |
+ | この記事は、NTP クライアントとサーバーの代替である、[http://chrony.tuxfamily.org/ 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 に接続を試みないようにすることができます: |
||
26行目: | 39行目: | ||
server 3.pool.ntp.org offline |
server 3.pool.ntp.org offline |
||
− | ホストネームの |
+ | 接続が確立されるまで 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 |
+ | # chronyc |
− | 200 OK |
||
chronyc> online |
chronyc> online |
||
200 OK |
200 OK |
||
57行目: | 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}} をインストールして使うことができます。 |
||
− | RTC とシステム時刻の差は数マイクロ秒以内になるはずです。また、起動時にもほとんど正しいはずで、そのすぐ後に完全に同期されます。 |
||
+ | === netctl === |
||
− | ===NetworkManager を使って chronyd をオンラインにする=== |
||
− | [[NetworkManager#ネットワークサービスと NetworkManager dispatcher|NetworkManager の dispatcher スクリプト]] を使うことで、ネットワークの接続によって ''chronyd'' のオンライン/オフラインモードを切り替えることができます。AUR から {{AUR|networkmanager-dispatcher-chrony}} をインストールできます。 |
||
+ | AUR から {{AUR|netctl-dispatcher-chrony}} をインストールしてください。netctl にフックが追加され接続時に自動的に実行されます。 |
||
− | ==代替== |
||
− | Chrony の代わりになるものとして、Linux の標準 NTP クライアント/デーモンである [[Network Time Protocol daemon|NTPd]] や、OpenBSD プロジェクトの一部である [[OpenNTPD]] (現在は Linux 向けのメンテナンスはされていません) があります。 |
||
− | ==参照== |
+ | == 参照 == |
− | * [[Time]] (コンピュータの時間管理の詳細) |
||
+ | * [[時刻]] (コンピュータの時刻同期に関する情報が揃っています) |
||
− | ==外部リンク== |
||
* http://chrony.tuxfamily.org/ |
* http://chrony.tuxfamily.org/ |
||
* http://www.ntp.org/ |
* http://www.ntp.org/ |
2024年8月14日 (水) 22:50時点における最新版
この記事は、NTP クライアントとサーバーの代替である、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
networkmanager や connman のディスパッチャサービスを使うことでオンライン・オフラインの状態を自動的に管理することができます。下を見てください。
最後に、/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 を参照してください。
システムクロックとハードウェアクロックを同期させる
起動中に起動時刻をハードウェアクロック (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 にフックが追加され接続時に自動的に実行されます。