手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 8 chrony を使用した時刻同期

目次に戻る

概要

chronyを使用して外部のNTPサーバーと時刻を同期します。また、必要に応じて内部にNTPサービスを公開します。

前提条件

OS

CentOS Stream 8を使用します。

SELinux

有効です。無効にする場合はこちらを参照して下さい。

Firewalld

無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。

標準ポート番号

UDP:123 (NTP)

所感

NTP(時刻同期)はシステム全体を正常に稼働させるための根源的な機能です。多くのソフトウェアは時刻同期が正常であることが前提とされており、それが正常でなければ多くのシステムが破綻します。とても重要な位置づけですが、その仕組みに多くのシステムエンジニアは興味がなく(多分)、いざトラブルになった際にハマっているケースが多いように思えます。基本的なことは抑えておきましょう。

設定

インストール

chronyはデフォルトでインストールされています。存在しない場合は下記のコマンドでchronyをインストールします。

[root@centos ~]# dnf install chrony

/etc/chrony.conf

/etc/chrony.confはchronyの設定ファイルです。

chrony.confのデフォルト値

コメント行等を削除し、最小化したchrony.confは下記の通りです。

pool 2.centos.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony

chrony.confの設定

chrony.confを下記のように編集します。

[root@centos ~]# vim /etc/chrony.conf
pool IP or FQDN iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
leapsecmode slew
maxslewrate 1000
smoothtime 400 0.001024 leaponly
pool
時刻同期先のNTPサーバーを指定します。デフォルト値のままでもchronyは外部のNTPサーバーと同期するように設定されており、変更しなくとも動作します。自身でDNSサーバーを構築し、それをリゾルバとして使用している場合となりますが、最近のDNSはDNSSEC(SSLを使用)を使用している場合が多く、これはDNSで名前解決する際にDNSサーバー自身の時刻が適切である必要があります(SSLを使用するため)。公開されているNTPサーバーはFQDNとなっているものが多いですが、仮にNTPサーバーをFQDNで指定した場合、時刻同期が原因で名前解決が失敗するケースがあるため、制約がなければIPアドレス指定にしたほうが望ましいと思います。また、同期先のNTPサーバーは複数設定しましょう。
leapsecmode
chronyの閏秒における推奨設定です。
maxslewrate
leapsecmodeと同じです。
smoothtime
leapsecmodeと同じです。
NTPサーバーとして内部に公開する場合

chronyをNTPサーバーとして内部に公開する場合の設定です。必要に応じて設定して下さい。10.0.0.0/24が内部ネットワークのアドレスとします。

allow 10.0.0.0/24

サービス起動設定

chronyはデフォルトで起動していません。下記のコマンドでchronyを起動します。

[root@centos ~]# systemctl enable --now chronyd.service
[root@centos ~]# systemctl status chronyd.service

動作確認

時刻同期の状態確認

下記のコマンドで時刻同期の正常性を確認できます。先頭に^*があればそのNTPサーバーと同期されています。^+は同期候補です。尚、IPアドレスで指定している場合でも名前解決されればFQDNで表示されます。

[root@centos ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ IP or FQDN             2  10   377   339  +1880us[+1727us] +/- 8180us
^* IP or FQDN             1  10   377   140  -3701us[-3854us] +/- 4534us

閏秒対策の動作確認

Leap statusがInsert secondに変わるとleapを受信(leapは閏秒挿入の24時間前から受信)とのことです。こちらを引用させて頂きました。動作確認は面倒そうです。

[root@centos ~]# chronyc tracking
Reference ID    : xxxx (IP or FQDN)
Stratum         : 2
Ref time (UTC)  : Wed Apr 14 15:14:28 2021
System time     : 0.000124481 seconds slow of NTP time
Last offset     : +0.000240802 seconds
RMS offset      : 0.000645886 seconds
Frequency       : 14.430 ppm fast
Residual freq   : +0.030 ppm
Skew            : 1.301 ppm
Root delay      : 0.006722649 seconds
Root dispersion : 0.000683778 seconds
Update interval : 128.8 seconds
Leap status     : Normal

目次に戻る

CentOS 8 chrony を使用した時刻同期

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る