CentOS 如何配置NTP加入NTP池项目

2018-08-08 11:58:28 浏览数 (1)

介绍

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

这是NTP Pool Project项目发挥作用的地方。它是一个庞大的全球时间服务器集群,为全球数以千万计的客户提供方便的“好时光”。它是Ubuntu和大多数其他主要Linux发行版的默认时间服务器,以及许多联网设备和软件应用程序。

在本教程中,您将在服务器上设置NTP并将其配置为NTP池项目的一部分,以便为NTP池项目的其他用户提供准确的时间。提供备用CPU周期和未使用的带宽是向社区提供回馈的完美方式。

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

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

  1. 您的服务器必须具有静态IP地址。
  2. 您的服务器必须具有永久稳定的Internet连接。
  3. 您的IP地址最多不会更改,或者只是不经常更改(每年一次或更少)。

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

准备

要完成本教程,您需要:

  • 配置了IPv6网络的One Centos 7服务器。
  • 具有sudo权限的非root用户和防火墙。

如果您使用Ubuntu服务器可以参考腾讯云 社区的为公益伸出援手,自建NTP 服务器池的配置教程。

第一 步 - 安装NTP

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

代码语言:txt复制
$ sudo yum update

然后安装NTP:

代码语言:txt复制
$ sudo yum install ntp

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

代码语言:txt复制
$ sudo systemctl start ntpd
$ sudo systemctl enable ntpd

如果已按准备中的指定配置防火墙,则必须允许NTP服务的UDP通信才能与NTP池通信:

代码语言:txt复制
$ sudo firewall-cmd --permanent --add-service=ntp
$ sudo firewall-cmd --reload

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

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

NTP池项目要求希望加入池的运营商选择良好的网络本地时间服务器,而不是使用默认pool.ntp.org服务器。这可确保NTP池项目保持可靠,快速和健康。在选择时间源时,您需要稳定的网络连接,不会丢失数据包,并且服务器之间的跳数尽可能少。

多层和分层NTP协议将所涉及的各方分为主服务器,辅助服务器和客户端。主服务器称为Stratum1,直接连接到时间源,称为Stratum 0。该源可以是原子钟,GPS接收器或无线电导航系统。链中的辅助服务器称为Stratum2Stratum 3等。

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

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

  • OpenAccess:此时间服务器对符合NTP池的任何客户端开放。
  • RestrictedAccess:此时间服务器除了NTP池使用外还有一些访问限制。
  • ClosedAccess:此时间服务器已关闭或关机。

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

访问Stratum 1 Time Servers列表。您将看到如下列表:

列表列表

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

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

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

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

第三步 - 配置NTP加入池

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

代码语言:txt复制
$ sudo vi /etc/ntp.conf

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

/etc/ntp.conf

代码语言:txt复制
# 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

代码语言:txt复制
...
# 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

代码语言:txt复制
...
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池建议对每个服务器使用iburst选项。这样,如果服务器无法访问,这将发送8个数据包而不是通常的一个数据包。使用NTP池项目中的burst选项会被视为滥用,因为它将在每个轮询间隔发送这8个数据包,而iburst仅在第一次发送8个数据包。

接下来,确保默认配置不允许管理查询。如果不这样做,你的服务器可以在NTP反射攻击,或者可能ntpq和ntpdc查询试图修改服务器状态。检查该noquery选项是否已添加到默认restrict行。还要确保添加选项kodlimited因为它们过于急切地要求客户端并强制执行速率限制。

/etc/ntp.conf

代码语言:txt复制
...
# 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

代码语言:txt复制
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服务,让时间服务器将其时钟同步到上游服务器。

代码语言:txt复制
$ sudo systemctl restart ntpd

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

代码语言:txt复制

输出应该类似于:

代码语言:txt复制
     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

remote列告诉您NTP守护进程正在使用的服务器的主机名,refid列告诉您的服务器使用的源代码。因此,对于Stratum 1服务器,refid字段应显示GPSPPSACTSPTB,而Stratum 2和更其他辅助服务器将显示上游服务器的IP地址。在ST列显示层级,和delay,offsetjitter告诉你时间源的质量。这三个字段的值越低越好。

您的时间服务器现在可以为公共服务。您可以通过从其他主机输入ntpdate调用来验证这一点:

代码语言:txt复制
$ ntpdate -q your_server_ip

输出应该与此类似,它告诉您它调整了时间服务器和偏移量:

代码语言:txt复制
server 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服务器,以便其他人可以使用它。

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

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

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

添加服务器的界面添加服务器的界面

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

下一个屏幕会要求您验证它是否已标识服务器的区域。如果它将您的服务器显示在与您预期不同的区域中,请使用“注释”框让他们知道。

确认界面确认界面

如果您满意,请单击Yes, this is my server, add it! 。您的服务器现在是NTP池项目的一部分。访问http://www.pool.ntp.org/scores/your_server_ip以查看NTP Pool的监控系统收集的有关您的服务器的信息。它每小时检查您的服务器几次,并显示偏移数据,与系统的分数对应。只要您的服务器保持良好的时间并且可以访问,分数就会上升,直到达到20分。池中仅使用分数高于10的服务器。

连接问题疑难解答

如果您在使服务器同步时遇到问题,可能会有一个数据包防火墙,可以将您的传出数据包丢弃到端口123上。

如果NTP池项目的监控站无法访问您的NTP服务器且您的服务器分数下降,或者您无法使用服务器同步其他时钟,则可能会有一个数据包防火墙,可以将您的传入流量丢弃到端口上123。检查防火墙状态。

如果您确定没有防火墙,或者您已打开传入和传出流量的端口123,则您的服务器提供商或其他传输提供商可能会在此过程中丢弃您的数据包。

结论

在本教程中,您成功设置了自己的时间服务器,并使其成为NTP池项目的成员。


参考文献:《How to Configure NTP for Use in the NTP Pool Project on CentOS 7》

0 人点赞