Ntpdを使用してRaspberryPiでNTPを動作させようとしています。systemd-timesyncdを無効にし、次を使用してntpをインストールしました。
$ Sudo apt-get install ntp
ただし、インストール後、ntp
はどのサーバーとも同期しません。 ntpを再インストールした後、1つまたは2つのサーバーに接続して同期することがあります。ただし、リセット(Sudo service ntp restart
)後は、どのサーバーにも接続できなくなります。
Raspberry Pi2モデルBとRaspberryPi3モデルB +を使用しています。両方のデバイスで機能するわけではありません。また、期待どおりに機能するRaspberry Pi3モデルBが1つあります。 Raspberry Piはすべて同じネットワークに接続されています(したがって、ネットワークのファイアウォールの障害である可能性はありません)。 RaspberryPiはRaspbianBusterで実行されます。
正しく同期しているときに、ntpd -p
を実行すると、サーバーが1つまたは2つしかないことがあります。ただし、正しく機能するRaspberry Piは、4台以上のサーバーと同期します。 NTP以前はRaspberryPi 2モデルBで動作していましたが、システムに何も変更せずに動作を停止しました。その後、NTPを完全に再インストールしましたが、成功しませんでした(Sudo apt-get purge --autoremove ntp
)。これらの結果は、/etc/ntp.conf
のデフォルトの構成ファイルを使用したものです。
このシステムを基盤となるシステムのサーバーにしたいので、systemd-timesyncd
を使用できません。 systemd-timesyncd
は問題なく動作しているようですが、デバイス間のクロック同期が1ミリ秒未満のサーバーが必要です。
以下に、NTPのステータスとntpq -pn
の結果を示しました。
再起動後のntpのステータス:
pi@raspberrypi:~ $ Sudo service ntp status
● ntp.service - Network Time Service
Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-24 14:48:10 CEST; 5s ago
Docs: man:ntpd(8)
Process: 2837 ExecStart=/usr/lib/ntp/ntp-systemd-wrapper (code=exited, status=0/SUCCESS)
Main PID: 2843 (ntpd)
Tasks: 2 (limit: 2200)
Memory: 1.0M
CGroup: /system.slice/ntp.service
└─2843 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 109:114
Apr 24 14:48:10 raspberrypi ntpd[2843]: Listen normally on 3 eth0 192.168.0.103:123
Apr 24 14:48:10 raspberrypi ntpd[2843]: Listen normally on 4 lo [::1]:123
Apr 24 14:48:10 raspberrypi ntpd[2843]: Listen normally on 5 eth0 [fe80::1ef8:d982:66ac:4214%2]:123
Apr 24 14:48:10 raspberrypi ntpd[2843]: Listening on routing socket on fd #22 for interface updates
Apr 24 14:48:10 raspberrypi ntpd[2843]: kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized
Apr 24 14:48:10 raspberrypi ntpd[2843]: kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized
Apr 24 14:48:11 raspberrypi ntpd[2843]: Soliciting pool server 174.138.9.187
Apr 24 14:48:12 raspberrypi ntpd[2843]: Soliciting pool server 194.5.96.30
Apr 24 14:48:13 raspberrypi ntpd[2843]: Soliciting pool server 162.159.200.123
Apr 24 14:48:14 raspberrypi ntpd[2843]: Soliciting pool server 83.162.149.224
ntpq -pn
の結果:
pi@raspberrypi:~ $ ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.001
1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.001
2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.001
3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.001
ntpstat
の結果:
pi@raspberrypi:~ $ ntpstat
unsynchronised
polling server every 8 s
NTPサーバーと同期しない原因を知っている人はいますか?
Sudo ntpdate -qu 0.debian.pool.ntp.org
の出力:
pi@raspberrypi:~ $ Sudo ntpdate -qu 0.debian.pool.ntp.org
server 213.136.0.252, stratum 1, offset 0.017778, delay 0.04608
server 45.159.204.28, stratum 2, offset 0.016319, delay 0.04184
server 83.98.155.30, stratum 2, offset 0.016869, delay 0.04346
server 94.228.220.14, stratum 2, offset 0.017546, delay 0.04454
24 Apr 16:23:17 ntpdate[3139]: adjust time server 213.136.0.252 offset 0.017778 sec
/etc/ntp.conf
の構成:
pi@raspberrypi:~ $ grep '^[^#]' /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict ::1
restrict source notrap nomodify noquery
timedatectl status
の結果:
pi@raspberrypi:~ $ timedatectl status
Local time: Fri 2020-04-24 16:40:05 CEST
Universal time: Fri 2020-04-24 14:40:05 UTC
RTC time: n/a
Time zone: Europe/Amsterdam (CEST, +0200)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
問題は、System clock synchronised
のパラメータtimedatectl status
がyes
である必要があることです。しかし、私はこれが常に当てはまるとは限らないことに気づきました。
これはtimedatectl status
の正しい出力です。
$ timedatectl status
Local time: Tue 2020-04-28 11:28:44 CEST
Universal time: Tue 2020-04-28 09:28:44 UTC
RTC time: n/a
Time zone: Europe/Amsterdam (CEST, +0200)
System clock synchronized: yes
NTP service: inactive
RTC in local TZ: no
この問題は、以下の手順を実行することで解決できます。
最初にntpd
を削除する必要があります。そうしないと、systemd-timesyncd
の起動に問題が発生する可能性があります。これは、次のコマンドで実行できます(このコマンドは/etc/ntp.conf
を削除しません)。
Sudo apt-get remove ntp
その後、次のコマンドを実行して、ntpを有効にし、 `` `systemd-timesyncd``を開始できます。
Sudo timedatectl set-ntp yes
このコマンドは自動的にsystemd-timesyncd
をオンにします。したがって、systemd-timesyncd
を停止して無効にする必要があります。これは、次のコマンドで実行できます。
Sudo systemctl stop systemd-timesyncd
Sudo systemctl disable systemd-timesyncd
ntpd
を再インストールできるようになりました:
Sudo apt-get install ntp
これで、次のコマンドを使用してntpd
を再起動できます。
Sudo service ntp restart
次のコマンドを実行すると、ntp
が正しく機能するかどうかを確認できます。
ntpq -pn
は複数のIPを返す必要があります。
ntpstat
は、NTPサーバーに同期されていることを示している必要があります。ntpstat
は次のコマンドでインストールできます:
Sudo apt-get install ntpstat