Contents
概要
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