在所有系统中拥有准确的时间与拥有可靠的网络安全策略(不仅仅是通过简单的防火墙盒子实现)同样重要。它是基于良好实践的系统管理的主要组成部分之一,这有助于组织和安全。特别是在管理分布式应用程序、Web服务,甚至分布式安全监控工具时,准确的时间是必不可少的。
我们这里不讨论协议本身,而是讨论这项伟大的发明如何与互联网的普及性相结合,为我们所用。您可以在 www.ntp.org 找到更多相关信息。
一旦您的系统正确设置,NTP 将管理保持其时间的准确性,进行非常小的调整以不影响正在运行的应用程序。
人们可以使用基于原子电子频率的硬件来获得精确的时间。还有一种基于 GPS(全球定位系统)的方法。前者更准确,但后者也相当不错。原子钟需要非常特殊和昂贵的设备,但它们的维护者(通常是大学和研究实验室)将它们连接到运行 NTP 守护程序的计算机,其中一些计算机连接到互联网,最终让我们免费访问它们。这就是我们将同步系统的方式。
您将需要
直接或间接(通过防火墙)连接到互联网。
选择一些 NTP 服务器。您可以使用公共服务器 pool.ntp.org,或者从 NTP 网站上的 stratum 2 公共时间服务器 中选择一些。如果您没有互联网访问,您的 WAN 管理员(必须是一位聪明的人)可以为您提供一些内部地址。
在您要同步的所有系统中安装 NTP 软件包。您可以在您喜欢的 Linux 发行版 CD 中找到 RPM,或者在 rpmfind.net 上 进行搜索。
这是一个良好架构的示例
如果您有几台机器要同步,不要 让它们都访问您选择的远程 NTP 服务器。只有您的服务器群中的 2 台机器必须访问远程 NTP 服务器,其他机器将与这两台机器同步。我们将它们称为中继服务器。
您的中继服务器可以是您网络中已有的任何机器。NTP 消耗的内存和 CPU 很低。您不需要为此使用专用机器。
![]() | 最好为您的本地中继服务器创建主机名别名,例如 ntp1.my.com 和 ntp2.my.com,并在配置客户端机器时仅使用这些名称。这样,您可以将 NTP 功能移动到新的中继服务器(具有不同的 IP 和主机名),而无需重新配置客户端。请让您的 DNS 管理员创建此类别名。 |
编辑/etc/ntp.conf并添加您选择的远程服务器
示例 5. 中继机器的配置/etc/ntp.conf
. . server otherntp.server.org # A stratum 1 server at server.org server ntp.research.gov # A stratum 2 server at research.gov . . |
同样,您可以使用公共服务器 pool.ntp.org,或者从 NTP 网站获取 公共 stratum 2 时间服务器 的列表。
编辑/etc/ntp.conf并使用标准名称添加您的中继服务器
如果您的机器的 UTC 时间与 NTP 服务器相比有几分钟以上的差异,NTP 将无法工作。因此,您必须进行首次完全同步,我建议您在非生产时间进行。您只需要在进行初始 NTP 设置时执行此操作。以后再也不需要了。
示例 7. 首次同步
最后一步是在每台机器上启动或重启 NTP 守护程序
bash# service ntpd restart |
现在您已经完成所有设置。NTP 将平稳地保持您的机器时间同步。您可以使用 NTP 查询(ntpq 命令)来观察此过程。
示例 8. 时间同步状态
bash# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== -jj.cs.umb.edu gandalf.sigmaso 3 u 95 1024 377 31.681 -18.549 1.572 milo.mcs.anl.go ntp0.mcs.anl.go 2 u 818 1024 125 41.993 -15.264 1.392 -mailer1.psc.edu ntp1.usno.navy. 2 u 972 1024 377 38.206 19.589 28.028 -dr-zaius.cs.wis ben.cs.wisc.edu 2 u 502 1024 357 55.098 3.979 0.333 +taylor.cs.wisc. ben.cs.wisc.edu 2 u 454 1024 347 54.127 3.379 0.047 -ntp0.cis.strath harris.cc.strat 3 u 507 1024 377 115.274 -5.025 1.642 *clock.via.net .GPS. 1 u 426 1024 377 107.424 -3.018 2.534 ntp1.conectiv.c 0.0.0.0 16 u - 1024 0 0.000 0.000 4000.00 +bonehed.lcs.mit .GPS. 1 u 984 1024 377 25.126 0.131 30.939 -world.std.com 204.34.198.40 2 u 119 1024 377 24.229 -6.884 0.421 |
每列的含义
是远程 NTP 服务器的名称。如果您使用-n开关,您将看到这些服务器的 IP 地址而不是它们的主机名。
表示每个服务器当前从哪里获取时间。它可以是服务器主机名,也可以是像 .GPS. 这样的东西,表示全球定位系统源。
Stratum 是一个从 1 到 16 的数字,用于指示远程服务器的精度。1 是最准确的,16 表示“服务器不可达”。您的 Stratum 将等于准确的远程服务器加上 1。永远不要连接到 Stratum 1 服务器,使用 Stratum 2 服务器!Stratum 2 服务器对于我们的目的也很好,并且此策略有助于减少到 Stratum 1 服务器的流量。
时间请求之间的轮询间隔(以秒为单位)。该值将在最小和最大允许轮询值之间变化。最初,该值会较小,以允许快速发生同步。在时钟“同步”后,轮询值将增加,以减少网络流量和热门时间服务器上的负载。
这是 8 位数组的八进制表示,表示本地机器尝试连接服务器的最近 8 次尝试。如果连接到远程服务器,则设置该位。
接收“现在几点”请求的响应所需的时间量(秒)。
最重要的值。本地服务器和远程服务器之间的时间差。在同步过程中,offset 值会降低,表明本地机器时间变得更加准确。
离散度,也称为 Jitter,是多个连续请求/响应对中 offset 的统计方差的度量。较低的离散度值优于较高的离散度值。较低的离散度允许更准确的时间同步。
服务器主机名前的符号的含义
表示本地 NTP 服务不太喜欢此服务器
表示本地 NTP 服务喜欢此服务器
标记一个坏主机
指示当前首选
您可能希望 NTP 始终运行,即使您重新启动机器也是如此。在每台机器上,执行以下操作
bash# chkconfig --level 2345 ntpd on |
这将确保自动启动。
如果您的机器在没有重启的情况下运行了很长时间(几个月、几年),您会发现不准确的硬件时钟和(现在非常准确的)系统时间之间存在很大差异。现代 Linux 发行版在每次系统关闭时都会将操作系统时间复制到 HC,使用类似于 setclock 命令 的机制。这样,在下次操作系统启动时,您将获得几乎与您关闭机器时一样准确的日期和时间。