2020/08/10 CentOS7.4





chronyでNTPサーバを構成する

NTPサーバは、ntpdからchronyへ移行してます。
新しいサーバではchronyを使用することのほうが多いでしょう。
ntpdの古い設計やコンフィグに比べれば、よく使う機能がわかりやすく改善されています。




先に、一番よく使うコマンドをこれです。
NTPのntpq -pに相当する
#chronyc sources

210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- tama.paina.net              2   6    17    27  +7329us[+7329us] +/-   62ms
^* 104.41.187.183              1   6    17    32   -184us[-5296us] +/- 8784us
^- any.time.nl                 2   6    17    32  +2430us[+2430us] +/-   37ms
^- 153.127.161.248             2   6    17    32  +3875us[-1237us] +/-   84ms
chronyクライアントソース状態を確認するコマンドです。
時刻同期を確認するために、頻繁に使うコマンドです。
ntpq -pも多用したコマンドですが、考えてみればntpqという直観的でないコマンド名に比べれば、
chronyc sourcesは覚えやすい…、と思っておきましょう。


chronyd.confの設定は後回しにして、周辺コマンドを先にまとめます。

chronydは、デフォルトでは起動していません。自動起動にします。
#systemctl status chronyd
#systemctl enable chronyd
#systemctl start chronyd

FirewallでNTPポートが開いてない可能性があります。
コマンドでFirewallの確認をし、必要なら許可します。
#firewall-cmd --get-active-zones
public
  interfaces: enp0s3

現在のFirewallゾーンで、NTPサービスが許可されているか確認
#firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

現在のFirewallゾーンにNTPサービス許可を追加
#firewall-cmd --add-service=ntp
success

#firewall-cmd --get-services
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: dhcpv6-client ntp ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

設定を永続化
#firewall-cmd --runtime-to-permanent
success




chronydをNTPサーバとして構成する

chronyd.confはntp.confに比べれば、かなりわかりやすくなっています。
LAN内でNTPサーバとして動作させる場合の変更点も、多くありません。

以下はCentOS7の標準のchronyd.confです。
赤字で示したところが、環境によって変更する必要がある場所です。
細かいことを除けば、変更点は3か所です。
/etc/chronyd.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking


上位NTPサーバの指定
server 0.centos.pool.ntp.org iburst
pool 1.centos.pool.ntp.org iburst
serverディレクティブは、上位NTPサーバを指定するものです。
poolも同様ですが、DNSラウンドロビンのように一つのNTPホスト名が複数のIPアドレスを返す場合に使用します。
しかしデフォルトの「*.centos.pool.ntp.org」は一つのホスト名が複数のIPを返すプールタイプですが、serverディレクティブで指定されています。
CentOS8では、指定がpool行に変更されています。


許可クライアント・拒否クライアント
allow 192.168.1.0/24
deny 10.0.0.0/8
見ての通り、本NTPサーバへ時刻同期しても良いクライアント、拒否するクライアントの指定です。
つまり許可アドレスを指定することで、chronydはNTPサーバとして動作することになります。
一般的なネットワーク範囲で表記します。


ストラータム
local stratum 10
このNTPサーバの、ストラータムを指定します。
というより、ここで考慮すべきことはストラータムの数字ではなく、ストラータム指定が有効か、
それともコメントアウト(デフォルト)してあるか。です。

コメントアウトしてある
→デフォルトの動作が選択されています。
 本NTPサーバが上位NTPサーバと同期している場合、通常のストラータムを使用します。
 上位NTPサーバと同期がとれなくなった場合、ストラータムは0となってLAN内のクライアントは
 本NTPサーバと同期できなくなります。

ストラータム値を指定してある
→指定したストラータム値で動作します。
 上位NTPと時刻同期できてなくても、指定したストラータムを保持します。
 LAN内のクライアントは、本NTPサーバと時刻同期できます。


以下に設定の違いによる、ストラータムの実験をしてみました。

まずはストラータム行がデフォルトの通り、コメントアウトしてある場合。
/etc/chronyd.confのストラータム行は、コメントアウトしてある

 上位NTP同期時
#chronyc tracking
Reference ID    : 6829BBB7 (104.41.187.183)
Stratum         : 2
Ref time (UTC)  : Mon Aug 10 06:35:58 2020
System time     : 0.000003577 seconds fast of NTP time
Last offset     : -0.005112062 seconds
RMS offset      : 0.005112062 seconds
Frequency       : 441.226 ppm slow
Residual freq   : -147.459 ppm
Skew            : 199.912 ppm
Root delay      : 0.017212998 seconds
Root dispersion : 0.012586772 seconds
Update interval : 1.7 seconds
Leap status     : Normal


 上位NTPとの同期が外れた
#chronyc tracking
Reference ID    : 00000000 ()
Stratum         : 0
Ref time (UTC)  : Thu Jan 01 00:00:00 1970
System time     : 0.000000000 seconds fast of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 491.247 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 1.000000000 seconds
Root dispersion : 1.000000000 seconds
Update interval : 0.0 seconds
Leap status     : Not synchronised
上位NTPと同期しているときは、Stratum値が2となり、同期が外れた場合は0となりました。
またLeap status値が、同期後はNormalだったものが、同期が外れた場合はNot synchronizedと
変更され、上位と同期していないことを示しています。


ストラータム行でストラータム値を指定している場合
/etc/chronyd.confのストラータム行で、10が指定してある

 上位NTP同期時
#chronyc tracking
Reference ID    : 7F7F0101 ()
Stratum         : 10
Ref time (UTC)  : Mon Aug 10 06:34:42 2020
System time     : 0.000002609 seconds fast of NTP time
Last offset     : +0.000424262 seconds
RMS offset      : 0.000424262 seconds
Frequency       : 0.000 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 0.000000000 seconds
Root dispersion : 0.000000000 seconds
Update interval : 2.0 seconds
Leap status     : Normal


 上位NTPとの同期が外れた
#chronyc tracking
Reference ID    : 7F7F0101 ()
Stratum         : 10
Ref time (UTC)  : Mon Aug 10 06:48:33 2020
System time     : 0.000000000 seconds fast of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 491.247 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 0.000000000 seconds
Root dispersion : 0.000000000 seconds
Update interval : 0.0 seconds
Leap status     : Normal
上位NTPサーバと同期しているときも、同期していない時も、Stratum値は指定した10となっています。
Leap status値も、上位NTPの同期とは関係なくNormalとなっています。







prev.gif