如何在 Ubuntu 16.04 上配置 NTP 以在 NTP Pool 项目中使用

介绍

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

这就是 NTP Pool 项目的作用所在。它是一个庞大的全球时间服务器集群,为全球数千万客户端提供方便访问已知的“良好时间”。它是 Ubuntu 和大多数其他主要 Linux 发行版的默认时间服务器,以及许多网络设备和软件应用程序的默认时间服务器。

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

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

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

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

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

先决条件

要完成本教程,您需要:

  • 一个已配置 IPv6 网络的 Ubuntu 16.04 服务器。如果您需要在现有的 Droplet 上配置 IPv6 网络,可以按照本教程进行操作。
  • 一个具有 sudo 权限的非 root 用户和一个防火墙,您可以按照《使用 Ubuntu 16.04 初始服务器设置》教程进行设置。

步骤 1 — 安装 NTP

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

sudo apt-get update

然后安装 NTP:

sudo apt-get install ntp

如果您按照先决条件中指定的方式配置了防火墙,则必须允许端口 123 上的 UDP 流量,以便与 NTP 池进行通信:

sudo ufw allow 123/udp

有关 UFW 的更多信息,请参阅《如何在 Ubuntu 上使用 UFW 设置防火墙》。

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

步骤 2 — 选择合适的上游服务器

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

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

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

NTP Pool 项目提供了公共 Stratum 1 和 Stratum 2 时间服务器的列表。这些列表指定了可供公共访问的 NTP 时间服务器,并附有规定的访问限制。您将找到三种类型:

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

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

!Stratum 1 服务器

ISO code 列对列表进行排序,并找到几个地理位置接近您服务器数据中心的服务器。当服务器的 Access Policy 列状态为 OpenAccess 时,您可以无问题使用它。如果它说“RestrictedAccess”,请单击打开条目,并阅读 AccessDetails 字段中的说明。通常,您会发现 NotificationMessage 设置为 Yes,这意味着您必须撰写一封非正式的电子邮件,发送到 ServerContact 中提供的地址,告知服务器运营商您希望将此时间服务器用作 NTP Pool 项目成员的时间来源。

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

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

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

步骤 3 — 配置 NTP 加入时间池

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

sudo nano /etc/ntp.conf

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

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for helpdriftfile /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
...

我们为每个服务器使用 iburst 选项,符合 NTP 时间池的建议。这样,如果服务器无法访问,它将发送八个数据包而不是通常的一个数据包。在 NTP 时间池项目中使用 burst 选项被认为是滥用,因为它会在每个轮询间隔发送这八个数据包,而 iburst 只在第一次发送这八个数据包。

接下来,确保默认配置不允许管理查询。如果不这样做,您的服务器可能会被用于 NTP 反射攻击,或者可能会容易受到试图修改服务器状态的 ntpqntpdc 查询的影响。检查默认的 restrict 行是否添加了 noquery 选项:

...
# 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.driftserver 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.000montpelier.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 列显示层级,delayoffsetjitter 告诉您有关时间源质量的信息。这三个字段的较低值对于质量更好。

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

[environment second]
ntpdate -q your_server_ip

输出应该类似于以下内容,并告诉您它调整了时间服务器和偏移量:

[environment second]
server your_server_ip, stratum 2, offset 0.001172, delay 0.164282 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 help@ntppool.org 的电子邮件,要求您验证您的帐户。按照电子邮件中的说明确认您的帐户,然后登录 manage.ntppool.org。

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

!添加服务器

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

下一个屏幕会要求您验证它是否识别了您的服务器所在的区域。如果它显示您的服务器所在的区域与您预期的不同,请使用 评论 框让他们知道。

!验证屏幕

如果您满意,请通过单击 是的,这是我的服务器,添加它! 来确认条目。

您的服务器现在是 NTP 池项目的一部分。访问 http://www.pool.ntp.org/scores/your_server_ip 来查看 NTP 池的监控系统收集的有关您的服务器的信息。它每小时检查您的服务器几次,并显示偏移数据以及您系统的 分数。只要您的服务器时间准确并且可访问,分数就会上升,直到达到 20 分。只有分数高于 10 的服务器才会被用于池中。

