CentOS7(RHEL7)から NTPに替わり chronyが時刻同期サーバー/クライアントとして採用されました。
従来の NTPを使用することも可能ですが、当サイトでも chronyに切り替えて使用することにします。

インストール

chronyがインストールされていない場合は、yumで chronyパッケージをインストールします。
chronyパッケージのインストール
[root]# yum -y install chrony

※ 以下の内容は chrony-1.29.1-1.el7.centos.x86_64 を対象に記述しています。

設定

chronyの動作設定を行います。
/etc/chrony.conf
@@ -1,9 +1,8 @@
 # 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
+server ntp.asahi-net.or.jp iburst
+server ntp.jst.mfeed.ad.jp iburst
+server ntp.nict.jp         iburst

 # Ignore stratum in source selection.
 stratumweight 0
@@ -19,11 +18,11 @@
 makestep 10 3

 # Allow NTP client access from local network.
-#allow 192.168/16
+allow 192.168/16

 # Listen for commands only on localhost.
 bindcmdaddress 127.0.0.1
-bindcmdaddress ::1
+#bindcmdaddress ::1

 # Serve time even if not synchronized to any NTP server.
 #local stratum 10
08行目
プロバイダのNTPサーバー
09行目
MFEED時刻情報提供サービス for Public
10行目
NICT公開NTPサービス
19行目
ローカルLAN内のPCからアクセスを許可
24行目
IPv6ではコマンドを使用しません

ファイアウォール設定

自ネットワークセグメントから時刻同期ができるようにファイアウォールの設定を行います。
クライアントPC側(ネットワークアダプタ:enp2s0)のゾーン設定は trustedにしていますので設定する必要はありませんが、ひかり電話対応ルーターに他の物理サーバーを一時的に増設することがありますので WAN側(ネットワークアダプタ:enp1s0)の DMZゾーンについては、自ネットワークセグメントからの時刻問い合わせを許可するように設定します。
ファイアウォール設定
# リアルタイムにルールを追加します
[root]# firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4
> source address=192.168.11.0/24 service name=ntp accept'
# 恒久的にルールを追加します
[root]# firewall-cmd --permanent --zone=dmz --add-rich-rule='rule family=ipv4
> source address=192.168.11.0/24 service name=ntp accept'

firewall-cmd --zone=dmz --add-service=ntpでルールを追加するとすべての接続元を許可してしまいます。
特定の接続元のみ許可する等の詳細なルールを設定するには上記のように rich-ruleもしくは direct設定を使用します。

chronyc sourcesコマンドエラー

当サイトの環境では、chrony.confの設定のみで再起動すると chronyc sourcesコマンドがエラーになります。
そのため、chrony自体は正常に起動しているのですが、上位の NTPサーバーとの同期が行われないようです。
chronyc sourcesコマンドエラー
[root]# systemctl status chronyd
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
   Active: active (running) 
     :

[root]# chronyc sources
506 Cannot talk to daemon

[root]# journalctl -u chronyd
Starting NTP client/server...
chronyd version 1.29.1 starting
     :
Started NTP client/server.
     :
(同期が行われていません)
     :

対策として、当サイトでは chronydの起動をネットワークの起動完了後まで遅延させることにしました。
chronyc sourcesコマンドエラー対策
# systemd - chronyd.serviceの Unit定義を上書きするカスタム定義ファイル(ドロップインスニペット)を作成します
[root]# mkdir /etc/systemd/system/chronyd.service.d
[root]# vi /etc/systemd/system/chronyd.service.d/custom.conf
----------(vi ここから)----------
[Unit]
After=
After=network.target
----------(vi ここまで)----------
6行目
置き換える前に空白にします

再起動して確認します。
chronyc sourcesコマンドエラー対策確認
# ドロップインスニペットを作成したのでsystemdをリロードします
[root]# systemctl daemon-reload
# chronydを再起動します
[root]# systemctl restart chronyd
# 確認します
[root]# systemctl status chronyd
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
  Drop-In: /etc/systemd/system/chronyd.service.d
           └─custom.conf
   Active: active (running)
     :

[root]# journalctl -u chronyd
Starting NTP client/server...
chronyd version 1.29.1 starting
     :
Started NTP client/server.
Selected source 133.243.238.163
     :

[root]# chronyc sources
210 Number of sources = 3
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- ntp1.jst.mfeed.ad.jp          2   6   377    15    +95us[  +95us] +/-   14ms
^* ntp-b2.nict.go.jp             1   6   377    15    -61us[ -119us] +/- 3841us
^- orion.asahi-net.or.jp         2   6   377    52   +183us[ +129us] +/-   42ms
上位の NTPサーバーとの同期が行われ、chronyc sourcesもエラーになりません。

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は下記にてお願いいたします。
System House ACT公式ブログ内記事 :
CentOS サーバー管理・運用 時刻同期サーバー chrony

トラックバックまたはコメントにてお寄せください。