精确的系统时间对日志记录、加密协议、文件时间戳以及分布式系统的一致运行至关重要。OpenBSD 基本系统内置了安全、精简的 NTP 守护进程 ntpd(8)。该服务可将系统时钟与远程时间服务器同步,并可选地向其他系统提供时间同步。
ntpd(8)
本章介绍如何为 ntpd(8) 配置典型的客户端用法以及向本地网络提供时间服务。
OpenBSD 默认启用 NTP 守护进程。系统启动时,若时钟偏差较大,会通过 ntpd -s 执行一次性的时间步进,随后继续在后台逐步调整。
ntpd -s
默认配置使用公共 NTP 池:
servers pool.ntp.org
此默认设置对多数系统已足够,除非有特定服务器偏好,否则无需修改。
ntpd 的配置文件位于 /etc/ntpd.conf,由纯文本指令组成。常用指令如下:
ntpd
servers <address>——使用一组时间服务器池。
servers <address>
server <address>——使用单个指定的时间服务器。
server <address>
listen on <interface>——在指定接口或地址上监听,启用 NTP 服务器功能。
listen on <interface>
此配置使用从 NTP 池中选取的多个地理分布服务器。
此示例从外部服务器同步时间,并通过系统的 egress 接口向本地客户端提供 NTP 服务。
egress
验证 NTP 服务是否已启用并运行:
手动启用并启动服务:
使用 ntpctl(8) 查询守护进程及其对等端的状态:
ntpctl(8)
这些命令报告同步状态、层级(stratum)、偏移量与网络延迟等信息。
系统时钟偏差较大时(例如断电后,或无实时时钟的系统上),ntpd 可在一次性初始化模式下运行:
此命令立即步进时钟。默认情况下在启动时自动执行。
前台运行以便调试:
ntpd 将活动记录到 /var/log/messages。实时跟踪输出:
确保包过滤规则允许出站 UDP 端口 123。若时间同步失败:
检查 DNS 解析是否正常。
使用 ntpctl -s peers 检查对等端的可达性与响应。
ntpctl -s peers
确认没有其他时间服务(如 rdate)同时运行。
rdate
要让本地网络中的其他系统以该 OpenBSD 主机为时间源进行同步,配置 ntpd 使用 listen on 指令:
listen on
此配置查询外部 NTP 服务器,同时在 em0 接口上监听请求。
em0
此方式适用于多台系统须与同一内部时间源同步,或外部网络访问受限的环境。
OpenBSD 的 ntpd 注重简洁与安全,有意省略了某些其他 NTP 实现中的加密认证功能。闰秒支持为自动处理,无需额外配置。
ntpd 适用于多数客户端与内部服务器场景,但不适合高度专业化或需要认证的 NTP 部署。
最后更新于 18天前
servers pool.ntp.org listen on egress
# rcctl check ntpd
# rcctl enable ntpd # rcctl start ntpd
$ ntpctl -s status $ ntpctl -s peers
# ntpd -s
# ntpd -s -d
# tail -f /var/log/messages
servers pool.ntp.org listen on em0