故障排除连接问题

如果您在同步服务器时遇到问题,可能是因为您的 出站 数据包在端口 123 上被防火墙阻止。查看《如何在 Ubuntu 上使用 UFW 设置防火墙》以了解如何检查防火墙的状态。

如果 NTP 池项目的监控站无法访问您的 NTP 服务器,您的服务器分数正在下降,或者您无法使用您的服务器来同步其他时钟,可能是因为您的 入站 流量在端口 123 上被防火墙阻止。检查您的防火墙状态。

如果您确定自己没有设置防火墙,或者已经为入站和出站流量打开了端口 123,那么您的服务器提供商或其他传输提供商可能会在传输过程中丢弃您的数据包。如果您没有能力自行解决这些问题,最好求助于社区。NTP 池项目的论坛是一个很好的起点。您还可以加入邮件列表或发送电子邮件给 NTP 池项目的运营商。在寻求帮助之前,请确保您可以展示您已经尝试解决问题的所有步骤。

结论

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

verilog 语法及特点

主线上的硬件描述语言有verilog 和 VHDL 两门, 由于 verilog 语法上比VHDL 语言灵活, 所以现在社区以 verilog 语言开发的项目占比更大。 但是相较于 现在流行的 java/python 计算机语言比起来, 其模块化管理要差很多, 所以现在社…

Hadoop1X,Hadoop2X和hadoop3X有很大的区别么?

Hadoop的演进从Hadoop 1到Hadoop 3主要是为了提供更高的效率、更好的资源管理、更高的可靠性以及对更多数据处理方式的支持。下面是Hadoop 1, Hadoop 2, 和 Hadoop 3之间的主要区别和演进的原因: Hadoop 1 特点: 主要包括两大核心组件:HDFS&a…

跨平台SIP 客户端-linphone下载、使用、开启视频H264

