网络时间协议配置指南
计算机和软件通常无法容忍时间差异。像Kerberos认证这样的服务依赖于时间戳,如果两个系统对当前时间存在分歧,用户可能会被拒绝访问关键资源。
网络时间协议是TCP/IP套件中的应用层协议,其职责是在NTP客户端和指定时间服务器之间同步时间。NTP支持分层结构,每一层称为一个stratum(层级)。较小环境通常只有一个层级,而更复杂的网络可能支持多个层级。例如,企业工作站通常与内部时间服务器同步时间,而家用计算机通常与互联网时间服务器同步时间。
NTP架构
NTP使用UDP无连接通信进行低延迟数据交换,有助于防止客户端和时间服务器设备之间的时间漂移。它使用端口123/udp,因此在管理防火墙配置时需要相应规划。
层级结构包括:
- Stratum 0:该层中的参考时钟从专用发射器或卫星导航系统接收真实时间
- Stratum 1:该层中的设备直接连接到参考时钟
- Stratum 2:该层中的设备从stratum 1计算机接收时间
- Stratum 3:该层中的设备从stratum 2计算机接收时间
一个层级可以包含额外的层,这创建了一个具有分离度和每新增一层精度降低的层次结构。NTP仍然是现代网络中的关键协议,特别是在服务器和客户端分布在多个区域的情况下。它在本地环境和云环境中也至关重要。
NTP实现
NTP是Linux、macOS和Windows配置的标准,使其成为包含多种系统的网络环境的理想选择。许多网络设备也识别NTP。
Linux系统
在Linux系统上配置NTP涉及使用文本编辑器(如Vim或Nano)编辑/etc/ntp.conf
配置文件。使用配置文件条目将服务指向必要的时间服务器,如下所示:
|
|
与其他Linux配置文件一样,如果编辑/etc/ntp.conf
文件,需要使用以下命令重新启动服务:
|
|
使用此命令确认ntpd守护进程的状态:
|
|
Linux服务器很少包含GUI,但工作站可能有。通过GUI配置时间服务的步骤因所选桌面环境而异。
macOS系统
通过浏览"系统设置" > “通用” > “日期与时间"来配置macOS的时间服务。启用"自动设置日期和时间"设置并指定目标NTP服务器。默认服务器是time.apple.com,但可以根据需要添加其他时间服务器。
从Mac的终端手动查询时间服务器,输入此命令:
|
|
Windows独立系统
与macOS类似,Windows时间服务可以通过GUI轻松配置。浏览到"控制面板” > “时钟和区域” > “日期和时间” > “Internet时间”,选择"与Internet时间服务器同步"。输入服务器地址以完成设置。
您可能更喜欢使用Windows命令行或想要编写NTP配置脚本。首先打开终端并显示当前配置:
|
|
使用此命令设置首选NTP服务器:
|
|
不要忘记重新启动服务:
|
|
输入以下命令检查服务状态:
|
|
您可以使用以下命令强制立即进行时间同步:
|
|
Windows域成员
在AD环境中通常不需要配置NTP。域成员自动与其认证的域控制器同步时间。所有DC与主域控制器仿真器(Windows Server AD中的关键灵活单主机操作角色)同步时间。域管理员配置PDC与外部时间源同步。
这种层次结构确保在整个域中实现简单、可靠和同步的配置,这对于依赖时间戳的认证服务(如Kerberos)至关重要。
高级NTP配置
NTP有两个需要进一步研究的高级设置:轮询时间和iburst参数。
轮询时间定义NTP客户端轮询其指定NTP服务器的间隔。minpoll选项设置最短时间,maxpoll指定最长时间。
- minpoll:轮询之间的最短间隔
- maxpoll:轮询之间的最长间隔
时间增量是2的指数。默认minpoll值为6(64秒),通常的maxpoll设置为10(1024秒,约17分钟)。
将这些值添加到/etc/ntp.conf
中的服务器条目:
|
|
很少需要修改默认值,但某些时间敏感应用程序可能需要这些设置。
iburst设置在ntpd首次启动时加速初始时间同步。没有设置iburst参数的标准设置会导致NTP客户端发送一个时间同步查询。但是,如果指定的NTP服务器没有响应,NTP客户端会延迟时间同步。iburst参数导致客户端发送大约相隔两秒的八个数据包突发,这增加了接收响应的机会。
通过添加iburst设置修改/etc/ntp.conf
中的时间服务器条目:
|
|
这种配置通常在系统启动时很重要。不要将此设置与burst混淆,后者在每个轮询间隔发送多个查询。iburst选项仅在初始同步任务期间发送多个查询,这样效率更高。
故障排除常见NTP问题
一个配置和故障排除问题涉及仅定义两个时间服务器的环境。当客户端设备由于两个目标时间服务器之间的时间分歧而无法确定正确时间时,会出现问题。第三个或第四个NTP服务器充当决胜局。这个问题有时被称为NTP双服务器问题。
避免AD域成员(如Windows服务器和工作站)与非域成员(如Linux、macOS和网络设备)识别不同时间的配置。如果这些设备需要共享资源但对当前时间存在分歧,可能会发生认证和访问问题。
在Linux和类似系统上使用以下NTP命令来排除NTP问题:
ntpd -d
:在调试模式下运行ntpd,提供有用的跟踪信息ntpq
:查询ntpd以获取统计和状态数据ntpstat
:显示客户端的当前同步状态
在大多数Linux发行版上,ntpd默认记录到/etc/messages
。但是,编辑/etc/ntp.conf
文件以定义专用日志文件位置,如/var/log/ntp.log
。
Windows系统在事件查看器中记录NTP条目。浏览应用程序事件日志条目以获取NTP详细信息。
NTP配置最佳实践
NTP是TCP/IP套件中成熟可靠的部分,因此有大量关于如何管理它的文档。依靠以下最佳实践从NTP设置中获得最大收益:
- 使用iburst选项在启动或重新启动服务后加速初始时间同步
- 为具有时间敏感应用程序的系统配置轮询间隔
- 配置多个NTP服务器,首选四个
- 在AD部署中依靠AD进行时间管理
- 配置高可用、专用的NTP源,特别是用于支持客户端设备的内部网络时间服务器
- 在整个内部网络中设计一致的NTP基础设施。较大环境应模仿标准的分层设计
配置高效可靠的NTP环境,确保跨Linux、macOS和Windows设备的强大时间同步。考虑将路由器和交换机等网络设备也集成到设计中。虽然时间管理在大多数网络中都很简单,但它也很关键。