如何配置NTP用于CentOS 7上的NTP池项目

介绍

准确的时间保持对于几乎任何服务或软件至关重要。 电子邮件,记录器,事件系统和调度程序,用户认证机制和在分布式平台上运行的服务都需要精确的时间戳记来按时间顺序记录事件。 这些服务使用网络时间协议(NTP)来将系统时钟与受信任的外部源进行同步。 该源可以是原子钟,GPS接收器或已经使用NTP的另一个时间服务器。

这就是NTP Pool Project项目所在。 这是一个巨大的全球时间服务器集群,可以方便地访问世界各地数千万客户的已知“快乐时光”。 这是Ubuntu和大多数其他主要Linux发行版以及许多联网设备和软件应用程序的默认时间服务器。

在本指南中,您将在服务器上设置NTP,并将其配置为NTP Pool Project的一部分,从而为NTP Pool Project的其他用户提供准确的时间。 提供您的备用CPU周期和未使用的带宽是向社区提供回馈的完美方式。

所需的带宽相对较低,可以根据您可以提供的数量和服务器所在的位置进行调整。 每个客户端只需要每20分钟发送几个UDP数据包,所以大多数服务器每秒只能收到大约十几个NTP数据包,每秒高达一百个数据包每秒的峰值几次。 这转换为10-15Kb /秒的带宽使用,峰值为50-120Kb /秒。

加入NTP池项目之前,您必须满足以下三个基本要求:

  1. 您的服务器必须具有静态IP地址。
  2. 您的服务器必须具有永久和稳定的互联网连接。
  3. 您的IP地址最不可更改,或者只是偶尔更改(每年一次或更少)。

对于大多数基于云的服务器,通常会自动满足前两个要求。 第三个要求强调,加入NTP池项目是长期的承诺。 当然,如果你的情况发生变化,把服务器从池中取出来就可以了,但在流量完全消失之前需要很长时间(大部分是几周,但有时甚至数年甚至数年)。

先决条件

要完成本教程,您将需要:

第1步 - 安装NTP

默认情况下不安装NTP软件包,因此您将使用软件包管理器进行安装。 首先,更新您的软件包:

sudo yum update

然后安装NTP:

sudo yum install ntp

安装完成后,启动服务并对其进行配置,以便每次启动服务器时自动启动服务:

sudo systemctl start ntpd
sudo systemctl enable ntpd

如果您已配置了先决条件中指定的防火墙,则必须允许NTP服务的UDP流量才能与NTP池进行通信:

sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

有关FirewallD的更多信息,请参阅如何在CentOS 7上使用FirewallD设置防火墙

NTP已安装,但配置为使用默认的NTP池时间服务器。 让我们选择一些特定的时间服务器。

第2步 - 选择合适的上游服务器

NTP池项目询问希望加入池的运营商选择好的网络本地时间服务器,而不是使用默认的pool.ntp.org服务器。 这样可以确保NTP Pool项目的可靠性,快速性和健康性。 选择时间源时,您将需要一个稳定的网络连接,无需丢包,并且服务器之间尽可能少的跳数。

多层次和分层的NTP协议将相关方分为主服务器,辅助服务器和客户端。 主服务器称为Stratum 1 ,并直接连接到时间源(称为Stratum 0) 该源可以是原子钟,GPS接收器或无线电导航系统。 链中的辅助服务器称为Stratum 2Stratum 3等。

每个服务器也是客户端。 层2客户端从上游第1层服务器接收时间,并向下游第3层服务器或其他客户端提供时间。 要使NTP Pool Project成员正常工作,NTP守护程序至少需要配置三个服务器。 该项目建议至少四个,不超过七个来源。

NTP池项目提供公共Stratum 1和Startum 2时间服务器的列表。 列表指定NTP时间服务器可用于公开访问在规定的限制。 你会发现三种类型:

  • OpenAccess :此时间服务器对任何符合NTP Pool 使用建议的客户端都是开放的。
  • RestrictedAccess :此时间服务器除了NTP池使用建议之外,还有一些访问限制。
  • ClosedAccess :此时间服务器已关闭或需要事先安排。

警告 :请勿使用未列为OpenAccess的服务器,除非您已获得批准。

访问Stratum 1时间服务器列表 您会看到如下列表:

Stratum 1服务器

ISO代码列对列表进行排序,并找到一个或两个地理位置靠近服务器数据中心的服务器。 当服务器的Access Policy列显示OpenAccess时,您可以使用它,而不会出现问题。 如果说“RestrictedAccess”,点击打开该条目并阅读AccessDetails字段中提到的说明。 通常,您会发现NotificationMessage设置为 ,这意味着您必须制作一个针对ServerContact中提供的地址的非正式电子邮件,通知服务器运营商您希望将此时间服务器用作NTP池的时间源项目成员。

确定要使用的服务器后,请单击ISO列中每个服务器的链接,并复制其主机名或IP地址。 您将在第3步中使用这些地址。

接下来,按照相同的过程,从Stratum 2列表中选择三个或四个服务器。

一旦您选择了时间服务器,就可以配置NTP客户端来使用它们了。

第3步 - 配置NTP加入池

要使用您的服务器与NTP池,并配置新的时间服务器,您需要对NTP守护程序的配置进行一些修改。 为此,请编辑/etc/ntp.conf文件:

sudo vi /etc/ntp.conf