linphone 介绍 Linphone 是一种开源的语音和视频通信应用程序,它提供了基于互联网协议(IP)的实时通信功能。用于语音/视频通话、即时消息和电话会议的开源 SIP 电话。它适用于移动和桌面环境(iOS、Android、GNU/Linux、macOS、Win…

【Linux】在centos快速搭建K8S1.18集群

使用 kubeadm 创建集群帮助文档 如果您需要以下几点,该工具是很好的选择:kubeadm 一种简单的方法,让你尝试 Kubernetes,可能是第一次。现有用户自动设置群集并测试其应用程序的一种方式。其他生态系统和/或安装程序工具中的构建…

SpringBoot集成Sleuth

引入Maven依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency> 配置yml文件 bootstrap.yml文件增加如下配置 注&#xff1a;这个配置不是必须要&#…

经典机器学习算法——决策树

优质博文&#xff1a;IT-BLOG-CN 树模型是机器学习中最常用的一类模型&#xff0c;包括随机森林、AdaBoost、GBDT&#xff08;XGBoost和Lightgbm&#xff09;等&#xff0c;基本原理都是通过集成弱学习器的即式来进一步提升准确度。这里的弱学习器包括线性模型和决策树模型&…

大sql mysql执行

先把sql 拆分 太大的执行失败 使用 SQLDumpSplitter3 拆分sql 执行拆分的sql 拆分的sql 打开发现很多 ; 开头的空行 替换掉 正则 ^; 修改数据库 my.cnf my,ini 执行可能会提示 [ERR] 2006 - Server has gone away 错误 在 [mysqld] 添加以下几行 wait_timeout2880000 inter…

给sample_gpt 增加 lisa 微调

论文 地址 概述 该论文提出了一种名为LISA的层重要性采样优化算法&#xff0c;旨在解决大规模语言模型训练中的内存瓶颈问题。其主要内容和贡献包括&#xff1a; 通过分析LoRA训练中各层权重范数的分布&#xff0c;发现了权重更新在底层和顶层更为集中的现象&#xff0c;揭…

深入理解计算机网络:从基本原理到实践应用

前言&#xff1a; 计算机网络是现代信息技术的基石&#xff0c;它连接了全球数以亿计的设备&#xff0c;使得信息传输和资源共享成为可能。本文将从计算机网络的基本原理出发&#xff0c;深入探讨其关键技术&#xff0c;并分享一些实践应用的经验。 一、计算机网络的基本原理 1…

上位机工作感想-从C#到Qt的转变-1

0.前言 接触Qt开发也有一年多的时间了&#xff0c;还记得去年初从杭州回合肥时&#xff0c;刚来公司面临的几个问题&#xff1a; 1.C#转上位机的迷茫2.新公司管理模式的差异3.试用期的各种紧急任务。 当时也是加班加点学习C和Qt的基础知识&#xff0c;做了两个考核项目后&am…

Centos 7部署sysbench测试Opengauss/MogDB性能

适配环境 操作系统版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;MogDB 5.0.3 mogdb快速安装 1、获取PTK $ curl --proto https --tlsv1.2 -sSf https://cdn-mogdb.enmotech.com/ptk/install.sh | sh 2、生成config.yaml $ ptk …

解决Mac使用Vscode无法调用外部终端

前言 今天遇到一个很奇怪的问题&#xff0c;之前好好的用Vscode还能调用外部终端&#xff0c;怎么今天不行了&#xff1f;问题出在哪里呢&#xff1f;请听我娓娓道来。 检查配置文件 我查看了一下配置文件&#xff0c;发现配置文件都是调用外部控制台&#xff0c;没毛病啊。 …

【MySQL】脏读,幻读,不可重复读

脏读、幻读、不可重复读 一、脏读 二、幻读 三、不可重复读 四、脏读、幻读、不可重复读的区别 一、脏读 脏读主要发生在隔离级别很低的事务之间&#xff0c;就比如隔离级别设为Read Uncommitted,也就是读为提交。当我们有多个数据库并发的访问一张表的时候&#xff0c;就…

在 Apache Sedona 中处理空间栅格数据

栅格数据是一种从远处表示地球表面和大气的地理空间数据,通常使用卫星或航空传感器。它是一种基于网格的数据结构,其中网格中的每个单元或像素代表地球表面的特定位置。这些像素可以存储各种类型的信息,例如海拔、温度、土地覆盖、降水量或与该位置相关的任何其他连续或分类…

【AI开发:音频】二、GPT-SoVITS使用方法和过程中出现的问题(GPU版)

1.FileNotFoundError: [Errno 2] No such file or directory: logs/guanshenxxx/2-name2text-0.txt 这个问题中包含了两个&#xff1a; 第一个&#xff1a;No module named pyopenjtalk 我的电脑出现的就是这个 解决&#xff1a;pip install pyopenjtalk 第二个&#xff1a…

快速排序题目SelectK问题(力扣75.颜色分类、力扣215.数组中的第K个最大元素、面试题17.14最小K个数)

力扣75.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sor…

安卓手机APP开发__媒体开发部分__网络栈

安卓手机APP开发__媒体开发部分__网络栈 目录 概述 配置ExoPlayer来使用一个特定的网络栈 支持的网络栈 Cronet OkHttp 安卓内嵌的网络栈 其它的网络栈

常用渗透测试checklist

该渗透测试checklist包含以下几个模块&#xff1a; 测试大类、测试项、威胁等级、漏洞描述、修复方案 一、认证与授权类 1.密码明文传输 威胁等级&#xff1a;低危 漏洞描述&#xff1a;密码明文传输一般存在于web网站登录页面&#xff0c;用户名或者密码采用了明文传输&am…

从零开始的vscode配置及安装rust教程

配置vscode的rust环境 下载安装vscodemac 环境1. 下载安装rust2. 配置 mac vscode环境3. 创建一个测试项目 windows 环境1. 安装c运行环境2. 安装配置rustup3. 配置windows vscode环境4. 创建一个测试项目 下载安装vscode 1.官网应用程序下载 vscode&#xff1a;https://code.v…

注意力机制中多层的作用

1.多层的作用 在注意力机制中&#xff0c;多层的作用通常指的是将注意力机制堆叠在多个层上&#xff0c;这在深度学习模型中被称为“深度”或“多层”注意力网络。这种多层结构的作用和实现过程如下&#xff1a; 1. **逐层抽象**&#xff1a;每一层都可以捕捉到输入数据的不同…