CentOS7 on Raspberry Pi 4 : Chrony で ntpサーバー

# CentOS7でChrony で ntpサーバーを立てた
centos7から導入された ntp サーバー/クライアン ソフトである chrony を使って ntp サーバーを立てた際、クライアントからntpサーバーに時間同期をかけた際に、接続できなかった。

chrony に関しては、[新しいNTPクライアント＆サーバ、chrony](https://qiita.com/yunano/items/7883cf295f91f4ef716b)を参考にさせて頂きました。

以下、構成を示します。

![1582429167049.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100559/c1e52d2d-bd53-a186-ae31-be2c0ace1373.jpeg)

ラズパイは　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 の設定

``` /etc/chrony.conf
# 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 よく使うコマンド](https://qiita.com/kenjjiijjii/items/1057af2dddc34022b09e)を参考にしました。

```
# 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 の設定

```:/etc/chrony.conf
# 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サーバーに時刻同期しています。 

以上