首先,确保配置了一个漂移文件。 漂移文件存储以标称频率运行的系统时钟与保持与正确时间同步所需的频率之间的频率偏移。 它有助于实现稳定准确的时间。 您应该在默认安装的配置文件的顶部找到它:

/etc/ntp.conf中
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

...

接下来,从配置中删除默认的时间源条目。 您正在寻找所有的模式server 0.centos.pool.ntp.org iburst 如果您使用默认配置,请删除突出显示的行,如以下示例所示:

/etc/ntp.conf中
...
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

使用上一步中选择的手动选择的服务器替换您删除的行。

/etc/ntp.conf中
...
server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst
...

根据NTP Pool的建议,我们为每个服务器使用iburst选项。 这样,如果服务器不可达,则会发送八个数据包的突发而不是通常的一个数据包。 使用NTP池项目中的burst选项被认为是滥用,因为它将每个轮询间隔发送这8个数据包,而iburst仅在第一次发送8个数据包。

接下来,确保默认配置不允许管理查询。 如果不这样做,您的服务器可以用于NTP反射攻击,或者可能会受到试图修改服务器状态的ntpqntpdc查询的攻击。 检查noquery选项是否添加到默认restrict行。 还要确保添加选项kodlimited ,因为它们限制太热衷于要求客户端和强制限制。

/etc/ntp.conf中
...
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery kod limited

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict ::1

您可以在官方文档中找到有关其他选项的更多信息。

您的NTP守护程序配置文件现在应该如下所示,尽管您的文件可能有其他注释,您可以安全地忽略它们:

/etc/ntp.conf中

driftfile /var/lib/ntp/ntp.drift

restrict default nomodify notrap nopeer noquery kod limited

restrict 127.0.0.1
restrict ::1

server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst

保存文件并退出编辑器。

现在重新启动NTP服务,让您的时间服务器将其时钟同步到上游服务器。

sudo systemctl restart ntpd

几分钟后,使用ntpq命令检查您的时间服务器的运行状况:

ntpq -p

输出应该类似于:

Output     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 mizbeaver.udel. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 montpelier.ilan .GPS.            1 u   25   64    7   55.190    2.121 130.492
+nist1-lnk.binar .ACTS.           1 u   28   64    7   52.728   23.860   3.247
*ntp.okstate.edu .GPS.            1 u   31   64    7   19.708   -8.344   6.853
+ntp.colby.edu   .GPS.            1 u   34   64    7   51.518   -5.914   6.669

远程列告诉您NTP守护程序正在使用的服务器的主机名, refid列会告诉您服务器正在使用的源。 因此,对于1层服务器, refid字段应显示GPSPPSACTSPTB ,并且2层以上的服务器将显示上游服务器的IP地址。 st列显示层次, 延迟偏移抖动告诉您时间源的质量。 这三个字段的值越小越好。

您的时间服务器现在可以为公众服务。 您可以通过从另一个主机调用ntpdate来验证这一点:

ntpdate -q your_server_ip

输出应该看起来类似于这个,它告诉你它调整了服务器的时间和偏移量:

Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428
 2 Mar 23:06:44 ntpdate[18427]: adjust time server your_server_ip offset 0.001172 sec

您现在可以使用NTP池项目注册NTP服务器,以便其他人可以使用它。

第4步 - 将服务器添加到NTP池

要添加您的服务器以便其他人可以使用它,请访问manage.ntppool.org并注册一个帐户。 您将收到来自NTP Pool [email protected]电子邮件,要求您验证您的帐户。 按照电子邮件中的说明确认您的帐户,然后登录manage.ntppool.org

登录后,您将看到添加服务器的简单界面:

添加服务器

输入服务器的IP地址,然后单击提交

下一个屏幕会要求您确认它确定了服务器的区域。 如果您的服务器显示在与预期不同的地区,请使用“ 注释 ”框来让他们知道。

验证屏幕

如果你快乐,点击是的确认输入,这是我的服务器,添加它!

您的服务器现在是NTP池项目的一部分。 请访问http://www.pool.ntp.org/scores/ your_server_ip以查看NTP Pool的监控系统收集的有关您的服务器的信息。 它每小时检查您的服务器几次,并显示偏移量数据,与您的系统的分数一致。 只要您的服务器保持良好的时间和可达性,分数将上升至20分。 在池中只使用分数高于10的服务器。

排除连接问题

如果您无法使服务器同步,则可能有一个数据包防火墙丢弃了端口123上的传出数据包。 看看如何使用CentOS 7上的FirewallD设置防火墙 ,了解如何检查防火墙的状态。

如果NTP Pool Project的监控工作站无法连接到您的NTP服务器,并且您的服务器分数正在下降,或者您无法使用服务器同步其他时钟,则可能会有一个数据包防火墙将您的入站流量丢弃在端口123 检查你的防火墙状态。

如果您确定您没有防火墙,或者为传入和传出流量打开了端口123 ,则您的服务器提供商或另一个中转提供商可能会沿途丢弃数据包。 如果您不具备自己解决问题的知识,最好转向社区并寻求帮助。 NTP池项目论坛是开始的好地方。 您还可以加入邮件列表发送emaill到NTP池项目运营商。 请确保您可以在请求帮助之前显示您已经尝试解决问题的所有步骤。

结论

在本教程中,您成功设置了自己的时间服务器,并将其作为NTP池项目的成员,向社区提供服务。 与时间保持社区保持联系。 加入NTP Pool Projects论坛邮件列表 一定要监控您的服务器的分数,并进行必要的调整。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