Contents
Overview
chrony を使用して時刻同期を設定します。
前提条件
インストール
chrony をインストールします。
myadmin@ubuntu:~$ sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install chrony
timesyncd は chrony のインストール時点で自動的に削除されます。これは以下のように APT のログに出力されます。
Removing systemd-timesyncd (249.11-0ubuntu3.9) ...
上記の通り、timesyncd は削除されますが、systemd のシンボリックリンク /etc/systemd/system/dbus-org.freedesktop.timesync1.service
は削除されず、リンク切れの状態となるため、手動で削除しておきます。
myadmin@ubuntu:~$ ls -l /etc/systemd/system/dbus-org.freedesktop.timesync1.service
lrwxrwxrwx 1 root root 45 Aug 10 2023 /etc/systemd/system/dbus-org.freedesktop.timesync1.service -> /lib/systemd/system/systemd-timesyncd.service
myadmin@ubuntu:~$ sudo rm /etc/systemd/system/dbus-org.freedesktop.timesync1.service
/etc/chrony/chrony.conf
/etc/chrony/chrony.conf
を確認します。
デフォルト値
デフォルト値は下記の通りです。
myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/chrony/chrony.conf | expand | tr -s [:space:] | sed 's/^\s/ /g'
confdir /etc/chrony/conf.d
pool ntp.ubuntu.com iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2
sourcedir /run/chrony-dhcp
sourcedir /etc/chrony/sources.d
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
ntsdumpdir /var/lib/chrony
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3
leapsectz right/UTC
設定値
設定例は下記の通りです。単一の FQDN で IPv4, IPv6 両方の IP アドレスを解決できる NTP サーバーを参照しています。
myadmin@ubuntu:~$ sudo cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.orig
myadmin@ubuntu:~$ sudo tee /etc/chrony/chrony.conf <<"EOF"
confdir /etc/chrony/conf.d
pool ntp.nict.jp iburst
pool time.google.com iburst
sourcedir /run/chrony-dhcp
sourcedir /etc/chrony/sources.d
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
ntsdumpdir /var/lib/chrony
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3
leapsectz right/UTC
EOF
設定の有効化
設定を有効化します。
myadmin@ubuntu:~$ sudo systemctl restart chronyd.service && systemctl status chronyd.service
正常性確認
正常性を確認します。
chronyc sources
chronyc sources
は非常に使用頻度の高いコマンドになります。NTP の基本的な正常性はこのコマンドで確認できます。
myadmin@ubuntu:~$ chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 2001:ce8:78::2 1 10 377 941 +174us[ +225us] +/- 7087us
^+ ntp-b2.nict.go.jp 1 10 377 6 +150us[ +150us] +/- 2351us
^* ntp-a3.nict.go.jp 1 10 377 379 -219us[ -167us] +/- 2701us
^+ ntp-k1.nict.jp 1 10 377 730 -163us[ -112us] +/- 7205us
^- time3.google.com 1 10 377 40 -626us[ -626us] +/- 23ms
^- time4.google.com 1 10 377 982 -427us[ -376us] +/- 21ms
^- time1.google.com 1 10 377 124 +1115us[+1115us] +/- 21ms
^- time3.google.com 1 10 377 19 +1269us[+1269us] +/- 20ms
以下は Red Hat の[18.3. chrony の使用]の内容をそのまま転記しています。
項目 | 説明 |
---|---|
M | ソースのモードを示します。^ はサーバーを意味し、= はピアを意味し、# はローカルに接続された基準クロックを意味します。 |
S | この列は、ソースの状態を示します。*は、chronyd が現在同期しているソースを表します。+は、選択したソースと結合する、受け入れ可能なソースを表します。-は、受け入れ可能なソースで、結合アルゴリズムにより除外されたものを表します。? は、接続が切断されたソース、またはパケットがすべてのテストをパスしないソースを表します。x は、chronyd が falseticker と考える (つまり、その時間が他の大半のソースと一致しない) クロックを表します。~は、時間の変動性が大きすぎるように見えるソースを表します。? 条件は、少なくとも 3 つのサンプルが収集されるまで開始時にも表示されます。 |
Name/IP address | ソースの名前または IP アドレス、もしくは基準クロックの参照 ID を表示します。 |
Stratum | 直近で受け取ったサンプルでレポートされているソースの stratum を表示します。Stratum 1 は、ローカルで基準クロックに接続しているコンピューターを示します。Stratum 1 コンピューターに同期しているコンピューターは、stratum 2 に存在することになります。同じく、Stratum 2 コンピューターに同期しているコンピューターは stratum 3 に存在することになり、以後も同様に続きます。 |
Poll | ソースがポーリングされるレートで、間隔のベース-2 対数を秒数で示します。つまり、値が 6 の場合は、64 秒ごとに測定が行われます。chronyd は、一般的な条件に応じて、ポーリングレートを自動的に変更します。 |
Reach | ソースの到達可能性のレジスターで、8 進法で表示されます。レジスターは 8 ビットで、ソースからパケットを受信するたびに、またはミスするたびに更新されます。値が 377 の場合は、最近の 8 回の通信全体で、有効な返信を受け取ったことを表します。 |
LastRx | このコラムは、ソースから最後のサンプルがいつ受信されたかを表示します。通常は、秒数で表示されます。m 、h 、d 、および y の各文字は、それぞれ分、時間、日、年を表します。値が 10 年の場合は、このソースからまだサンプルを受信していないことを示します。 |
Last sample | この列は、ローカルクロックと、最後に測定されたソースの間のオフセットを表示します。角括弧内の数字は、実際に測定されたオフセットを表示します。これには ns (ナノ秒)、us (マイクロ秒)、ms (ミリ秒)、または s (秒) の各接尾辞が付く場合があります。角括弧の左側は元の測定を示し、slew がそれ以降にローカルクロックに適用可能になるように調整されています。+/- に続く数字は、測定におけるエラーのマージンを示します。オフセットの値がプラスの場合は、ローカルクロックがソースよりも進んでいることを意味します。 |
chronyc tracking
chronyc tracking
は主に閏秒に関する状態を確認します。Leap status が Normal であれば正常、問題があれば Not synchronized となります。
myadmin@ubuntu:~$ chronyc tracking
Reference ID : 85F3EEF4 (ntp-a3.nict.go.jp)
Stratum : 2
Ref time (UTC) : Sun Jan 15 11:28:00 2023
System time : 0.000063860 seconds fast of NTP time
Last offset : +0.000052055 seconds
RMS offset : 0.000130739 seconds
Frequency : 10.485 ppm slow
Residual freq : +0.000 ppm
Skew : 0.010 ppm
Root delay : 0.004760023 seconds
Root dispersion : 0.000827168 seconds
Update interval : 1035.4 seconds
Leap status : Normal
Ubuntu 22.04 chrony 時刻同期設定