25 使用 NTP 同步时间 #
NTP(网络时间协议)机制是用于同步网络上的系统时间的协议。首先,计算机从作为可靠时间源的服务器获得时间。然后将此计算机用作网络中其他计算机的时间源。这样做有双重目的,既可维护绝对时间,又可保持网络中所有计算机系统时间的同步。
维护确切的系统时间在许多情况下都非常重要。内置硬件时钟往往不能满足数据库或群集这样的应用程序的要求。手动更正系统时间可能会导致许多严重问题,例如向后调整时间将使关键应用程序出现故障。在网络中,通常需要同步所有计算机上的系统时间,但是手动调整时间是一种不好的方法。NTP 提供了解决这些问题的机制。NTP 服务通过网络中的可靠时间服务器持续调整系统时间。它还支持对本地参考时钟(如无线电控制的时钟)进行管理。
25.1 使用 YaST 配置 NTP 客户端 #
附于 ntp
包中的 NTP 守护程序 (ntpd
) 预设置为使用本地计算机时钟作为时间参考。但是,请只在没有更精确的时间源的情况下才使用硬件时钟。YaST 简化了 NTP 客户端的配置。
25.1.1 基本配置 #
YaST NTP 客户端配置(ntpd
启动模式和要查询的服务器。
如果您想手动启动
ntpd
守护程序,请选择 。选择
可定期设置系统时间,而不用永久运行ntpd
。您可以设置 。选择
可在引导系统时自动启动ntpd
。建议使用此设置。
25.1.2 更改基本配置 #
供客户端查询的服务器和其他时间资源列在
选项卡的下半部分。使用 、 和 可按需修改此列表。 使您能够查看客户端的日志文件。单击
可添加新的时间信息源。在随后的对话框中,选择要与其进行时间同步的源类型。下列选项可用:- 服务器
在图 25.1 “YaST:NTP 服务器”)中,确定是使用本地网络中的时间服务器( )设置时间同步,还是使用会处理您时区的因特网时间服务器( )设置时间同步。要使用本地时间服务器,请单击 启动 SLP 查询,查找网络中的可用时间服务器。从搜索结果列表中选择最适合的时间服务器,然后单击 退出该对话框。要使用公共时间服务器,请选择您所在的国家或地区(时区),并从 列表中选择适合的服务器,然后单击 退出该对话框。在主对话框中,用 来测试所选服务器是否可用。 使您可以指定
下拉列表(请参见ntpd
的其他选项。使用图 25.2 “高级 NTP 配置:安全设置”)上的 后,才能启用此字段。选项对应于
,您可限制远程计算机通过您的计算机上运行的守护程序所能执行的操作。仅在选中 选项卡(请参见/etc/ntp.conf
中的restrict
子句。例如,nomodify notrap noquery
禁止服务器修改计算机的 NTP 设置并禁止使用 NTP 守护程序的陷阱工具(一种远程事件记录功能)。建议将这些限制用于超出您控制范围的服务器(例如在因特网上)。有关详细信息,请参见
/usr/share/doc/packages/ntp-doc
(ntp-doc
包的一部分)。- 同级
同级是一台要与其建立对称关系的计算机:它将同时用作时间服务器和客户端。要在同一网络中用同级代替某个服务器,请输入系统的地址。该对话框的其他部分与
对话框相同。- 无线电时钟
要在系统中使用无线电时钟来同步时间,请在此对话框中输入时钟类型、单元号码、设备名和其他选项。单击
可对该驱动程序进行微调。有关本地无线电时钟如何操作的详细信息,请参见/usr/share/doc/packages/ntp-doc/refclock.html
。- 传出广播
也可以通过在网络内广播的方式来传送时间信息和查询。在此对话框中,输入应将这类广播信息发送到的地址。除非使用了像无线电控制的时钟这样的可靠时间源,否则不要激活广播。
- 传入广播
如果希望客户端通过广播接收信息,请在此字段中输入应接受来自哪个地址的相应数据包。
在图 25.2 “高级 NTP 配置:安全设置”)中,确定 ntpd
是否应在 chroot jail 中启动。默认不会激活 。当 ntpd
受到攻击时,chroot jail 选项可以提高安全性,因为该选项可以防止攻击者危害整个系统。
通过禁止远程计算机查看和修改您计算机的 NTP 设置以及禁止使用用于远程事件记录的陷阱工具,从而增强了系统的安全性。启用后,这些限制将应用于所有远程计算机,除非覆盖在 选项卡的时间源列表中对个别计算机的访问控制选项。对于所有其他远程计算机,仅允许查询本地时间。
如果 SuSEfirewall2 处于活动状态(默认),请启用
。如果保持端口的关闭状态,则不可能建立与事件服务器的连接。25.2 手动配置网络中的 NTP #
要使用网络中的时间服务器,最简便的方式就是设置服务器参数。例如,如果可以从网络访问名为 ntp.example.com
的时间服务器,请通过添加以下行将其名称添加到文件 /etc/ntp.conf
中:
server ntp.example.com
要添加更多时间服务器,请使用关键字 server
插入更多行。使用命令 systemctl start ntp
初始化 ntpd
后,系统大约会花费一个小时来稳定时间以及创建用于更正本地计算机时钟的偏移文件。利用偏移文件,当计算机启动时,可以计算出硬件时钟的系统误差。可以立即使用更正功能,使系统时间保持较高的稳定性。
有两种方法可将 NTP 机制用作客户端:第一种方法是客户端可以定期从已知服务器查询时间。在存在许多客户端的情况下,这种方法会给服务器带来很高的负荷。第二种方法是客户端可以等待网络中的广播时间服务器发送 NTP 广播。这种方法的缺点在于服务器的可靠性是未知的,而且如果服务器发出错误信息将导致严重问题。
如果通过广播获取时间,则不需要服务器名称。此时只需在配置文件 /etc/ntp.conf
中输入 broadcastclient
一行。要以独占方式使用一个或多个已知时间服务器,请在以 servers
开头的行中输入它们的名称。
25.3 运行时动态时间同步 #
如果在无网络连接的情况下引导系统,则 ntpd
将启动,但是它无法解析在配置文件中设置的时间服务器的 DNS 名称。在加密的 Wi-Fi 中使用 NetworkManager 时,可能会发生这种情况。
如果希望 ntpd
在运行时解析 DNS 名称,则必须设置 dynamic
选项。在引导后建立网络连接时,ntpd
将再次查找名称并可以访问时间服务器以获取时间信息。
手动编辑 /etc/ntp.conf
并将 dynamic
添加到一个或多个 server
项:
server ntp.example.com dynamic
您也可以使用 YaST 并按如下步骤操作:
在 YaST 中单击
› 。选择要配置的服务器。然后单击
。激活
字段并添加dynamic
。如果已输入其他选项,请用空格分隔。单击
关闭编辑对话框。重复之前的步骤以根据需要更改所有服务器。最后单击
保存设置。
25.4 设置本地参考时钟 #
软件包 ntpd
包含用于连接本地参考时钟的驱动程序。ntp-doc
包的文件 /usr/share/doc/packages/ntp-doc/refclock.html
中提供了受支持时钟的列表。每个驱动程序都有一个关联数字。在 NTP 中,实际配置通过伪 IP 地址实现。时钟被输入 /etc/ntp.conf
文件,就像已经在网络中存在一样。为此专门给它们指派了 127.127.T.U
格式的特殊 IP 地址。其中,T 代表时钟的类型并可决定要使用的驱动程序,U 代表单位,可决定要使用的接口。
通常,各个驱动程序都有特殊的参数来描述配置详细信息。文件 /usr/share/doc/packages/ntp-doc/drivers/driverNN.html
(其中 NN 是驱动程序的编号)提供了有关特定类型时钟的信息。例如,“8 型”时钟(通过串行接口的无线电时钟)需要额外的方式更精确地指定时钟。以 Conrad DCF77 接收模块为例,该模块需要使用 mode 5。要使用此时钟作为首选参考,应指定关键字 prefer
。由此构成的 Conrad DCF77 接收模块的完整 server
行如下:
server 127.127.8.0 mode 5 prefer
其他时钟也采用相同的模式。安装 ntp-doc
包之后,可以在目录 /usr/share/doc/packages/ntp-doc
中找到 NTP 的文档。文件 /usr/share/doc/packages/ntp-doc/refclock.html
提供指向描述驱动程序参数的驱动程序页的链接。
25.5 与外部时间参考 (ETR) 的时钟同步 #
支持与外部时间参考 (ETR) 时钟同步。外部时间参照每 2**20(2 的 20 次幂)微秒发出一次振荡器信号和同步信号,以将连接的所有服务器的 TOD 时钟保持同步。
两个 ETR 计算机可以连接到一台计算机。如果时钟偏移超过同步检查容差,所有 CPU 都会获得一次计算机检查,表示该时钟已失步。如果发生这种情况,在该时钟再次同步前,所有与支持 XRC 的设备进行的 DASD I/O 都将停止。
可通过两个 sysfs
属性激活 ETR 支持;请以 root
身份运行以下命令:
echo 1 > /sys/devices/system/etr/etr0/online echo 1 > /sys/devices/system/etr/etr1/online