树莓派

树莓派

Raspberry Pi 位于防火墙后面,该防火墙被配置为仅允许其访问属于 Centos7 服务器的单个外部 IP(包含所有端口)。

如何配置两个设备才能确保树莓派的UTC时间始终准确。

我已采取的步骤...

  1. 在服务器上配置ntp,指向服务器0.us.pool.ntp.org,配置防火墙等。
  2. 在 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 欧姆/连续性测试来找到它。它看起来像一颗微小的玻璃珠。您不需要给电池充电,但有些模块仍然会这样做。

将 DS3231 实时时钟添加到 Raspberry Pi

不要使用 DS1307,它每月会漂移几分钟。

更新:您还可以使用 Si4703 模块来获取时间和日期 - 查看 SparkFuns 站点。

答案2

这个答案是在通过评论确定解决方案后提供的。

需要解决的问题是:

  1. 明晰

    最初并不清楚哪些配置文件适用于 CentOS 系统(无),哪些配置文件适用于 Pi(一些)。后来对问题的更新令人钦佩地澄清了这一点。

  2. CentOS 服务器最初并未与其上游服务器同步。

    这需要轮询间隔的多次迭代,理想情况下至少一台服务器的可达性应为377。这是位字段的八进制表示形式,显示最近成功的请求数。每个间隔都会在位域的最低有效端推送一个1或。对应于.037711-111-111

  3. 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

相关内容