Raspberry Pi 位于防火墙后面,该防火墙被配置为仅允许其访问属于 Centos7 服务器的单个外部 IP(包含所有端口)。
如何配置两个设备才能确保树莓派的UTC时间始终准确。
我已采取的步骤...
- 在服务器上配置ntp,指向服务器0.us.pool.ntp.org,配置防火墙等。
- 在 Pi 客户端上,注释掉默认服务器并指向我的服务器,重新启动。
不过,时间有1个小时左右的休息时间。我还需要配置我的服务器以允许客户端访问吗?如果是这样,我可以/应该允许所有客户,还是只允许我的客户?
树莓派
michael@pi:~ $ ntpq -c lpeer
remote refid st t when poll reach delay offset jitter
==============================================================================
12.345.67.890 .INIT. 16 u - 64 0 0.000 0.000 0.000
michael@pi:~ $ date -R
Tue, 20 Jun 2017 10:37:17 +0000
大约24小时后
michael@pi:~ $ ntpq -c lpeer
remote refid st t when poll reach delay offset jitter
==============================================================================
74.208.80.161 .INIT. 16 u - 1024 0 0.000 0.000 0.000
michael@pi:~ $ date -R
Wed, 21 Jun 2017 11:29:08 +0000
michael@pi:~ $ grep '^[^ #]' /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
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
server 12.345.67.890 #This is the Centos server
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
中央操作系统
[michael@centos7 ~]$ ntpq -np
remote refid st t when poll reach delay offset jitter
==============================================================================
+104.156.99.226 192.12.19.20 2 u 21 1024 377 68.864 0.518 0.930
+108.59.2.24 130.133.1.10 2 u 68 1024 377 56.934 -0.234 0.881
+66.7.96.1 216.218.254.202 2 u 480 1024 367 71.228 0.149 1.752
*97.107.128.58 209.51.161.238 2 u 87 1024 377 52.881 1.430 1.507
[michael@centos7 ~]$
大约12小时后
[michael@centos7 ~]$ ntpq -np
remote refid st t when poll reach delay offset jitter
==============================================================================
+104.156.99.226 204.123.2.72 2 u 432 1024 377 68.857 0.466 0.128
+108.59.2.24 130.133.1.10 2 u 838 1024 377 56.550 -0.114 0.083
*66.7.96.1 216.218.192.202 2 u 911 1024 377 73.391 0.920 1.763
-97.107.128.58 209.51.161.238 2 u 655 1024 377 56.110 2.394 0.125
[michael@centos7 ~]$ date -R
Wed, 21 Jun 2017 12:30:44 +0000
[michael@centos7 ~]$ grep '^[^ #]' /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
logfile /var/log/ntp.log
答案1
使用 DS3231 RTC 模块 (I2C),并从 NTP 服务器更新其时间。它比我的高端商务笔记本电脑的内置 RTC 更准确。
用于Raspberry Pi RTC板实时时钟模块的下一代DS3231 |亚马逊
注意:切割/拆焊微型 SMD 二极管,其阴极直接连接到电池的正极端子。使用 DMM 上的 200 欧姆/连续性测试来找到它。它看起来像一颗微小的玻璃珠。您不需要给电池充电,但有些模块仍然会这样做。
不要使用 DS1307,它每月会漂移几分钟。
更新:您还可以使用 Si4703 模块来获取时间和日期 - 查看 SparkFuns 站点。
答案2
这个答案是在通过评论确定解决方案后提供的。
需要解决的问题是:
明晰
最初并不清楚哪些配置文件适用于 CentOS 系统(无),哪些配置文件适用于 Pi(一些)。后来对问题的更新令人钦佩地澄清了这一点。
CentOS 服务器最初并未与其上游服务器同步。
这需要轮询间隔的多次迭代,理想情况下至少一台服务器的可达性应为
377
。这是位字段的八进制表示形式,显示最近成功的请求数。每个间隔都会在位域的最低有效端推送一个1
或。对应于.0
377
11-111-111
Pi 无法同步到其 CentOS 上游服务器
CentOS 服务器上的防火墙
iptables
没有故障,但需要设置为允许从 Pi 到端口 123 的入站 UDP 查询并返回匹配的回复 -firewall-cmd --permanent --add-service ntp
。它还必须允许通过 UDP/123 向上游服务器发出出站请求及其相应的回复。使用 NTP 池中的服务器会使情况变得稍微复杂一些,因为服务器的 IP 地址每小时都会在池中进出。这里的一种选择是允许 UDP/123 上的所有出站流量和匹配的回复。事实证明,CentOS 系统有一个硬件防火墙保护,但未将其配置为允许来自 Pi 的 NTP 流量。
答案3
看起来 Pi 无法访问 NTP 服务。在 CentOS 上,默认启用内置防火墙,它会阻止大多数传入流量。要允许传入的 NTP 请求,请在 CentoOS 7 机器上执行以下操作:
firewall-cmd --permanent --add-service ntp
firewall-cmd --reload