CentOS7でChrony で ntpサーバーを立てた
centos7から導入された ntp サーバー/クライアン ソフトである chrony を使って ntp サーバーを立てた際、クライアントからntpサーバーに時間同期をかけた際に、接続できなかった。
chrony に関しては、新しいNTPクライアント&サーバ、chronyを参考にさせて頂きました。
以下、構成を示します。
ラズパイは RTC(real-time clock)を持っていないので、起動のたびに時間が、1970年1月1日にリセットされてしまいます。インターネットに接続されていれば、インターネット上の ntpサーバーにアクセスし時刻を同期してくれます。
今回、インターネットに接続しない閉じたネットワークで時刻同期を実現するために、RTCを持っているWindowsノートPCを、大本のntpサーバーとして利用しています。
ラズパイのntpクライアン(複数台想定)は、1第のラズパイ(192.168.100.1)で動いている ntp サーバーにアクセスするような構成です。
ラズパイ(192.168.100.1)の各種設定
ラズパイ(192.168.100.1)の ntp サーバーの chrony の設定
# Allow NTP client access from local network.
allow 192.168.100.0/24
port 123
セグメント 192.168.100.0/24 から ntp サーバーへの接続を許可します。
ntp サーバーの利用ポートを 123 に設定します。
chronyd を再起動します。
# systemctl restart chronyd
# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since 木 1970-01-01 09:54:29 JST; 50 years 1 months ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 961 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 957 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 959 (chronyd)
CGroup: /system.slice/chronyd.service
mq959 /usr/sbin/chronyd
1月 01 09:54:29 mame-s01 systemd[1]: Starting NTP client/server...
1月 01 09:54:29 mame-s01 chronyd[959]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH ...6 +DEBUG)
1月 01 09:54:29 mame-s01 chronyd[959]: Frequency 14.006 +/- 5.749 ppm read from /var/lib/chrony/drift
1月 01 09:54:29 mame-s01 systemd[1]: Started NTP client/server.
1月 01 09:58:54 mame-s01 chronyd[959]: Selected source 192.168.100.5
1月 01 09:58:54 mame-s01 chronyd[959]: System clock wrong by 1582422507.662771 seconds, adjustment started
2月 23 11:47:21 mame-s01 chronyd[959]: System clock was stepped by 1582422507.662771 seconds
Hint: Some lines were ellipsized, use -l to show in full.
ラズパイ(192.168.100.1) のfirewall の設定です。
私は、firewall の zone を public ではなく local というのを追加して、local を active にして利用しています。
CentOS 7 firewalld よく使うコマンドを参考にしました。
# firewall-cmd --list-all --zone=local
local (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
次に、firewall に ntp サービスを登録します。
# firewall-cmd --permanent --zone=local --add-service=ntp
success
# firewall-cmd --reload
success
# firewall-cmd --list-all --zone=local
local (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ntp ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
きっとこれで 外部から port 123 にアクセスできるはず。
ラズパイ(192.168.100.11)の各種設定
ラズパイ(192.168.100.11)の ntp クライアント chrony の設定
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
server ntp2.jst.mfeed.ad.jp iburst
server 192.168.100.1 iburst
# server 192.168.100.5 iburst
ntp サーバーとして2つ設定してあります
1つ目は、ntp2.jst.mfeed.ad.jp ラズパイを、インターネットに接続できる環境で動かしたさいに参照するタイムサーバーです。
2つ目は、先程建てた ラズパイ(192.168.100.1)で動いている ntp サーバーです。
コメントアウトしている箇所(192.168.100.5)は、Windows10で動いている ntp サーバーです。
chrony を再起動します。
# systemctl restart chronyd
# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2020-02-23 13:31:06 JST; 2s ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 743 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 739 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 741 (chronyd)
CGroup: /system.slice/chronyd.service
mq741 /usr/sbin/chronyd
2月 23 13:31:06 mame-s11 systemd[1]: Starting NTP client/server...
2月 23 13:31:06 mame-s11 chronyd[741]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +...BUG)
2月 23 13:31:06 mame-s11 chronyd[741]: Frequency 16.177 +/- 5.870 ppm read from /var/lib/chrony/drift
2月 23 13:31:06 mame-s11 systemd[1]: Started NTP client/server.
Hint: Some lines were ellipsized, use -l to show in full.
chronyc sources で ntpサーバーへの接続状況を確認します。
# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.100.1 5 6 17 26 +75ns[+8883ns] +/- 145ms
^* が付いている IPアドレスの ntpサーバーに時刻同期しています。
以上