如何部署 NTP 服务器

NTP 全称为 Network Time Protocol ,中文翻译为网络时间协议,1985年就已经被提出,旨在缩短互联网上所有计算机设备与 UTC 的时间差。通过 Marzullo 算法,他可以选择准确的时间服务器,并且可以适当减轻由于网络延迟所带来的误差。NTP 客户端将定期轮询不同网络上的三个或更多服务器。为同步其时钟,客户端必须计算其时间偏移量和来回通信延迟,随后,从最好的三个剩余中导出估算的时间偏移。然后调整时钟频率以逐渐减小偏移 。

在本教程中,您将在服务器上设置NTP并将其配置为NTP池项目的一部分,以便为NTP池项目的其他用户提供准确的时间。提供备用CPU周期和未使用的带宽也是是向社区提供回馈的绝佳方式。如果您还没有腾讯云的服务器,可以先点击这里进行免费套餐的试用。免费套餐包含企业版和个人版,超过11款热门产品和42款长期免费的云产品可以供您选择。如果您有长期搭建服务器的需求的话,可以点击这里进行服务器的购买,现在的促销力度很大哦。

安装NTP

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

sudo apt-get update

然后安装NTP:

sudo apt-get install ntp

如果已按准备教程配置防火墙,则必须允许123端口上的UDP通信才能与NTP池通信,如果您使用的是腾讯云的CVM服务器,您可以直接在腾讯云控制台中的安全组进行设置。:

sudo ufw allow 123/udp

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

选择一个合适的上游服务器

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

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

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

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

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

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

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

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

确定要使用的服务器后,单击ISO列中每个服务器的链接并复制其主机名或IP地址。您将在第三步中使用这些地址。接下来,按照相同的过程从Stratum2列表中选择三个或四个服务器。

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

配置NTP以加入池

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

sudo nano /etc/ntp.conf

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

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
​
driftfile /var/lib/ntp/ntp.drift
...

接下来,从配置中删除默认时间源条目。你需要寻找所有带有pool [0-3].ubuntu.pool.ntp.org iburstpool ntp.ubuntu.com格式的行。如果您使用的是默认配置,请删除:

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst
​
# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

您可在上一步中选择的服务器删除的行上使用server关键字替换pool关键字。

...
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选项。接下来,确保默认配置不允许管理查询。如果不这样做,你的服务器可以在NTP反射攻击中使用,也可能会受到ntpqntpdc试图修改服务器状态。检查noquery选项是否已添加到默认restrict行:

...
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
​
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

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

driftfile /var/lib/ntp/ntp.drift
​
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
​
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
​
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

保存文件并退出编辑器。现在重新启动NTP服务,让时间服务器将其时钟同步到上游服务器。

sudo systemctl restart ntp.service

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

ntpq -p

输出结果应该类似于:

     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调用来验证这一点:

ntpdate -q your_server_ip

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

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地址,然后单击“ 提交”

下一个屏幕会要求您验证它是否已标识服务器的区域。如果它将您的服务器显示在与您不同的地区,使用“Comment”框可让他们了解情况。

如果您满意,请单击Yes, this is my server, add it!

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

结论

在本教程中,您成功学习了如何设置了自己的时间服务器,并使其成为NTP池项目的成员,为社区服务,现在国内NTP服务器数量还是不够乐观,还是那句话,如果你有位于国内的、长期可以使用的、有固定 IP 的服务器,你可以考虑参与进来这个项目。无论你的带宽多少,只要在服务器池中设置了服务器带宽,DNS 会对服务器的权重进行调整,使之尽可能的不超过你所设定的带宽。因此只要你有闲置的带宽,就可以参与进来,而不用担心影响正常的业务。这里建议您使用腾讯云SSL服务来保护您在服务器上的敏感信息,腾讯云 SSL证书(SSL Certificates)提供了安全套接层(SSL)证书的一站式服务,包括证书申请、管理及部署功能,与顶级的数字证书授权(CA)机构和代理商合作,为您的网站、移动应用提供 HTTPS 解决方案。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏艾斯博客www.vpsss.net

faststone image viewer-替代 acdsee 的看图软件

2693
来自专栏数据科学与人工智能

【Python环境】Python爬虫入门(2):爬虫基础了解

1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓...

2799
来自专栏互联网开发者交流社区

SEO-搜索引擎高级搜索指令

1675
来自专栏葡萄城控件技术团队

优化Webpack构建性能的几点建议

1963
来自专栏美团技术团队

WebView性能、体验分析与优化

在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便...

1K12
来自专栏逸鹏说道

Web前端性能优化教程01:减少Http请求和使用内容分发网络

性能黄金法则 只有10%-20%的最终用户响应时间花在接收请求的HTML文档上,剩下的80%-90%时间花在HTML文档所引用的所有组件(图片,script,c...

4377
来自专栏zhisheng

Python爬虫入门二之爬虫基础了解

1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓...

3466
来自专栏更流畅、简洁的软件开发方式

【自然框架】之通用权限(八):权限到字段(列表、表单、查询)

 通用权限想要写的文章目录:(这是第八章) 1、 简介、数据库的总体结构 2、 介绍人员表组 3、 介绍组织结构表组 4、 介绍角色表组 5、 介绍“项目自我描...

2927
来自专栏葡萄城控件技术团队

渐进式Web应用程序的深入概述

如果您是Web开发人员,您可能已经了解渐进式Web应用程序(PWA)或已经实现了自己的应用程序。 如果您不熟悉,本文将深入概述渐进式Web应用程序的实现原理,以...

802
来自专栏FreeBuf

利用QRLJacking工具获取Whatsapp帐号权限

这篇文章将会教你如何用 QRLJacking 去获取别人 Whatsapp 帐号的权限,这种攻击是交互式,需要受害者去扫描你搭建好的钓鱼网站里面的恶意二维码,或...

2042

扫码关注云+社区

领取腾讯云代金券